/** * Դ�������ƣ�ErrorInfoBlock.java * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�JRES Studio * ģ�����ƣ�com.hundsun.ares.studio.biz.ui * ����˵����$desc * ����ĵ��� * ���ߣ�sundl */ package com.hundsun.ares.studio.biz.ui.block; import java.util.ArrayList; import java.util.List; 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.TableViewer; import org.eclipse.jface.viewers.TableViewerColumn; import org.eclipse.swt.SWT; import com.hundsun.ares.studio.biz.BizInterface; import com.hundsun.ares.studio.biz.ui.editor.page.ErrnoColumnLabelProvider; import com.hundsun.ares.studio.biz.ui.editor.page.ErrnoContentPropasolHelper; import com.hundsun.ares.studio.biz.ui.editor.page.ErrnoContentProposalProvider; import com.hundsun.ares.studio.core.IARESProject; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.jres.metadata.constant.IMetadataRefType; import com.hundsun.ares.studio.jres.metadata.ui.actions.CopyAction; import com.hundsun.ares.studio.jres.metadata.ui.actions.IMetadataActionIDConstant; import com.hundsun.ares.studio.jres.metadata.ui.actions.PasteAction; import com.hundsun.ares.studio.jres.metadata.ui.actions.RemoveAction; import com.hundsun.ares.studio.jres.metadata.ui.viewer.MetadataHeaderColumnLabelProvider; import com.hundsun.ares.studio.jres.model.metadata.MetadataCategory; import com.hundsun.ares.studio.jres.model.metadata.MetadataPackage; 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.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.TableViewerBlock; 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.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; /** * @author sundl * */ public class ErrorInfoBlock extends TableViewerBlock{ // �༭��Parameter��Ӧ������ĸ����ԣ� // ���������������������Ӧ��������������Reference������Ƕ������ԣ����Ƕ����������Reference. protected EReference reference; ColumnViewerAddAction addAction; public ErrorInfoBlock(EReference reference, EditingDomain editingDomain, IARESResource resource,IProblemPool problemPool) { 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(); } /** * @return the reference */ public EReference getReference() { return reference; } /** * @param reference the reference to set */ public void setReference(EReference reference) { this.reference = reference; } /* (non-Javadoc) * @see com.hundsun.ares.studio.ui.editor.blocks.ColumnViewerBlock#getColumnViewerContentProvider() */ @Override protected IContentProvider getColumnViewerContentProvider() { return new ErrorInfoContentProvider(); } /* (non-Javadoc) * @see com.hundsun.ares.studio.ui.editor.blocks.ColumnViewerBlock#createColumns(org.eclipse.jface.viewers.ColumnViewer) */ @Override protected void createColumns(TableViewer viewer) { EObjectColumnViewerProblemView problemView = new EObjectColumnViewerProblemView(viewer); IARESProject project = resource.getARESProject(); /**�����*/ { // ���������� EAttribute attribute = MetadataPackage.Literals.ERROR_NO_ITEM__NO; // ��������� TableViewerColumn column = new TableViewerColumn(viewer, SWT.LEFT); column.getColumn().setText("�����"); column.getColumn().setWidth(200); // ���ñ�ǩ�ṩ�� EObjectColumnLabelProvider provider = new MetadataHeaderColumnLabelProvider(attribute , getARESResource()){ @Override public String getText(Object element) { EAttribute attribute = MetadataPackage.Literals.ERROR_NO_ITEM__NO; if (element instanceof MetadataCategory) { attribute = MetadataPackage.Literals.NAMED_ELEMENT__NAME; } EObject owner = getOwner(element); if (attribute != null && owner != null && owner.eClass().getEAllAttributes().contains(attribute)) { Object value = owner.eGet(attribute); if (value == null) { value = ""; } return String.valueOf(value ); } return ""; } }; provider.setDiagnosticProvider(problemView); column.setLabelProvider(provider); // ���ñ༭֧�� ErrnoContentPropasolHelper helper = new ErrnoContentPropasolHelper(); ErrnoContentProposalProvider cpProvider = new ErrnoContentProposalProvider(helper, IMetadataRefType.ErrNo_No, project); JresTextEditingSupportWithContentAssist es = new JresTextEditingSupportWithContentAssist( viewer, attribute, cpProvider); column.setEditingSupport(es); column.getColumn().setMoveable(true); } /**������ʾ��Ϣ*/ { // ���������� EAttribute attribute = MetadataPackage.Literals.ERROR_NO_ITEM__MESSAGE; // ��������� TableViewerColumn comlumn = new TableViewerColumn(viewer, SWT.LEFT); comlumn.getColumn().setText("������Ϣ"); comlumn.getColumn().setWidth(200); // ���ñ�ǩ�ṩ�� EObjectColumnLabelProvider provider = new ErrnoColumnLabelProvider(attribute, project); provider.setDiagnosticProvider(problemView); comlumn.setLabelProvider(provider); // ���ñ༭֧�� // TextEditingSupport es = new TextEditingSupport(viewer, attribute); // es.setDecorator(new MetadataItemEditingSupportDecorator(attribute,getARESResource())); // comlumn.setEditingSupport(es); comlumn.getColumn().setMoveable(true); } /**���󼶱�*/ { // ���������� EAttribute attribute = MetadataPackage.Literals.ERROR_NO_ITEM__LEVEL; // ��������� TableViewerColumn comlumn = new TableViewerColumn(viewer, SWT.LEFT); comlumn.getColumn().setText("���󼶱�"); comlumn.getColumn().setWidth(100); // ���ñ�ǩ�ṩ�� EObjectColumnLabelProvider provider = new ErrnoColumnLabelProvider(attribute, project); provider.setDiagnosticProvider(problemView); comlumn.setLabelProvider(provider); // ���ñ༭֧�� // TextEditingSupport es = new TextEditingSupport(viewer, attribute); // //es.setDecorator(new MetadataItemEditingSupportDecorator(attribute)); // comlumn.setEditingSupport(es); comlumn.getColumn().setMoveable(true); } /**��ע*/ { // ���������� EAttribute attribute = MetadataPackage.Literals.NAMED_ELEMENT__DESCRIPTION; // ��������� TableViewerColumn comlumn = new TableViewerColumn(viewer, SWT.LEFT); comlumn.getColumn().setText("˵��"); comlumn.getColumn().setWidth(200); // ���ñ�ǩ�ṩ�� EObjectColumnLabelProvider provider = new ErrnoColumnLabelProvider(attribute, project); provider.setDiagnosticProvider(problemView); comlumn.setLabelProvider(provider); // ���ñ༭֧�� // TextEditingSupport es = new LongTextEditingSupport(viewer, attribute); // es.setDecorator(new MetadataItemEditingSupportDecorator(attribute,getARESResource())); // comlumn.setEditingSupport(es); comlumn.getColumn().setMoveable(true); } // ������չ��֧�� ExtensibleModelUtils.createExtensibleModelTableViewerColumns(getColumnViewer(), getARESResource(), MetadataPackage.Literals.ERROR_NO_ITEM, problemView); // getEditableControl().addEditableUnit(new JresDefaultEditableUnit(viewer.getControl())); getProblemPool().addView(problemView); } @Override protected void createActions() { //ע�����е�action super.createActions(); List<IAction> actions = new ArrayList<IAction>(); addAction = new ColumnViewerAddAction( getColumnViewer(), getEditingDomain(), MetadataPackage.Literals.ERROR_NO_ITEM); getActionRegistry().registerAction(addAction); getSelectionActions().add(addAction.getId()); actions.add(addAction); IAction action = new RemoveAction(getColumnViewer(), getEditingDomain()); getActionRegistry().registerAction(action); getSelectionActions().add(action.getId()); actions.add(action); action = new ColumnViewerDeleteAction(getColumnViewer(), getEditingDomain()); getActionRegistry().registerAction(action); getSelectionActions().add(action.getId()); actions.add(action); action = new ColumnViewerMoveUpAction(getColumnViewer(), getEditingDomain(), null, this.reference); getActionRegistry().registerAction(action); getSelectionActions().add(action.getId()); getStackActions().add(action.getId()); actions.add(action); action = new ColumnViewerMoveDownAction(getColumnViewer(), getEditingDomain(),null, this.reference); getActionRegistry().registerAction(action); getSelectionActions().add(action.getId()); getStackActions().add(action.getId()); actions.add(action); IAction copyAction = new CopyAction(getColumnViewer()); getActionRegistry().registerAction(copyAction); getSelectionActions().add(copyAction.getId()); IAction copyCellAction = new CopyCellAction(getColumnViewer()); getActionRegistry().registerAction(copyCellAction); IAction copyColumnAction = new CopyColumnAction(getColumnViewer()); getActionRegistry().registerAction(copyColumnAction); IAction pasteAction = new PasteAction(getColumnViewer(), getEditingDomain(), MetadataPackage.Literals.METADATA_CATEGORY, MetadataPackage.Literals.ERROR_NO_ITEM); getActionRegistry().registerAction(pasteAction); getSelectionActions().add(pasteAction.getId()); getClipboardActions().add(pasteAction.getId()); for (IAction item : actions ) { getEditableControl().addEditableUnit(new ActionEditableUnit(item)); } } public void setInput(Object input) { addAction.setOwner((BizInterface) input); addAction.setReference(reference); super.setInput(input); } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.metadata.ui.editors.MetadataListPage#createButtons(com.hundsun.ares.studio.jres.ui.actions.ButtonGroupManager) */ @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); } @Override protected void createMenus(IMenuManager menuManager) { //��������ű༭�����Ҽ��˵� IAction action = getActionRegistry().getAction(IMetadataActionIDConstant.CV_ADD_ITEM); menuManager.add(action); menuManager.add(new Separator()); action = getActionRegistry().getAction(IActionIDConstant.CV_DELETE); menuManager.add(action); action = getActionRegistry().getAction(IMetadataActionIDConstant.CV_REMOVE); menuManager.add(action); menuManager.add(new Separator()); action = getActionRegistry().getAction(IMetadataActionIDConstant.CV_MOVE_UP); menuManager.add(action); action = getActionRegistry().getAction(IMetadataActionIDConstant.CV_MOVE_DOWN); menuManager.add(action); 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(IMetadataActionIDConstant.CV_INSERT_ITEM); menuManager.add(action); } }