/** * <p>Copyright: Copyright (c) 2013</p> * <p>Company: �������ӹɷ����޹�˾</p> */ package com.hundsun.ares.studio.procedure.ui.editor.page.block; 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 com.hundsun.ares.studio.biz.BizPackage; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.jres.basicdata.constant.IBasicDataRestypes; import com.hundsun.ares.studio.jres.database.constant.IDatabaseRefType; import com.hundsun.ares.studio.procdure.ProcdurePackage; import com.hundsun.ares.studio.procedure.ui.support.ProcedureRelatedBasicDataInfoContentProposalProvider; import com.hundsun.ares.studio.procedure.ui.support.ProcedureRelatedBasicDataInfoSupportHelper; import com.hundsun.ares.studio.procedure.ui.support.ProcedureRelatedInfoColumnLabelProvider; import com.hundsun.ares.studio.procedure.ui.support.ProcedureRelatedTableInfoContentProposalProvider; import com.hundsun.ares.studio.procedure.ui.support.ProcedureRelatedTableInfoSupportHelper; import com.hundsun.ares.studio.ui.ColumnViewerHoverToolTip; import com.hundsun.ares.studio.ui.editor.actions.ColumnViewerAddAction; 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.ColumnViewerInsertAction; import com.hundsun.ares.studio.ui.editor.actions.ColumnViewerMoveBottomAction; import com.hundsun.ares.studio.ui.editor.actions.ColumnViewerMoveDownAction; import com.hundsun.ares.studio.ui.editor.actions.ColumnViewerMoveTopAction; 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.IActionIDConstant; import com.hundsun.ares.studio.ui.editor.blocks.TreeViewerBlock; import com.hundsun.ares.studio.ui.editor.editable.ActionEditableUnit; import com.hundsun.ares.studio.ui.editor.editingsupport.JresTextEditingSupportWithContentAssist; 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.validate.IProblemPool; /** * ������Ϣblock * * @author qinyuan * */ public class RelatedInfoBlock extends TreeViewerBlock{ protected EditingDomain editingDomain; protected IARESResource resource; protected IProblemPool problemPool; protected EReference reference; //������ť private ColumnViewerAddAction addAction; private ColumnViewerInsertAction insertAction; private ColumnViewerMoveUpAction moveUpAction; private ColumnViewerMoveDownAction moveDownAction; private ColumnViewerMoveTopAction moveTopAction; private ColumnViewerMoveBottomAction moveBottomAction; private ColumnViewerPasteAction pasteAction; /** * */ public RelatedInfoBlock(EReference reference, EditingDomain editingDomain, IARESResource resource, IProblemPool problemPool) { super(); this.reference = reference; this.editingDomain = editingDomain; this.resource = resource; this.problemPool = problemPool; } @Override protected void addToolTipSupport(TreeViewer viewer) { ColumnViewerHoverToolTip.enableFor(viewer); } /* (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 ProcedureRelatedInfoContentProvider(reference); } /* (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); menuManager.add(new Separator()); action = getActionRegistry().getAction(IActionIDConstant.CV_COPY); menuManager.add(action); action = getActionRegistry().getAction(IActionIDConstant.CV_PASTE); menuManager.add(action); menuManager.add(new Separator()); action = getActionRegistry().getAction(IActionIDConstant.CV_MOVE_TOP); menuManager.add(action); action = getActionRegistry().getAction(IActionIDConstant.CV_MOVE_UP); menuManager.add(action); action = getActionRegistry().getAction(IActionIDConstant.CV_MOVE_DOWN); menuManager.add(action); action = getActionRegistry().getAction(IActionIDConstant.CV_MOVE_BOTTOM); menuManager.add(action); action = getActionRegistry().getAction(IActionIDConstant.CV_INSERT); menuManager.add(action); menuManager.add(new Separator()); } /* (non-Javadoc) * @see com.hundsun.ares.studio.ui.editor.blocks.ColumnViewerBlock#createActions() */ @Override protected void createActions() { super.createActions(); addAction = new ColumnViewerAddAction(getColumnViewer(), editingDomain, null,reference,ProcdurePackage.Literals.RELATED_INFO); getActionRegistry().registerAction(addAction); getSelectionActions().add(addAction.getId()); IAction delAction = new ColumnViewerDeleteAction(getColumnViewer(), this.editingDomain); getActionRegistry().registerAction(delAction); getSelectionActions().add(delAction.getId()); moveUpAction = new ColumnViewerMoveUpAction(getColumnViewer(), this.editingDomain, null, this.reference); getActionRegistry().registerAction(moveUpAction); getSelectionActions().add(moveUpAction.getId()); getStackActions().add(moveUpAction.getId()); moveTopAction = new ColumnViewerMoveTopAction(getColumnViewer(), this.editingDomain, null, this.reference); getActionRegistry().registerAction(moveTopAction); getSelectionActions().add(moveTopAction.getId()); getStackActions().add(moveTopAction.getId()); moveDownAction = new ColumnViewerMoveDownAction(getColumnViewer(), this.editingDomain, null, this.reference); getActionRegistry().registerAction(moveDownAction); getSelectionActions().add(moveDownAction.getId()); getStackActions().add(moveDownAction.getId()); insertAction = new ColumnViewerInsertAction( getColumnViewer(), this.editingDomain, reference, ProcdurePackage.Literals.RELATED_INFO); getActionRegistry().registerAction(insertAction); getSelectionActions().add(insertAction.getId()); moveBottomAction = new ColumnViewerMoveBottomAction(getColumnViewer(), this.editingDomain, null, this.reference); getActionRegistry().registerAction(moveBottomAction); getSelectionActions().add(moveBottomAction.getId()); getStackActions().add(moveBottomAction.getId()); IAction copyAction = new ColumnViewerCopyAction(getColumnViewer()); getActionRegistry().registerAction(copyAction); getSelectionActions().add(copyAction.getId()); pasteAction = new ColumnViewerPasteAction(getColumnViewer(), editingDomain, null, reference); getActionRegistry().registerAction(pasteAction); getClipboardActions().add(pasteAction.getId()); //ֻ������ getEditableControl().addEditableUnit(new ActionEditableUnit(addAction)); getEditableControl().addEditableUnit(new ActionEditableUnit(delAction)); getEditableControl().addEditableUnit(new ActionEditableUnit(moveTopAction)); getEditableControl().addEditableUnit(new ActionEditableUnit(moveUpAction)); getEditableControl().addEditableUnit(new ActionEditableUnit(moveDownAction)); getEditableControl().addEditableUnit(new ActionEditableUnit(insertAction)); getEditableControl().addEditableUnit(new ActionEditableUnit(moveBottomAction)); getEditableControl().addEditableUnit(new ActionEditableUnit(pasteAction)); } /* (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); // ��־λ, "������", "������", "����", "java����", "��׼�ֶ�", "ֵ", "����" // 80, 100, 100, 100, 100, 100, 100, 120 { // ���������� EAttribute attribute = ProcdurePackage.Literals.RELATED_INFO__ID; // ��������� TreeViewerColumn column = new TreeViewerColumn(viewer, SWT.LEFT); column.getColumn().setText("������ԴӢ����"); column.getColumn().setWidth(100); // ���ñ�ǩ�ṩ�� EObjectColumnLabelProvider provider = new ProcedureRelatedInfoColumnLabelProvider(resource,reference,attribute); provider.setDiagnosticProvider(problemView); column.setLabelProvider(provider); if(ProcdurePackage.Literals.PROCEDURE__RELATED_TABLE_INFO.equals(reference)){//������ // 3. ����EditingSupport, ProcedureRelatedTableInfoSupportHelper helper = new ProcedureRelatedTableInfoSupportHelper(); ProcedureRelatedTableInfoContentProposalProvider proposalProvider = new ProcedureRelatedTableInfoContentProposalProvider(helper, IDatabaseRefType.Table, resource.getARESProject()); // ���ñ༭֧�� JresTextEditingSupportWithContentAssist es = new JresTextEditingSupportWithContentAssist(viewer, attribute,proposalProvider); // TextEditingSupport es = new TextEditingSupport(viewer, attribute); es.setDecorator(new ProcedureRelatedInfoEditingSupportDecorator(attribute)); column.setEditingSupport(es); }else if(ProcdurePackage.Literals.PROCEDURE__RELATED_BASIC_DATA_INFO.equals(reference)) {//������������ ProcedureRelatedBasicDataInfoSupportHelper helper = new ProcedureRelatedBasicDataInfoSupportHelper(); ProcedureRelatedBasicDataInfoContentProposalProvider proposalProvider = new ProcedureRelatedBasicDataInfoContentProposalProvider(helper, IBasicDataRestypes.singleTable, resource.getARESProject()); JresTextEditingSupportWithContentAssist es = new JresTextEditingSupportWithContentAssist(viewer, attribute,proposalProvider); // TextEditingSupport es = new TextEditingSupport(viewer, attribute); es.setDecorator(new ProcedureRelatedInfoEditingSupportDecorator(attribute)); column.setEditingSupport(es); } } { // ���������� EAttribute attribute = ProcdurePackage.Literals.RELATED_INFO__COMMENT; // ��������� TreeViewerColumn column = new TreeViewerColumn(viewer, SWT.LEFT); column.getColumn().setText("������Դ������"); column.getColumn().setWidth(250); // ���ñ�ǩ�ṩ�� EObjectColumnLabelProvider provider = new ProcedureRelatedInfoColumnLabelProvider(resource,reference,attribute); provider.setDiagnosticProvider(problemView); column.setLabelProvider(provider); // ���ñ༭֧�� TextEditingSupport es = new TextEditingSupport(viewer, attribute); es.setDecorator(new ProcedureRelatedInfoEditingSupportDecorator(attribute)); column.setEditingSupport(es); } { // ���������� EAttribute attribute = ProcdurePackage.Literals.RELATED_INFO__PATH; // ��������� TreeViewerColumn column = new TreeViewerColumn(viewer, SWT.LEFT); column.getColumn().setText("������Դ·��"); column.getColumn().setWidth(300); // ���ñ�ǩ�ṩ�� EObjectColumnLabelProvider provider = new ProcedureRelatedInfoColumnLabelProvider(resource,reference,attribute); provider.setDiagnosticProvider(problemView); column.setLabelProvider(provider); // ���ñ༭֧�� TextEditingSupport es = new TextEditingSupport(viewer, attribute); es.setDecorator(new ProcedureRelatedInfoEditingSupportDecorator(attribute)); column.setEditingSupport(es); } // ��չ��Ϣ ExtensibleModelUtils.createExtensibleModelTreeViewerColumns( viewer, resource, BizPackage.Literals.PARAMETER, exProblemView); if (this.problemPool != null) { this.problemPool.addView(problemView); this.problemPool.addView(exProblemView); } } /* (non-Javadoc) * @see com.hundsun.ares.studio.ui.editor.blocks.ColumnViewerBlock#createToolbarItems(org.eclipse.jface.action.ToolBarManager) */ @Override protected void createToolbarItems(ToolBarManager buttonManager) { // ������ť�б� IAction action = getActionRegistry().getAction(IActionIDConstant.CV_ADD); buttonManager.add(action); action = getActionRegistry().getAction(IActionIDConstant.CV_INSERT); buttonManager.add(action); action = getActionRegistry().getAction(IActionIDConstant.CV_DELETE); buttonManager.add(action); action = getActionRegistry().getAction(IActionIDConstant.CV_MOVE_TOP); buttonManager.add(action); 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_MOVE_BOTTOM); 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); insertAction.setOwner((EObject) input); moveDownAction.setOwner((EObject) input); moveUpAction.setOwner((EObject) input); moveBottomAction.setOwner((EObject) input); moveTopAction.setOwner((EObject) input); pasteAction.setOwner((EObject) input); super.setInput(input); } }