/** * <p>Copyright: Copyright (c) 2011</p> * <p>Company: �������ӹɷ����޹�˾</p> */ package com.hundsun.ares.studio.jres.database.ui.editors.blocks; import java.util.Collection; import java.util.EventObject; import java.util.HashSet; import java.util.Set; import org.apache.commons.lang.StringUtils; import org.eclipse.core.resources.IMarker; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.common.command.CommandStack; import org.eclipse.emf.ecore.EAttribute; 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.IStructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.TreeViewerColumn; import org.eclipse.swt.SWT; import org.eclipse.swt.events.MouseAdapter; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.ide.IDE; import com.hundsun.ares.studio.core.IARESProject; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.core.builder.IAresMarkers; import com.hundsun.ares.studio.jres.database.ui.actions.AddNonStdFiledColumnAction; import com.hundsun.ares.studio.jres.database.ui.viewer.TableColumnLabelProvider; import com.hundsun.ares.studio.jres.database.ui.viewer.TableColumnRefLabelProvider; import com.hundsun.ares.studio.jres.database.utils.DatabaseUtils; import com.hundsun.ares.studio.jres.metadata.constant.IMetadataRefType; import com.hundsun.ares.studio.jres.metadata.constant.IMetadataResType; import com.hundsun.ares.studio.jres.metadata.ui.editors.editingsupport.MetadataContentProposalHelper; import com.hundsun.ares.studio.jres.metadata.ui.editors.editingsupport.MetadataContentProposalHelperWipeOffRepeatStd; import com.hundsun.ares.studio.jres.metadata.ui.editors.editingsupport.MetadataContentProposalProvider; import com.hundsun.ares.studio.jres.model.database.ColumnType; import com.hundsun.ares.studio.jres.model.database.DatabasePackage; import com.hundsun.ares.studio.jres.model.database.TableColumn; import com.hundsun.ares.studio.jres.model.database.TableKey; import com.hundsun.ares.studio.jres.model.database.util.DatabaseUtil; import com.hundsun.ares.studio.jres.model.metadata.MetadataItem; import com.hundsun.ares.studio.jres.model.metadata.StandardField; import com.hundsun.ares.studio.jres.model.metadata.provider.LongTextEditingSupport; import com.hundsun.ares.studio.model.reference.ReferenceInfo; import com.hundsun.ares.studio.reference.ReferenceManager; 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.CopyCellAction; 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.BooleanEditingSupport; 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.CheckBoxColumnLabelProvider; 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; /** * @author wangxh * */ public class TableColumnViewerBlock extends TreeViewerBlock { protected ColumnViewerAddAction addAction; protected AddNonStdFiledColumnAction addNonStdAction; protected ColumnViewerInsertAction insertAction; protected ColumnViewerMoveUpAction moveUpAction; protected ColumnViewerMoveDownAction moveDownAction; protected ColumnViewerMoveTopAction moveTopAction; protected ColumnViewerMoveBottomAction moveBottomAction; protected ColumnViewerPasteAction pasteAction; protected IAction delAction; protected IAction copyAction; /** * @param editingDomain * @param resource * @param problemPool */ public TableColumnViewerBlock(EditingDomain editingDomain, IARESResource resource, IProblemPool problemPool) { super(); this.editingDomain = editingDomain; this.resource = resource; this.problemPool = problemPool; } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.pages.ColumnViewerBlock#getColumnViewerContentProvider() */ @Override protected IContentProvider getColumnViewerContentProvider() { return new ReferenceTreeContentProvider((EReference) getEReference()); } /** * ����Column�б��Ӧ����ģ�͵��ĸ�����, ����Ϊnull * @return */ protected EReference getEReference() { return DatabasePackage.Literals.TABLE_RESOURCE_DATA__COLUMNS; } /* (non-Javadoc) * @see com.hundsun.ares.studio.ui.editor.blocks.ColumnViewerBlock#getHeadColumnFeature() */ @Override protected EStructuralFeature getHeadColumnFeature() { return DatabasePackage.Literals.TABLE_COLUMN__FIELD_NAME; } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.pages.ColumnViewerBlock#createMenus(org.eclipse.jface.action.IMenuManager) */ @Override protected void createMenus(IMenuManager menuManager) { IAction action = getActionRegistry().getAction(IActionIDConstant.CV_ADD); menuManager.add(action); IARESResource res = getARESResource(); if (res != null) { if (DatabaseUtil.isNonStdFiledAllowed(res.getARESProject())) { action = getActionRegistry().getAction(AddNonStdFiledColumnAction.ID); 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(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); } @Override protected void configureColumnViewer(final TreeViewer viewer) { super.configureColumnViewer(viewer); viewer.getControl().addMouseListener(new MouseAdapter() { @Override public void mouseUp(MouseEvent e) { IStructuredSelection ss = (IStructuredSelection) viewer.getSelection(); if (ss.getFirstElement() instanceof TableColumn) { if((e.stateMask & SWT.CTRL) != 0 && e.button == 1){ TableColumn column = (TableColumn) ss.getFirstElement(); ReferenceInfo info = ReferenceManager.getInstance().getFirstReferenceInfo(resource.getARESProject(), IMetadataRefType.StdField, column.getFieldName(), true); Object infoObj = info.getObject(); if (infoObj instanceof StandardField) { String dictType = ((StandardField) infoObj).getDictionaryType(); if (StringUtils.isNotBlank(dictType)) { info = ReferenceManager.getInstance().getFirstReferenceInfo(resource.getARESProject(), IMetadataRefType.Dict, dictType, true); Object dictInfo = info.getObject(); if (dictInfo != null) { try { IARESResource dict = resource.getARESProject().findResource(IMetadataResType.Dict, IMetadataResType.Dict); IMarker marker = dict.getResource().createMarker(IAresMarkers.BOOK_MARKER_ID); marker.setAttribute(IMarker.LOCATION, ((MetadataItem)dictInfo).eResource().getURIFragment((MetadataItem)dictInfo)); String editorId = IDE.getEditorDescriptor(dict.getElementName()).getId(); marker.setAttribute(IDE.EDITOR_ID_ATTR, editorId); IDE.openEditor(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(), marker); marker.delete(); } catch (PartInitException e1) { e1.printStackTrace(); } catch (Exception e1) { e1.printStackTrace(); } } } } } } } }); } @Override protected void createColumns(TreeViewer viewer) { final TreeViewer treeViewer = (TreeViewer) viewer; // ����һ����� EObjectColumnViewerProblemView problemView = new EObjectColumnViewerProblemView(treeViewer); // ������չ�� EObjectColumnViewerProblemView exProblemView = new ExtensibleModelColumnViewerProblemView(treeViewer); // ��� { EAttribute attribute = DatabasePackage.Literals.TABLE_COLUMN__MARK; final TreeViewerColumn tvColumn = new TreeViewerColumn(treeViewer, SWT.LEFT); tvColumn.getColumn().setWidth(50); tvColumn.getColumn().setText("���"); EObjectColumnLabelProvider provider = new TableColumnLabelProvider(attribute , getARESResource()); provider.setDiagnosticProvider(problemView); tvColumn.setLabelProvider(provider); tvColumn.setEditingSupport(new TextEditingSupport(treeViewer, attribute)); tvColumn.getColumn().setMoveable(true); } // ���õı�׼�ֶ� { EAttribute attribute = DatabasePackage.Literals.TABLE_COLUMN__FIELD_NAME; final TreeViewerColumn tvColumn = new TreeViewerColumn(treeViewer, SWT.LEFT); tvColumn.getColumn().setWidth(130); tvColumn.getColumn().setText("�ֶ���"); EObjectColumnLabelProvider provider = new TableColumnLabelProvider(attribute , getARESResource()); provider.setDiagnosticProvider(problemView); tvColumn.setLabelProvider(provider); // tvColumn.setEditingSupport(new TextEditingSupport(treeViewer, attribute)); // 2. proposal provider MetadataContentProposalHelperWipeOffRepeatStd helper = new MetadataContentProposalHelperWipeOffRepeatStd(resource.getARESProject()); MetadataContentProposalProvider proposalProvider = new MetadataContentProposalProvider(helper, IMetadataRefType.StdField, resource.getARESProject()) { @Override protected boolean filter(Object inputItem, Object element) { if (element instanceof TableColumn) { TableColumn c = (TableColumn) element; // �DZ�׼�ֶβ���ʾ if (c.getColumnType() == ColumnType.NON_STD_FIELD) return false; } return super.filter(inputItem, element); } }; // 3. ����EditingSupport, JresTextEditingSupportWithContentAssist es = new JresTextEditingSupportWithContentAssist( viewer, attribute, proposalProvider); tvColumn.setEditingSupport(es); } // ������ { final TreeViewerColumn tvColumn = new TreeViewerColumn(treeViewer, SWT.LEFT); tvColumn.getColumn().setWidth(100); tvColumn.getColumn().setText("������"); TableColumnRefLabelProvider provider = new TableColumnRefLabelProvider(resource.getBundle(), TableColumnRefLabelProvider.TYPE.ChineseName){ @Override public Color getBackground(Object element) { if (getARESResource().isReadOnly()) { return Display.getDefault().getSystemColor(SWT.COLOR_GRAY); } return super.getBackground(element); } }; tvColumn.setLabelProvider(provider); EAttribute attribute = DatabasePackage.Literals.TABLE_COLUMN__CHINESE_NAME; TextEditingSupport es = new TextEditingSupport(treeViewer, attribute); es.setDecorator(new TableColumnEditingSupportDecorator(getARESResource().getARESProject(), attribute)); tvColumn.setEditingSupport(es); tvColumn.getColumn().setMoveable(true); } // �ֶ����� { EAttribute attribute = DatabasePackage.Literals.TABLE_COLUMN__DATA_TYPE; final TreeViewerColumn tvColumn = new TreeViewerColumn(treeViewer, SWT.LEFT); tvColumn.getColumn().setWidth(100); tvColumn.getColumn().setText("�ֶ�����"); TableColumnLabelProvider provider = new TableColumnLabelProvider(attribute, getARESResource()); provider.setDiagnosticProvider(problemView); tvColumn.setLabelProvider(provider); // 1. ��ȡaresProject final IARESProject project = getARESResource() == null ? null : getARESResource().getARESProject(); // 2. proposal provider MetadataContentProposalHelper helper = new MetadataContentProposalHelper(project); MetadataContentProposalProvider proposalProvider = new MetadataContentProposalProvider(helper, IMetadataRefType.BizType, project); // 3. ����EditingSupport, JresTextEditingSupportWithContentAssist es = new JresTextEditingSupportWithContentAssist(treeViewer, attribute, proposalProvider); es.setDecorator(new TableColumnEditingSupportDecorator(getARESResource().getARESProject(), attribute)); tvColumn.setEditingSupport(es); tvColumn.getColumn().setMoveable(true); } // �ֶ�˵�� { final TreeViewerColumn tvColumn = new TreeViewerColumn(treeViewer, SWT.LEFT); tvColumn.getColumn().setWidth(150); tvColumn.getColumn().setText("�ֶ�˵��"); TableColumnRefLabelProvider provider = new TableColumnRefLabelProvider(resource.getBundle(), TableColumnRefLabelProvider.TYPE.Desciption){ @Override public String getToolTipText(Object element) { return getText(element); } @Override public Color getBackground(Object element) { if (getARESResource().isReadOnly()) { return Display.getDefault().getSystemColor(SWT.COLOR_GRAY); } return super.getBackground(element); } }; tvColumn.setLabelProvider(provider); IARESProject project = getARESResource() == null ? null : getARESResource().getARESProject(); EAttribute attribute = DatabasePackage.Literals.TABLE_COLUMN__DESCRIPTION; TextEditingSupport es = new TextEditingSupport(treeViewer, attribute); es.setDecorator(new TableColumnEditingSupportDecorator(project, attribute)); tvColumn.setEditingSupport(es); tvColumn.getColumn().setMoveable(true); } // Ĭ��ֵ { EAttribute attribute = DatabasePackage.Literals.TABLE_COLUMN__DEFAULT_VALUE; final TreeViewerColumn tvColumn = new TreeViewerColumn(treeViewer, SWT.LEFT); tvColumn.getColumn().setWidth(100); tvColumn.getColumn().setText("Ĭ��ֵ"); EObjectColumnLabelProvider provider = new TableColumnLabelProvider(attribute , getARESResource()); provider.setDiagnosticProvider(problemView); tvColumn.setLabelProvider(provider); MetadataContentProposalHelperWipeOffRepeatStd helper = new MetadataContentProposalHelperWipeOffRepeatStd(resource.getARESProject()); MetadataContentProposalProvider proposalProvider = new MetadataContentProposalProvider(helper, IMetadataRefType.DefValue, resource.getARESProject()); // 3. ����EditingSupport, JresTextEditingSupportWithContentAssist es = new JresTextEditingSupportWithContentAssist( viewer, attribute, proposalProvider); es.setDecorator(new TableColumnEditingSupportDecorator(getARESResource().getARESProject(), attribute)); tvColumn.setEditingSupport(es); tvColumn.getColumn().setMoveable(true); } // �Ƿ�Ϊ�� { EAttribute attribute = DatabasePackage.Literals.TABLE_COLUMN__NULLABLE; final TreeViewerColumn tvColumn = new TreeViewerColumn(treeViewer, SWT.LEFT); tvColumn.getColumn().setWidth(80); tvColumn.getColumn().setText("�����"); CheckBoxColumnLabelProvider provider = new CheckBoxColumnLabelProvider(attribute , getARESResource()){ @Override public Color getBackground(Object element) { TableColumn tc = (TableColumn) element; //if (tc.isPrimaryKey()) { if(DatabaseUtils.isPrimaryKey(tc)){ return Display.getDefault().getSystemColor(SWT.COLOR_GRAY); } return super.getBackground(element); } @Override public Image getImage(Object element) { TableColumn tc = (TableColumn) element; // if (tc.isPrimaryKey()) { if(DatabaseUtils.isPrimaryKey(tc)){ return null; } return super.getImage(element); } }; tvColumn.setLabelProvider(provider); BooleanEditingSupport support = new BooleanEditingSupport(treeViewer, attribute); support.setDecorator(new DatabaseDefineEditingSupportDecorator()); tvColumn.setEditingSupport(support); tvColumn.getColumn().setMoveable(true); } // ��ע { EAttribute attribute = DatabasePackage.Literals.TABLE_COLUMN__COMMENTS; final TreeViewerColumn tvColumn = new TreeViewerColumn(treeViewer, SWT.LEFT); tvColumn.getColumn().setWidth(150); tvColumn.getColumn().setText("��ע"); EObjectColumnLabelProvider provider = new TableColumnLabelProvider(attribute , getARESResource()){ @Override public String getToolTipText(Object element) { String text = super.getToolTipText(element); if(StringUtils.isBlank(text)){ return getText(element); } return text; } }; provider.setDiagnosticProvider(problemView); tvColumn.setLabelProvider(provider); tvColumn.setEditingSupport(new LongTextEditingSupport(treeViewer, attribute)); tvColumn.getColumn().setMoveable(true); } // ��չ��Ϣ ExtensibleModelUtils.createExtensibleModelTreeViewerColumns( treeViewer, getARESResource(), DatabasePackage.Literals.TABLE_COLUMN, exProblemView); // 2012-05-15 sundl �ڷDZ༭����ʹ�õ�ʱ��problemPool������null if (getProblemPool() != null) { getProblemPool().addView(problemView); getProblemPool().addView(exProblemView); } } @Override protected void createActions() { super.createActions(); createAddAction(); createAddNonStdAction(); createInsertAction(); createDeleteAction(); createMoveToTopAction(); createMoveUpAction(); createMoveDownAction(); createMoveToBottomAction(); createCopyAction(); createPasteAction(); createCellAction(); } /** * ����Ĭ�ϵ��½�Action */ protected void createAddAction() { addAction = new ColumnViewerAddAction( getColumnViewer(), getEditingDomain(), null, getEReference(), DatabasePackage.Literals.TABLE_COLUMN); addAction.setText("���ӱ�׼�ֶ�"); getActionRegistry().registerAction(addAction); getSelectionActions().add(addAction.getId()); //ֻ������ // 2012-05-15 sundl �༭����ʹ�õ�ʱ�򣬿�����null if (getEditableControl() != null) { getEditableControl().addEditableUnit(new ActionEditableUnit(addAction)); } } /** * �½��DZ�׼�ֶε�Action */ protected void createAddNonStdAction() { addNonStdAction = new AddNonStdFiledColumnAction( getColumnViewer(), getEditingDomain(), null, getEReference(), DatabasePackage.Literals.TABLE_COLUMN); getActionRegistry().registerAction(addNonStdAction); getSelectionActions().add(addNonStdAction.getId()); //ֻ������ // 2012-05-15 sundl �༭����ʹ�õ�ʱ�򣬿�����null if (getEditableControl() != null) { getEditableControl().addEditableUnit(new ActionEditableUnit(addNonStdAction)); } } protected void createInsertAction() { insertAction = new ColumnViewerInsertAction( getColumnViewer(), getEditingDomain(), null, getEReference(), DatabasePackage.Literals.TABLE_COLUMN); getActionRegistry().registerAction(insertAction); getSelectionActions().add(insertAction.getId()); //ֻ������ // 2012-05-15 sundl �༭����ʹ�õ�ʱ�򣬿�����null if (getEditableControl() != null) { getEditableControl().addEditableUnit(new ActionEditableUnit(insertAction)); } } protected void createDeleteAction() { delAction = new ColumnViewerDeleteAction(getColumnViewer(), getEditingDomain()); getActionRegistry().registerAction(delAction); getSelectionActions().add(delAction.getId()); //ֻ������ // 2012-05-15 sundl �༭����ʹ�õ�ʱ�򣬿�����null if (getEditableControl() != null) { getEditableControl().addEditableUnit(new ActionEditableUnit(delAction)); } } protected void createMoveToTopAction() { moveTopAction = new ColumnViewerMoveTopAction(getColumnViewer(), getEditingDomain()); moveTopAction.setReference(getEReference()); getActionRegistry().registerAction(moveTopAction); getSelectionActions().add(moveTopAction.getId()); getStackActions().add(moveTopAction.getId()); //ֻ������ // 2012-05-15 sundl �༭����ʹ�õ�ʱ�򣬿�����null if (getEditableControl() != null) { getEditableControl().addEditableUnit(new ActionEditableUnit(moveTopAction)); } } protected void createMoveUpAction() { moveUpAction = new ColumnViewerMoveUpAction(getColumnViewer(), getEditingDomain()); moveUpAction.setReference(getEReference()); getActionRegistry().registerAction(moveUpAction); getSelectionActions().add(moveUpAction.getId()); getStackActions().add(moveUpAction.getId()); //ֻ������ // 2012-05-15 sundl �༭����ʹ�õ�ʱ�򣬿�����null if (getEditableControl() != null) { getEditableControl().addEditableUnit(new ActionEditableUnit(moveUpAction)); } } protected void createMoveDownAction() { moveDownAction = new ColumnViewerMoveDownAction(getColumnViewer(), getEditingDomain()); moveDownAction.setReference(getEReference()); getActionRegistry().registerAction(moveDownAction); getSelectionActions().add(moveDownAction.getId()); getStackActions().add(moveDownAction.getId()); //ֻ������ // 2012-05-15 sundl �༭����ʹ�õ�ʱ�򣬿�����null if (getEditableControl() != null) { getEditableControl().addEditableUnit(new ActionEditableUnit(moveDownAction)); } } protected void createMoveToBottomAction() { moveBottomAction = new ColumnViewerMoveBottomAction(getColumnViewer(), getEditingDomain()); moveBottomAction.setReference(getEReference()); getActionRegistry().registerAction(moveBottomAction); getSelectionActions().add(moveBottomAction.getId()); getStackActions().add(moveBottomAction.getId()); //ֻ������ // 2012-05-15 sundl �༭����ʹ�õ�ʱ�򣬿�����null if (getEditableControl() != null) { getEditableControl().addEditableUnit(new ActionEditableUnit(moveBottomAction)); } } protected void createCopyAction() { copyAction = new ColumnViewerCopyAction(getColumnViewer()); getActionRegistry().registerAction(copyAction); getSelectionActions().add(copyAction.getId()); } protected void createPasteAction() { pasteAction = new ColumnViewerPasteAction(getColumnViewer(), getEditingDomain(), null, null); pasteAction.setReference(getEReference()); getActionRegistry().registerAction(pasteAction); getClipboardActions().add(pasteAction.getId()); //ֻ������ // 2012-05-15 sundl �༭����ʹ�õ�ʱ�򣬿�����null if (getEditableControl() != null) { getEditableControl().addEditableUnit(new ActionEditableUnit(pasteAction)); } } /** * �����ı�Acation */ private void createCellAction(){ IAction copyCellAction = new CopyCellAction(getColumnViewer()); getActionRegistry().registerAction(copyCellAction); } /* (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); addNonStdAction.setOwner((EObject) input); insertAction.setOwner((EObject) input); moveDownAction.setOwner((EObject) input); moveUpAction.setOwner((EObject) input); moveTopAction.setOwner((EObject) input); moveBottomAction.setOwner((EObject) input); pasteAction.setOwner((EObject) input); super.setInput(input); } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.pages.ColumnViewerBlock#createButtons(com.hundsun.ares.studio.jres.ui.actions.ButtonGroupManager) */ @Override protected void createToolbarItems(ToolBarManager buttonManager) { // ������ť�б� IAction action = getActionRegistry().getAction(IActionIDConstant.CV_ADD); buttonManager.add(action); if (DatabaseUtil.isNonStdFiledAllowed(getARESResource().getARESProject())) { if (addNonStdAction != null) buttonManager.add(addNonStdAction); } action = getActionRegistry().getAction(IActionIDConstant.CV_INSERT); if(null != action) 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#getID() */ @Override protected String getID() { return getClass().getName(); } @Override protected void addToolTipSupport(TreeViewer viewer) { ColumnViewerHoverToolTip.enableFor(viewer); } @Override public void commandStackChanged(EventObject event) { RefreshViewerJob.refresh(getColumnViewer(), null, false); Command cmd = ((CommandStack)event.getSource()).getMostRecentCommand(); if (cmd != null) { Collection result = cmd.getResult(); if(result != null){ Set<TableColumn> affectObjs = new HashSet<TableColumn>(); for(Object obj : result){ if(obj instanceof TableKey){ affectObjs.addAll(((TableKey)obj).getColumns()); }else if(obj instanceof TableColumn){ affectObjs.add((TableColumn) obj); } } if(affectObjs.size()>0){ RefreshViewerJob.refresh(getColumnViewer(), affectObjs.toArray()); } } RefreshViewerJob.refresh(getColumnViewer(), cmd.getAffectedObjects().toArray()); } super.commandStackChanged(event); } }