/**
* Դ�������ƣ�OperationBlock.java
* �������Ȩ���������ӹɷ�����˾ ��Ȩ����
* ϵͳ���ƣ�JRES Studio
* ģ�����ƣ�com.hundsun.ares.studio.jres.metadata.ui
* ����˵����Ԫ�����û��༭��UIչ����ع���
* ����ĵ���
* ���ߣ�
*/
package com.hundsun.ares.studio.jres.metadata.ui.editors;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jface.viewers.ColumnViewer;
import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.TreeViewerColumn;
import org.eclipse.jface.window.ToolTip;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.dialogs.FilteredTree;
import org.eclipse.ui.forms.IDetailsPage;
import org.eclipse.ui.forms.IManagedForm;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.jres.metadata.ui.actions.AddSampleFactory;
import com.hundsun.ares.studio.jres.model.metadata.MetadataPackage;
import com.hundsun.ares.studio.jres.model.metadata.MetadataResourceData;
import com.hundsun.ares.studio.jres.model.metadata.impl.OperationImpl;
import com.hundsun.ares.studio.ui.editor.IEMFFormPage;
import com.hundsun.ares.studio.ui.editor.actions.ColumnViewerAddAction;
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.IActionIDConstant;
import com.hundsun.ares.studio.ui.editor.actions.IUpdateAction;
import com.hundsun.ares.studio.ui.editor.blocks.JresBasicMasterDetailsBlock;
import com.hundsun.ares.studio.ui.editor.editable.ActionEditableUnit;
import com.hundsun.ares.studio.ui.editor.editable.IEditableControl;
import com.hundsun.ares.studio.ui.editor.editingsupport.BooleanEditingSupport;
import com.hundsun.ares.studio.ui.editor.editingsupport.TextEditingSupport;
import com.hundsun.ares.studio.ui.editor.viewers.ColumnViewerPatternFilter;
import com.hundsun.ares.studio.ui.editor.viewers.EObjectColumnLabelProvider;
import com.hundsun.ares.studio.ui.editor.viewers.ReferenceTreeContentProvider;
/**
* �����û������༭��Block
* @author qinyuan
*
*/
public class OperationBlock extends JresBasicMasterDetailsBlock {
List<IAction> actions = new ArrayList<IAction>();
private EObject info;
private TreeViewer viewer;
private IARESResource res;
private ColumnViewerAddAction addAction;
private ColumnViewerMoveUpAction moveUpAction;
private ColumnViewerMoveDownAction moveDownAction;
/**
* @param page
*/
public OperationBlock(OperationEditPage page,IEditableControl controler) {
super(page, controler);
}
@Override
protected void createMasterPart(final IManagedForm managedForm, Composite parent) {
super.createMasterPart(managedForm, parent);
this.res = page.getEditor().getARESResource();
}
public TreeViewer getViewer() {
return this.viewer;
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.page.masterdetail.JresBasicMasterDetailsBlock#getPageHeadName()
*/
@Override
protected String getPageHeadName() {
return null;
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.page.masterdetail.JresBasicMasterDetailsBlock#getSectionName()
*/
@Override
protected String getSectionName() {
return "�û�����";
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.page.masterdetail.JresBasicMasterDetailsBlock#getDescription()
*/
@Override
protected String getDescription() {
return null;
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.page.masterdetail.JresBasicMasterDetailsBlock#getElementTypes()
*/
@Override
protected Object[] getElementTypes() {
return new Object[]{OperationImpl.class};
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.page.masterdetail.JresBasicMasterDetailsBlock#getDetailPage(java.lang.Object)
*/
@Override
protected IDetailsPage getDetailPage(Object type) {
return new OperationDetails();
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.page.masterdetail.JresBasicMasterDetailsBlock#createViewer(org.eclipse.swt.widgets.Composite, org.eclipse.ui.forms.IManagedForm, com.hundsun.ares.studio.jres.ui.form.EMFFormPage)
*/
@Override
protected ColumnViewer createViewer(Composite client, IManagedForm managedForm, IEMFFormPage page) {
toolkit = managedForm.getToolkit();
//��ʼ��ģ��
info = page.getEditor().getInfo();
FilteredTree table = new FilteredTree(client, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI, new ColumnViewerPatternFilter(), true);
viewer = table.getViewer();//new TableViewer(parent, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI);
viewer.getTree().setHeaderVisible(true);
viewer.getTree().setLinesVisible(true);
createTableColumns();
fillTableContents();
// �������tooltip��ʾ
ColumnViewerToolTipSupport.enableFor(viewer, ToolTip.RECREATE);
return viewer;
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.page.masterdetail.JresBasicMasterDetailsBlock#setMasterLayout(org.eclipse.swt.widgets.Composite)
*/
@Override
protected void setMasterLayout(Composite client) {
// ����
GridLayoutFactory.swtDefaults().numColumns(2).applyTo(client);
GridDataFactory.fillDefaults().hint(50, 50).grab(true, true).applyTo(viewer.getControl());
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.page.masterdetail.JresBasicMasterDetailsBlock#createMenus(org.eclipse.jface.action.IMenuManager)
*/
//����Ҽ��˵�
@Override
protected void createMenus(IMenuManager manager) {
super.createMenus(manager);
for (IAction action : actions) {
manager.add(action);
}
//��������Բ�ͬ�༭��������µĽű�ʾ��
List<IAction>sampleActionList=AddSampleFactory.getSampleActions(viewer, page.getEditingDomain(),info,res);
if(sampleActionList.size()>0){
manager.add(new Separator());
MenuManager submenu = new MenuManager( "���ʾ��");
for(IAction action:sampleActionList){
submenu.add(action);
}
manager.add(submenu);
}
updateActions();
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.pages.ColumnViewerBlock#createActions()
*/
@Override
protected void createActions() {
super.createActions();
addAction = new ColumnViewerAddAction(viewer,
page.getEditingDomain(),
info,
MetadataPackage.Literals.METADATA_RESOURCE_DATA__OPERATIONS,
MetadataPackage.Literals.OPERATION);
getActionRegistry().registerAction(addAction);
getSelectionActions().add(addAction.getId());
IAction delAction = new ColumnViewerDeleteAction(getColumnViewer(), getEditingDomain());
getActionRegistry().registerAction(delAction);
getSelectionActions().add(delAction.getId());
moveUpAction = new ColumnViewerMoveUpAction(getColumnViewer(), getEditingDomain());
getActionRegistry().registerAction(moveUpAction);
getSelectionActions().add(moveUpAction.getId());
getStackActions().add(moveUpAction.getId());
moveDownAction = new ColumnViewerMoveDownAction(getColumnViewer(), getEditingDomain());
getActionRegistry().registerAction(moveDownAction);
getSelectionActions().add(moveDownAction.getId());
getStackActions().add(moveDownAction.getId());
//ֻ������
getEditableControl().addEditableUnit(new ActionEditableUnit(addAction));
getEditableControl().addEditableUnit(new ActionEditableUnit(delAction));
getEditableControl().addEditableUnit(new ActionEditableUnit(moveUpAction));
getEditableControl().addEditableUnit(new ActionEditableUnit(moveDownAction));
}
/**
* @param buttonManager
*/
@Override
protected void createToolbarItems(ToolBarManager buttonManager) {
IAction action = getActionRegistry().getAction(IActionIDConstant.CV_ADD);
buttonManager.add(action);
action = getActionRegistry().getAction(IActionIDConstant.CV_DELETE);
buttonManager.add(action);
action = getActionRegistry().getAction(IActionIDConstant.CV_MOVE_UP);
buttonManager.add(action);
action = getActionRegistry().getAction(IActionIDConstant.CV_MOVE_DOWN);
buttonManager.add(action);
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.pages.ColumnViewerBlock#setInput(java.lang.Object)
*/
@Override
public void setInput(Object input) {
addAction.setOwner((EObject) input);
moveDownAction.setOwner((EObject) input);
moveDownAction.setReference( MetadataPackage.Literals.METADATA_RESOURCE_DATA__OPERATIONS);
moveUpAction.setOwner((EObject) input);
moveUpAction.setReference( MetadataPackage.Literals.METADATA_RESOURCE_DATA__OPERATIONS);
super.setInput(input);
}
private void updateActions() {
for (IAction action : actions) {
if (action instanceof IUpdateAction) {
((IUpdateAction) action).update();
}
}
}
/* (non-Javadoc)
* @see org.eclipse.ui.forms.MasterDetailsBlock#createToolBarActions(org.eclipse.ui.forms.IManagedForm)
*/
@Override
protected void createToolBarActions(IManagedForm managedForm) {
}
/**
*
*/
private void createTableColumns() {
//TODO#������#��Ԫ#��ͨ#����#����״̬ #���ʱ�� #������(�������հ��к�ע����) #��ʱ(��ȷ������) #��һ�����ؼ������û�������ע�����ϵͳ�ֶ���չ֧��
{
TreeViewerColumn column = new TreeViewerColumn(viewer, SWT.LEFT);
column.getColumn().setText("��������");
column.getColumn().setWidth(100);
column.setLabelProvider(new EObjectColumnLabelProvider(MetadataPackage.Literals.OPERATION__TITLE));
column.setEditingSupport(new TextEditingSupport(viewer, MetadataPackage.Literals.OPERATION__TITLE));
}
{
TreeViewerColumn column = new TreeViewerColumn(viewer, SWT.LEFT);
column.getColumn().setText("�Ƿ��Զ�����");
column.getColumn().setWidth(100);
column.setLabelProvider(new EObjectColumnLabelProvider(MetadataPackage.Literals.OPERATION__AUTOBUILD));
column.setEditingSupport(new BooleanEditingSupport(viewer, MetadataPackage.Literals.OPERATION__AUTOBUILD));
}
}
private void fillTableContents() {
EReference reference = MetadataPackage.Literals.METADATA_RESOURCE_DATA__OPERATIONS;
viewer.setContentProvider(new ReferenceTreeContentProvider(reference));
if(info instanceof MetadataResourceData) {
viewer.setInput(info);
}
}
}