/** * Դ�������ƣ�RenameColumnComposite.java * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�JRES Studio * ģ�����ƣ�com.hundsun.ares.studio.jres.database.ui * ����˵����$desc * ����ĵ��� * ���ߣ� */ package com.hundsun.ares.studio.jres.clearinghouse.composite; import org.apache.commons.lang.StringUtils; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.TreeViewerColumn; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.jres.clearinghouse.ui.ColumnSelectionDialog; import com.hundsun.ares.studio.jres.database.constant.IDatabaseRefType; import com.hundsun.ares.studio.jres.metadata.constant.IMetadataRefType; import com.hundsun.ares.studio.jres.metadata.ui.editors.editingsupport.MetadataContentProposalHelper; import com.hundsun.ares.studio.jres.metadata.ui.editors.editingsupport.MetadataContentProposalProvider; import com.hundsun.ares.studio.jres.metadata.ui.viewer.MetadataItemEditingSupportDecorator; import com.hundsun.ares.studio.jres.model.chouse.ChouseFactory; import com.hundsun.ares.studio.jres.model.chouse.ChousePackage; import com.hundsun.ares.studio.jres.model.chouse.Modification; import com.hundsun.ares.studio.jres.model.chouse.RTCMDetail; import com.hundsun.ares.studio.jres.model.chouse.RenameTableColumnModification; import com.hundsun.ares.studio.jres.model.database.ColumnType; import com.hundsun.ares.studio.jres.model.database.TableColumn; import com.hundsun.ares.studio.jres.model.database.TableResourceData; import com.hundsun.ares.studio.ui.editor.editingsupport.JresTextEditingSupportWithContentAssist; import com.hundsun.ares.studio.ui.editor.viewers.EObjectColumnLabelProvider; /** * @author wangxh * */ public class RenameColumnComposite extends ModifyActionColumnComposite<RTCMDetail>{ /** * ���������ֶ� * @param parent * @param tableData * @param resource * @param action */ public RenameColumnComposite(Composite parent, TableResourceData tableData, IARESResource resource, Modification action) { super(parent, tableData, resource, action); } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.database.ui.editors.history.component.ModifyActionColumnComposite#getEReference() */ @Override protected EReference getEReference() { return ChousePackage.Literals.RENAME_TABLE_COLUMN_MODIFICATION__DETAILS; } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.database.ui.editors.history.component.ModifyActionColumnComposite#creatBlankItem() */ @Override protected RTCMDetail creatBlankItem() { return ChouseFactory.eINSTANCE.createRTCMDetail(); } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.database.ui.editors.history.component.ModifyActionColumnComposite#getActionItems(com.hundsun.ares.studio.jres.model.database.Modification) */ @Override protected EList<RTCMDetail> getActionItems(Modification modification) { return ((RenameTableColumnModification)action).getDetails(); } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.database.ui.editors.history.component.ModifyActionColumnComposite#creatColumnComposite(org.eclipse.jface.viewers.TreeViewer, com.hundsun.ares.studio.core.IARESResource) */ @Override protected void creatColumnComposite(TreeViewer treeViewer, IARESResource resource) { { EAttribute attribute = ChousePackage.Literals.RTCM_DETAIL__MARK; final TreeViewerColumn tvColumn = new TreeViewerColumn(treeViewer, SWT.LEFT); tvColumn.getColumn().setWidth(100); tvColumn.getColumn().setText("���"); EObjectColumnLabelProvider provider = new EObjectColumnLabelProvider(attribute); tvColumn.setLabelProvider(provider); //tvColumn.setEditingSupport(new TextEditingSupport(treeViewer, attribute)); tvColumn.getColumn().setMoveable(true); } // ���ֶ��� { EAttribute attribute = ChousePackage.Literals.RTCM_DETAIL__OLD_NAME; TreeViewerColumn tvColumn = new TreeViewerColumn(treeViewer, SWT.LEFT); tvColumn.getColumn().setWidth(200); tvColumn.getColumn().setText("���ֶ���"); EObjectColumnLabelProvider provider = new EObjectColumnLabelProvider(attribute); tvColumn.setLabelProvider(provider); //tvColumn.setEditingSupport(new TextEditingSupport(treeViewer, attribute)); ColumnProposalProvider proposalProvider = new ColumnProposalProvider(IDatabaseRefType.TableField); JresTextEditingSupportWithContentAssist es = new JresTextEditingSupportWithContentAssist( treeViewer, attribute, proposalProvider); es.setDecorator(new MetadataItemEditingSupportDecorator(attribute,resource)); tvColumn.setEditingSupport(es); } // ���ֶ��� { EAttribute attribute = ChousePackage.Literals.RTCM_DETAIL__NEW_NAME; TreeViewerColumn tvColumn = new TreeViewerColumn(treeViewer, SWT.LEFT); tvColumn.getColumn().setWidth(200); tvColumn.getColumn().setText("���ֶ���"); EObjectColumnLabelProvider provider = new EObjectColumnLabelProvider(attribute); tvColumn.setLabelProvider(provider); //tvColumn.setEditingSupport(new TextEditingSupport(treeViewer, attribute)); // 2. proposal provider MetadataContentProposalHelper helper = new MetadataContentProposalHelper(resource.getARESProject()); MetadataContentProposalProvider proposalProvider = new MetadataContentProposalProvider(helper, IMetadataRefType.StdField, resource.getARESProject()) { @Override protected boolean filter(Object inputItem, Object element) { if (element instanceof RTCMDetail) { RTCMDetail d = (RTCMDetail) element; TableColumn c = d.getSnapshot(); // �DZ�׼�ֶβ���ʾ if (c != null && c.getColumnType() == ColumnType.NON_STD_FIELD) return false; // c == null Ӧ���������ݣ������ڷDZ�Ŀ������� } return super.filter(inputItem, element); } }; // 3. ����EditingSupport, JresTextEditingSupportWithContentAssist es = new JresTextEditingSupportWithContentAssist( treeViewer, attribute, proposalProvider); es.setDecorator(new MetadataItemEditingSupportDecorator(attribute,resource)); tvColumn.setEditingSupport(es); } } @Override protected void handleAdd() { ColumnSelectionDialog dialog = new ColumnSelectionDialog(getShell(), resource, tableData) { protected Control createDialogArea(Composite parent) { Control control = super.createDialogArea(parent); getTreeViewer().addFilter(new ViewerFilter() { @Override public boolean select(Viewer viewer, Object parentElement, Object element) { if (element instanceof TableColumn) { TableColumn column = (TableColumn) element; for (RTCMDetail removed : input) { if (StringUtils.equals(column.getName(), removed.getSnapshot().getName())) { return false; } } return true; } return false; } }); return control; } }; dialog.setTitle("ѡ��Ҫɾ������"); if (dialog.open() == IDialogConstants.OK_ID) { TableColumn[] columns = dialog.getSelection(); for (TableColumn c : columns) { RTCMDetail detail = ChouseFactory.eINSTANCE.createRTCMDetail(); detail.setSnapshot(EcoreUtil.copy(c)); input.add(detail); } treeViewer.refresh(); } } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.database.ui.editors.history.component.ModifyActionComposite#initAction(com.hundsun.ares.studio.jres.model.database.Modification) */ @Override protected void initAction(Modification modification) { if(modification != null && modification instanceof RenameTableColumnModification){ action = (RenameTableColumnModification) modification; } else { action = ChouseFactory.eINSTANCE.createRenameTableColumnModification(); } } }