package com.hundsun.ares.studio.jres.metadata.ui.block; import java.util.EventObject; import org.apache.commons.lang.StringUtils; import org.eclipse.emf.ecore.EObject; 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.ui.IWorkbenchPartSite; import org.eclipse.ui.forms.editor.FormPage; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.jres.metadata.ui.viewer.MetadataColumnLabelProvider; import com.hundsun.ares.studio.jres.model.metadata.MetadataPackage; import com.hundsun.ares.studio.jres.model.metadata.provider.LongTextEditingSupport; import com.hundsun.ares.studio.jres.model.metadata.util.MenuUtils; 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.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.blocks.TreeViewerBlock; import com.hundsun.ares.studio.ui.editor.editable.ActionEditableUnit; 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.editor.viewers.RefreshViewerJob; import com.hundsun.ares.studio.ui.validate.IProblemPool; public class FunctionViewerBlock extends TreeViewerBlock { private EditingDomain editingDomain; private IARESResource resource; private IProblemPool problemPool; private IWorkbenchPartSite site; private FormPage page; private ColumnViewerAddAction addAction; private ColumnViewerInsertAction insertAction; private ColumnViewerPasteAction pasteAction; private ColumnViewerMoveUpAction actionMoveUp; private ColumnViewerMoveDownAction actionMoveDown; public FunctionViewerBlock(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; } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.pages.ColumnViewerBlock#commandStackChanged(java.util.EventObject) */ @Override public void commandStackChanged(EventObject event) { RefreshViewerJob.refresh(getColumnViewer()); } /** * @return the editingDomain */ public EditingDomain getEditingDomain() { return editingDomain; } /** * @return the resource */ public IARESResource getARESResource() { return resource; } /** * @return the problemPool */ public IProblemPool getProblemPool() { return problemPool; } /** * @return the site */ public IWorkbenchPartSite getSite() { return site; } public FormPage getFormPage (){ return page; } protected void createColumns(TreeViewer _viewer) { final TreeViewer viewer = (TreeViewer) _viewer; EObjectColumnViewerProblemView problemView = new EObjectColumnViewerProblemView(viewer); // ������չ�� EObjectColumnViewerProblemView exProblemView = new ExtensibleModelColumnViewerProblemView(viewer); if(!MenuUtils.isStockDepartment()){ /**�ӽ�����,����ģʽ�²���ʾ*/ { TreeViewerColumn comlumn = new TreeViewerColumn(viewer, SWT.LEFT); comlumn.getColumn().setText("�ӽ�����"); comlumn.getColumn().setWidth(130); EObjectColumnLabelProvider provider = new MetadataColumnLabelProvider(MetadataPackage.Literals.FUNCTION__SUB_TRANS_CODE , getARESResource()); provider.setDiagnosticProvider(problemView); comlumn.setLabelProvider(provider); comlumn.setEditingSupport(new TextEditingSupport(viewer, MetadataPackage.Literals.FUNCTION__SUB_TRANS_CODE)); } /**����,����ģʽ�²���ʾ*/ { TreeViewerColumn comlumn = new TreeViewerColumn(viewer, SWT.LEFT); comlumn.getColumn().setText("����"); comlumn.getColumn().setWidth(160); EObjectColumnLabelProvider provider = new MetadataColumnLabelProvider(MetadataPackage.Literals.FUNCTION__SERV_ID , getARESResource()); provider.setDiagnosticProvider(problemView); comlumn.setLabelProvider(provider); comlumn.setEditingSupport(new TextEditingSupport(viewer, MetadataPackage.Literals.FUNCTION__SERV_ID)); comlumn.getColumn().setMoveable(true); } } /**���ܺ�*/ { TreeViewerColumn comlumn = new TreeViewerColumn(viewer, SWT.LEFT); comlumn.getColumn().setText("���ܱ��"); comlumn.getColumn().setWidth(160); EObjectColumnLabelProvider provider = new MetadataColumnLabelProvider(MetadataPackage.Literals.NAMED_ELEMENT__NAME , getARESResource()); provider.setDiagnosticProvider(problemView); comlumn.setLabelProvider(provider); comlumn.setEditingSupport(new TextEditingSupport(viewer, MetadataPackage.Literals.NAMED_ELEMENT__NAME)); comlumn.getColumn().setMoveable(true); } /**��������*/ { TreeViewerColumn comlumn = new TreeViewerColumn(viewer, SWT.LEFT); comlumn.getColumn().setText("��������"); comlumn.getColumn().setWidth(100); EObjectColumnLabelProvider provider = new MetadataColumnLabelProvider(MetadataPackage.Literals.NAMED_ELEMENT__CHINESE_NAME , getARESResource()); provider.setDiagnosticProvider(problemView); comlumn.setLabelProvider(provider); comlumn.setEditingSupport(new TextEditingSupport(viewer, MetadataPackage.Literals.NAMED_ELEMENT__CHINESE_NAME)); comlumn.getColumn().setMoveable(true); } /**��ע*/ { TreeViewerColumn comlumn = new TreeViewerColumn(viewer, SWT.LEFT); comlumn.getColumn().setText("˵��"); comlumn.getColumn().setWidth(200); comlumn.setLabelProvider(new MetadataColumnLabelProvider(MetadataPackage.Literals.NAMED_ELEMENT__DESCRIPTION , getARESResource()){ @Override public String getToolTipText(Object element) { String text = super.getToolTipText(element); if(StringUtils.isBlank(text)){ return getText(element); } return text; } }); comlumn.setEditingSupport(new LongTextEditingSupport(viewer, MetadataPackage.Literals.NAMED_ELEMENT__DESCRIPTION)); comlumn.getColumn().setMoveable(true); } ExtensibleModelUtils.createExtensibleModelTreeViewerColumns( viewer, getARESResource(), MetadataPackage.Literals.FUNCTION, exProblemView); getProblemPool().addView(problemView); getProblemPool().addView(exProblemView); } @Override protected void createActions() { super.createActions(); addAction = new ColumnViewerAddAction( getColumnViewer(), getEditingDomain(), null, MetadataPackage.Literals.MENU_LIST__FUNCTIONS, MetadataPackage.Literals.FUNCTION) { }; getActionRegistry().registerAction(addAction); getSelectionActions().add(addAction.getId()); insertAction = new ColumnViewerInsertAction( getColumnViewer(), getEditingDomain(), null, MetadataPackage.Literals.MENU_LIST__FUNCTIONS, MetadataPackage.Literals.FUNCTION); getActionRegistry().registerAction(insertAction); getSelectionActions().add(insertAction.getId()); 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()); IAction copyCellAction = new CopyCellAction(getColumnViewer()); getActionRegistry().registerAction(copyCellAction); IAction copyColumnAction = new CopyColumnAction(getColumnViewer()); getActionRegistry().registerAction(copyColumnAction); 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()); //ֻ������ getEditableControl().addEditableUnit(new ActionEditableUnit(addAction)); getEditableControl().addEditableUnit(new ActionEditableUnit(delAction)); getEditableControl().addEditableUnit(new ActionEditableUnit(actionMoveUp)); getEditableControl().addEditableUnit(new ActionEditableUnit(actionMoveDown)); } @Override public void setInput(Object input) { addAction.setOwner((EObject) input); insertAction.setOwner((EObject) input); pasteAction.setOwner((EObject) input); pasteAction.setReference(MetadataPackage.Literals.MENU_LIST__FUNCTIONS); actionMoveUp.setOwner((EObject) input); actionMoveUp.setReference(MetadataPackage.Literals.MENU_LIST__FUNCTIONS); actionMoveDown.setOwner((EObject) input); actionMoveDown.setReference(MetadataPackage.Literals.MENU_LIST__FUNCTIONS); super.setInput(input); } @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); action = getActionRegistry().getAction(IActionIDConstant.CV_MOVE_UP); manager.add(action); action = getActionRegistry().getAction(IActionIDConstant.CV_MOVE_DOWN); manager.add(action); } /* (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_INSERT); menuManager.add(action); action = getActionRegistry().getAction(IActionIDConstant.CV_ADD); menuManager.add(action); 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(MetadataPackage.Literals.MENU_LIST__FUNCTIONS); } @Override protected String getID() { return getClass().getName(); } @Override protected void addToolTipSupport(TreeViewer viewer) { ColumnViewerHoverToolTip.enableFor(viewer); } }