/** * <p>Copyright: Copyright (c) 2014</p> * <p>Company: �������ӹɷ����޹�˾</p> */ package com.hundsun.ares.studio.jres.clearinghouse.composite; import org.apache.commons.io.CopyUtils; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.ecore.EStructuralFeature; 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.swt.SWT; import org.eclipse.swt.widgets.Composite; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.jres.clearinghouse.provider.RemoveIndexFieldColumnLabelProvider; import com.hundsun.ares.studio.jres.clearinghouse.support.IndexFeildColumnEditingSupport; import com.hundsun.ares.studio.jres.clearinghouse.ui.IndexSelectDialog; 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.RemoveIndexField; import com.hundsun.ares.studio.jres.model.chouse.RemoveIndexFieldModification; import com.hundsun.ares.studio.jres.model.database.TableIndex; import com.hundsun.ares.studio.jres.model.database.TableIndexColumn; import com.hundsun.ares.studio.jres.model.database.TableResourceData; import com.hundsun.ares.studio.ui.editor.editingsupport.TextEditingSupport; import com.hundsun.ares.studio.ui.editor.viewers.EObjectColumnLabelProvider; /** * @author liaogc * */ public class RemoveIndexFieldComposite extends ModifyActionColumnComposite<RemoveIndexField>{ /** * @param parent * @param tableData * @param resource * @param action */ public RemoveIndexFieldComposite(Composite parent, TableResourceData tableData, IARESResource resource, Modification action) { super(parent, tableData, resource, action); // TODO Auto-generated constructor stub } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.clearinghouse.composite.ModifyActionColumnComposite#getEReference() */ @Override protected EReference getEReference() { return ChousePackage.Literals.REMOVE_INDEX_FIELD_MODIFICATION__INDEXS; } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.clearinghouse.composite.ModifyActionColumnComposite#creatBlankItem() */ @Override protected RemoveIndexField creatBlankItem() { return ChouseFactory.eINSTANCE.createRemoveIndexField(); } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.clearinghouse.composite.ModifyActionColumnComposite#getActionItems(com.hundsun.ares.studio.jres.model.chouse.Modification) */ @Override protected EList<RemoveIndexField> getActionItems(Modification modification) { return ((RemoveIndexFieldModification)action).getIndexs(); } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.clearinghouse.composite.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.REMOVE_INDEX_FIELD__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.REMOVE_INDEX_FIELD__NAME; TreeViewerColumn tvColumn = new TreeViewerColumn(treeViewer, SWT.LEFT); tvColumn.getColumn().setWidth(150); tvColumn.getColumn().setText("������"); EObjectColumnLabelProvider provider = new EObjectColumnLabelProvider(attribute); tvColumn.setLabelProvider(provider); } // �����ֶ��б� { EStructuralFeature feature = ChousePackage.Literals.REMOVE_INDEX_FIELD__INDEX_FIELDS; TreeViewerColumn tvColumn = new TreeViewerColumn(treeViewer, SWT.LEFT); tvColumn.getColumn().setWidth(250); tvColumn.getColumn().setText("ɾ�������ֶ��б�"); EObjectColumnLabelProvider provider = new RemoveIndexFieldColumnLabelProvider(feature); tvColumn.setLabelProvider(provider); tvColumn.setEditingSupport(new IndexFeildColumnEditingSupport(treeViewer, feature,resource)); tvColumn.getColumn().setMoveable(true); } this.treeViewer.setInput(((RemoveIndexFieldModification)this.action).getIndexs()); } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.clearinghouse.composite.ModifyActionColumnComposite#handleAdd() */ @Override protected void handleAdd() { IndexSelectDialog dialog = new IndexSelectDialog(getShell(), resource, tableData); dialog.setTitle("ѡ��Ҫɾ���ֶε�����"); if (dialog.open() == IDialogConstants.OK_ID) { TableIndex[] tableIndexs = dialog.getSelection(); for (TableIndex tableIndex : tableIndexs) { RemoveIndexField removedIndexField = ChouseFactory.eINSTANCE.createRemoveIndexField(); removedIndexField.setName(tableIndex.getName()); for (TableIndexColumn indexColumn : tableIndex.getColumns()) { removedIndexField.getIndexFields().add(EcoreUtil.copy(indexColumn)); } input.add(removedIndexField); } treeViewer.refresh(); } } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.clearinghouse.composite.ModifyActionComposite#initAction(com.hundsun.ares.studio.jres.model.chouse.Modification) */ @Override protected void initAction(Modification modification) { if(modification != null && modification instanceof RemoveIndexFieldModification){ action = (RemoveIndexFieldModification) modification; } else { action = ChouseFactory.eINSTANCE.createRemoveIndexFieldModification(); } } }