/**
* Դ�������ƣ�RevisionHistoryListViewerBlock.java
* �������Ȩ���������ӹɷ�����˾ ��Ȩ����
* ϵͳ���ƣ�JRES Studio
* ģ�����ƣ�com.hundsun.ares.studio.jres.metadata.ui
* ����˵����$desc
* ����ĵ���
* ���ߣ�
*/
package com.hundsun.ares.studio.ui.editor.blocks;
import org.apache.commons.lang.StringUtils;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.swt.SWT;
import org.eclipse.ui.IWorkbenchPartSite;
import org.eclipse.ui.forms.editor.FormPage;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.core.model.CorePackage;
import com.hundsun.ares.studio.ui.editor.actions.AddRevisionHistoryAction;
import com.hundsun.ares.studio.ui.editor.actions.AddRevisionHistoryRecordAction;
import com.hundsun.ares.studio.ui.editor.actions.ColumnViewerCopyAction;
import com.hundsun.ares.studio.ui.editor.actions.ColumnViewerDeleteAction;
import com.hundsun.ares.studio.ui.editor.actions.ColumnViewerMoveDownAction;
import com.hundsun.ares.studio.ui.editor.actions.ColumnViewerMoveUpAction;
import com.hundsun.ares.studio.ui.editor.actions.ColumnViewerPasteAction;
import com.hundsun.ares.studio.ui.editor.actions.CopyCellAction;
import com.hundsun.ares.studio.ui.editor.actions.CopyColumnAction;
import com.hundsun.ares.studio.ui.editor.actions.IActionIDConstant;
import com.hundsun.ares.studio.ui.editor.actions.IncreaseVersionAction;
import com.hundsun.ares.studio.ui.editor.editable.ActionEditableUnit;
import com.hundsun.ares.studio.ui.editor.editable.IEditableUnit;
import com.hundsun.ares.studio.ui.editor.editingsupport.LongTextEditingSupport;
import com.hundsun.ares.studio.ui.editor.editingsupport.TextEditingSupport;
import com.hundsun.ares.studio.ui.editor.extend.ExtensibleModelColumnViewerProblemView;
import com.hundsun.ares.studio.ui.editor.extend.ExtensibleModelUtils;
import com.hundsun.ares.studio.ui.editor.viewers.EObjectColumnLabelProvider;
import com.hundsun.ares.studio.ui.editor.viewers.EObjectColumnViewerProblemView;
import com.hundsun.ares.studio.ui.editor.viewers.ReferenceTreeContentProvider;
import com.hundsun.ares.studio.ui.validate.IProblemPool;
/**
* @author yanwj06282
*
*/
public class RevisionHistoryListViewerBlock extends TableViewerBlock {
private IWorkbenchPartSite site;
private FormPage page;
protected ColumnViewerPasteAction pasteAction;
protected ColumnViewerMoveUpAction actionMoveUp;
protected ColumnViewerMoveDownAction actionMoveDown;
protected AddRevisionHistoryAction increaseVersionAction;
protected AddRevisionHistoryAction addRevisionHistoryAction;
public RevisionHistoryListViewerBlock(FormPage page,EditingDomain editingDomain,IWorkbenchPartSite site,
IARESResource resource, IProblemPool problemPool) {
this.page = page;
this.site = site;
this.editingDomain = editingDomain;
this.resource = resource;
this.problemPool = problemPool;
}
/**
* @return the site
*/
public IWorkbenchPartSite getSite() {
return site;
}
public FormPage getFormPage (){
return page;
}
@Override
protected void createColumns(TableViewer _viewer) {
final TableViewer viewer = _viewer;
EObjectColumnViewerProblemView problemView = new EObjectColumnViewerProblemView(viewer);
// ������չ��
EObjectColumnViewerProblemView exProblemView = new ExtensibleModelColumnViewerProblemView(viewer);
//TODO#������#��Ԫ#��ͨ#����#�ѱ���#2011-07-25 #36 #25 #��һ�����ؼ����ڲ�������ʷ��ע�����ϵͳ�ֶ���չ֧��
//����У���ʱ�䡢���汾�������š������ˡ������ˡ���ԭ��������
/**��ʱ��*/
{
TableViewerColumn comlumn = new TableViewerColumn(viewer, SWT.LEFT);
comlumn.getColumn().setText("��ʱ��");
comlumn.getColumn().setWidth(130);
EObjectColumnLabelProvider provider = new EObjectColumnLabelProvider(CorePackage.Literals.REVISION_HISTORY__MODIFIED_DATE);
provider.setDiagnosticProvider(problemView);
comlumn.setLabelProvider(provider);
comlumn.setEditingSupport(new TextEditingSupport(viewer, CorePackage.Literals.REVISION_HISTORY__MODIFIED_DATE));
}
/**���汾*/
{
TableViewerColumn comlumn = new TableViewerColumn(viewer, SWT.LEFT);
comlumn.getColumn().setText("���汾");
comlumn.getColumn().setWidth(160);
EObjectColumnLabelProvider provider = new EObjectColumnLabelProvider(CorePackage.Literals.REVISION_HISTORY__VERSION);
provider.setDiagnosticProvider(problemView);
comlumn.setLabelProvider(provider);
comlumn.setEditingSupport(new TextEditingSupport(viewer, CorePackage.Literals.REVISION_HISTORY__VERSION));
comlumn.getColumn().setMoveable(true);
}
/**������*/
{
TableViewerColumn comlumn = new TableViewerColumn(viewer, SWT.LEFT);
comlumn.getColumn().setText("������");
comlumn.getColumn().setWidth(160);
EObjectColumnLabelProvider provider = new EObjectColumnLabelProvider(CorePackage.Literals.REVISION_HISTORY__ORDER_NUMBER);
provider.setDiagnosticProvider(problemView);
comlumn.setLabelProvider(provider);
comlumn.setEditingSupport(new TextEditingSupport(viewer, CorePackage.Literals.REVISION_HISTORY__ORDER_NUMBER));
comlumn.getColumn().setMoveable(true);
}
// ��չ��Ϣ
ExtensibleModelUtils.createExtensibleModelTableViewerColumns(
viewer, getARESResource(), CorePackage.Literals.REVISION_HISTORY, exProblemView);
/**������*/
{
TableViewerColumn comlumn = new TableViewerColumn(viewer, SWT.LEFT);
comlumn.getColumn().setText("������");
comlumn.getColumn().setWidth(100);
EObjectColumnLabelProvider provider = new EObjectColumnLabelProvider(CorePackage.Literals.REVISION_HISTORY__MODIFIED_BY);
provider.setDiagnosticProvider(problemView);
comlumn.setLabelProvider(provider);
comlumn.setEditingSupport(new TextEditingSupport(viewer, CorePackage.Literals.REVISION_HISTORY__MODIFIED_BY));
comlumn.getColumn().setMoveable(true);
}
/**������ */
{
TableViewerColumn comlumn = new TableViewerColumn(viewer, SWT.LEFT);
comlumn.getColumn().setText("������");
comlumn.getColumn().setWidth(100);
comlumn.setLabelProvider(new EObjectColumnLabelProvider(CorePackage.Literals.REVISION_HISTORY__CHARGER));
comlumn.setEditingSupport(new TextEditingSupport(viewer, CorePackage.Literals.REVISION_HISTORY__CHARGER));
comlumn.getColumn().setMoveable(true);
}
/**������*/
{
TableViewerColumn comlumn = new TableViewerColumn(viewer, SWT.LEFT);
comlumn.getColumn().setText("������");
comlumn.getColumn().setWidth(200);
comlumn.setLabelProvider(new EObjectColumnLabelProvider(CorePackage.Literals.REVISION_HISTORY__MODIFIED));
comlumn.setEditingSupport(new LongTextEditingSupport(viewer, CorePackage.Literals.REVISION_HISTORY__MODIFIED));
comlumn.getColumn().setMoveable(true);
}
/**��ԭ��*/
{
TableViewerColumn comlumn = new TableViewerColumn(viewer, SWT.LEFT);
comlumn.getColumn().setText("��ԭ��");
comlumn.getColumn().setWidth(200);
comlumn.setLabelProvider(new EObjectColumnLabelProvider(CorePackage.Literals.REVISION_HISTORY__MODIFIED_REASON));
comlumn.setEditingSupport(new LongTextEditingSupport(viewer, CorePackage.Literals.REVISION_HISTORY__MODIFIED_REASON));
comlumn.getColumn().setMoveable(true);
}
/**��ע*/
{
TableViewerColumn comlumn = new TableViewerColumn(viewer, SWT.LEFT);
comlumn.getColumn().setText("��ע");
comlumn.getColumn().setWidth(200);
EObjectColumnLabelProvider provider = new EObjectColumnLabelProvider(CorePackage.Literals.REVISION_HISTORY__COMMENT);
provider.setDiagnosticProvider(problemView);
comlumn.setLabelProvider(provider);
comlumn.setEditingSupport(new LongTextEditingSupport(viewer, CorePackage.Literals.REVISION_HISTORY__COMMENT));
comlumn.getColumn().setMoveable(true);
}
getProblemPool().addView(problemView);
getProblemPool().addView(exProblemView);
// getEditableControl().addEditableUnit(new JresDefaultEditableUnit(viewer.getControl()));
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.pages.ColumnViewerListPage#createActions()
*/
@Override
protected void createActions() {
super.createActions();
IAction delAction = new ColumnViewerDeleteAction(getColumnViewer(), getEditingDomain());
getActionRegistry().registerAction(delAction);
getSelectionActions().add(delAction.getId());
IAction copyAction = new ColumnViewerCopyAction(getColumnViewer());
getActionRegistry().registerAction(copyAction);
getSelectionActions().add(copyAction.getId());
pasteAction = new ColumnViewerPasteAction(getColumnViewer(), getEditingDomain(), null, null);
getActionRegistry().registerAction(pasteAction);
getClipboardActions().add(pasteAction.getId());
actionMoveUp = new ColumnViewerMoveUpAction(getColumnViewer(), getEditingDomain());
getActionRegistry().registerAction(actionMoveUp);
getSelectionActions().add(actionMoveUp.getId());
getStackActions().add(actionMoveUp.getId());
actionMoveDown = new ColumnViewerMoveDownAction(getColumnViewer(), getEditingDomain());
getActionRegistry().registerAction(actionMoveDown);
getSelectionActions().add(actionMoveDown.getId());
getStackActions().add(actionMoveDown.getId());
IAction copyCellAction = new CopyCellAction(getColumnViewer());
getActionRegistry().registerAction(copyCellAction);
IAction copyColumnAction = new CopyColumnAction(getColumnViewer());
getActionRegistry().registerAction(copyColumnAction);
createRevisionActions();
//ֻ������
getEditableControl().addEditableUnit(new ActionEditableUnit(actionMoveUp));
getEditableControl().addEditableUnit(new ActionEditableUnit(actionMoveDown));
}
protected void createRevisionActions() {
IARESResource aresResource = getARESResource();
increaseVersionAction = new IncreaseVersionAction(getColumnViewer(), getEditingDomain(), null, CorePackage.Literals.JRES_RESOURCE_INFO__HISTORIES, aresResource);
getActionRegistry().registerAction(increaseVersionAction);
getSelectionActions().add(IncreaseVersionAction.ID);
getEditableControl().addEditableUnit(new HistoryActionEditableUnit(increaseVersionAction));
addRevisionHistoryAction = new AddRevisionHistoryRecordAction(getColumnViewer(), getEditingDomain(), null, CorePackage.Literals.JRES_RESOURCE_INFO__HISTORIES,aresResource);
getActionRegistry().registerAction(addRevisionHistoryAction);
getSelectionActions().add(AddRevisionHistoryRecordAction.ID);
getEditableControl().addEditableUnit(new HistoryActionEditableUnit(addRevisionHistoryAction));
}
@Override
public void setInput(Object input) {
pasteAction.setOwner((EObject) input);
pasteAction.setReference(getReference());
actionMoveUp.setOwner((EObject) input);
actionMoveUp.setReference(getReference());
actionMoveDown.setOwner((EObject) input);
actionMoveDown.setReference(getReference());
if (increaseVersionAction != null)
increaseVersionAction.setInfo((EObject) input);
if (addRevisionHistoryAction != null)
addRevisionHistoryAction.setInfo((EObject) input);
super.setInput(input);
}
/**
* Ϊ�˸������block, ���ܻ����ڲ�ͬ�Ķ����ϣ�������Ҫ�������¶�������¼�б�����Ӧ��EMF����
* @return
*/
protected EReference getReference() {
return CorePackage.Literals.JRES_RESOURCE_INFO__HISTORIES;
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.ui.editor.blocks.ColumnViewerBlock#getHeadColumnFeature()
*/
@Override
protected EStructuralFeature getHeadColumnFeature() {
return CorePackage.Literals.REVISION_HISTORY__ORDER_NUMBER;
}
@Override
protected void createToolbarItems(ToolBarManager buttonManager) {
IAction action = getActionRegistry().getAction(IActionIDConstant.CV_MOVE_UP);
buttonManager.add(action);
action = getActionRegistry().getAction(IActionIDConstant.CV_MOVE_DOWN);
buttonManager.add(action);
action = getActionRegistry().getAction(IActionIDConstant.CV_DELETE);
buttonManager.add(action);
buttonManager.add(increaseVersionAction);
buttonManager.add(addRevisionHistoryAction);
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.pages.ColumnViewerListPage#createMenus(org.eclipse.jface.action.IMenuManager)
*/
@Override
protected void createMenus(IMenuManager menuManager) {
IAction action = getActionRegistry().getAction(IActionIDConstant.CV_DELETE);
menuManager.add(action);
menuManager.add(new Separator());
action = getActionRegistry().getAction(IActionIDConstant.CV_COPY);
menuManager.add(action);
action = getActionRegistry().getAction(CopyCellAction.ID);
menuManager.add(action);
action = getActionRegistry().getAction(CopyColumnAction.ID);
menuManager.add(action);
action = getActionRegistry().getAction(IActionIDConstant.CV_PASTE);
menuManager.add(action);
menuManager.add(new Separator());
action = getActionRegistry().getAction(IActionIDConstant.CV_MOVE_UP);
menuManager.add(action);
action = getActionRegistry().getAction(IActionIDConstant.CV_MOVE_DOWN);
menuManager.add(action);
}
@Override
protected IContentProvider getColumnViewerContentProvider() {
return new ReferenceTreeContentProvider(getReference());
}
@Override
protected String getID() {
return getClass().getName();
}
@Override
protected IAction getAddAction() {
return increaseVersionAction;
}
public class HistoryActionEditableUnit implements IEditableUnit {
IAction action;
public HistoryActionEditableUnit(IAction action){
this.action = action;
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.editors.editable.IEditableUnit#setReadonlyStatus(java.lang.String, java.lang.Object)
*/
@Override
public void setReadonlyStatus(String key, Object status) {
if(StringUtils.equals(KEY_SYSTEM, key)){
if(!EDITABLE_TRUE.equals(status)){
this.action.setEnabled(false);
}
}
}
}
}