/** * <p>Copyright: Copyright (c) 2013</p> * <p>Company: �������ӹɷ����޹�˾</p> */ package com.hundsun.ares.studio.atom.ui.module; import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EReference; 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.TreeViewer; import org.eclipse.jface.viewers.TreeViewerColumn; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.core.model.ModuleProperty; import com.hundsun.ares.studio.cres.extend.core.constants.ICresExtendConstants; import com.hundsun.ares.studio.cres.extend.cresextend.CresextendPackage; import com.hundsun.ares.studio.cres.extend.ui.edit.support.CresExtendEditingSupportDecorator; 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.IActionIDConstant; import com.hundsun.ares.studio.ui.editor.blocks.TreeViewerBlock; 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 qinyuan * */ public class CresModuleDependsBlock extends TreeViewerBlock { // �༭��Parameter��Ӧ������ĸ����ԣ� // ���������������������Ӧ��������������Reference������Ƕ������ԣ����Ƕ����������Reference. protected EReference reference; private Composite composite; private ColumnViewerAddAction addAction; /** * @param composite * */ public CresModuleDependsBlock(Composite composite, EReference reference, EditingDomain editingDomain, IARESResource resource, IProblemPool problemPool) { super(); this.composite = composite; this.reference = reference; this.editingDomain = editingDomain; this.resource = resource; this.problemPool = problemPool; } /* (non-Javadoc) * @see com.hundsun.ares.studio.ui.editor.blocks.ColumnViewerBlock#getID() */ @Override protected String getID() { return getClass().getName(); } /* (non-Javadoc) * @see com.hundsun.ares.studio.ui.editor.blocks.ColumnViewerBlock#getColumnViewerContentProvider() */ @Override protected IContentProvider getColumnViewerContentProvider() { return new ReferenceTreeContentProvider(this.reference); } /* (non-Javadoc) * @see com.hundsun.ares.studio.ui.editor.blocks.ColumnViewerBlock#createActions() */ @Override protected void createActions() { addAction = new ColumnViewerAddMoudleDependAction(resource, composite, getColumnViewer(), editingDomain, null, reference, CresextendPackage.Literals.MOUDLE_DEPEND); // addAction = new ColumnViewerAddAction( // getColumnViewer(), // editingDomain, // null, // reference, // CresmoudlePackage.Literals.DEPEND); getActionRegistry().registerAction(addAction); getSelectionActions().add(addAction.getId()); IAction delAction = new ColumnViewerDeleteAction(getColumnViewer(), editingDomain); getActionRegistry().registerAction(delAction); getSelectionActions().add(delAction.getId()); //ֻ������ // getEditableControl().addEditableUnit(new ActionEditableUnit(delAction)); } /* (non-Javadoc) * @see com.hundsun.ares.studio.ui.editor.blocks.ColumnViewerBlock#setInput(java.lang.Object) */ @Override public void setInput(Object input) { if(input instanceof ModuleProperty) { ModuleProperty mp = (ModuleProperty)input; Object owner = mp.getMap().get(ICresExtendConstants.CRES_EXTEND_MOUDLE_PROPERTY); addAction.setOwner((EObject)owner); super.setInput(owner); } } /* (non-Javadoc) * @see com.hundsun.ares.studio.ui.editor.blocks.ColumnViewerBlock#createMenus(org.eclipse.jface.action.IMenuManager) */ @Override protected void createMenus(IMenuManager menuManager) { IAction action = getActionRegistry().getAction(IActionIDConstant.CV_ADD); menuManager.add(action); menuManager.add(new Separator()); action = getActionRegistry().getAction(IActionIDConstant.CV_DELETE); menuManager.add(action); } /* (non-Javadoc) * @see com.hundsun.ares.studio.ui.editor.blocks.ColumnViewerBlock#createToolbarItems(org.eclipse.jface.action.ToolBarManager) */ @Override protected void createToolbarItems(ToolBarManager manager) { // ������ť�б� IAction action = getActionRegistry().getAction(IActionIDConstant.CV_ADD); manager.add(action); action = getActionRegistry().getAction(IActionIDConstant.CV_DELETE); manager.add(action); } /* (non-Javadoc) * @see com.hundsun.ares.studio.ui.editor.blocks.ColumnViewerBlock#createColumns(org.eclipse.jface.viewers.ColumnViewer) */ @Override protected void createColumns(TreeViewer viewer) { EObjectColumnViewerProblemView problemView = new EObjectColumnViewerProblemView(viewer); // ������չ�� EObjectColumnViewerProblemView exProblemView = new ExtensibleModelColumnViewerProblemView(viewer); { // ���������� EAttribute attribute = CresextendPackage.Literals.MOUDLE_DEPEND__MODULE_PATH; // ��������� TreeViewerColumn column = new TreeViewerColumn(viewer, SWT.LEFT); column.getColumn().setText("ģ��·��"); column.getColumn().setWidth(350); // ���ñ�ǩ�ṩ�� EObjectColumnLabelProvider provider = new EObjectColumnLabelProvider(attribute); provider.setDiagnosticProvider(problemView); column.setLabelProvider(provider); // 3. ����EditingSupport, // ���ñ༭֧�� TextEditingSupport es = new TextEditingSupport(viewer, attribute); es.setDecorator(new CresExtendEditingSupportDecorator()); column.setEditingSupport(es); } { // ���������� EAttribute attribute = CresextendPackage.Literals.MOUDLE_DEPEND__NAME; // ��������� TreeViewerColumn column = new TreeViewerColumn(viewer, SWT.LEFT); column.getColumn().setText("ģ������"); column.getColumn().setWidth(100); // ���ñ�ǩ�ṩ�� EObjectColumnLabelProvider provider = new EObjectColumnLabelProvider(attribute); provider.setDiagnosticProvider(problemView); column.setLabelProvider(provider); // 3. ����EditingSupport, // ���ñ༭֧�� TextEditingSupport es = new TextEditingSupport(viewer, attribute); es.setDecorator(new CresExtendEditingSupportDecorator()); column.setEditingSupport(es); } // ��չ��Ϣ ExtensibleModelUtils.createExtensibleModelTreeViewerColumns( viewer, resource, CresextendPackage.Literals.MOUDLE_DEPEND, exProblemView); if (this.problemPool != null) { this.problemPool.addView(problemView); this.problemPool.addView(exProblemView); // getEditableControl().addEditableUnit(new JresDefaultEditableUnit(viewer.getControl())); } } }