/** * <p>Copyright: Copyright (c) 2014</p> * <p>Company: �������ӹɷ����޹�˾</p> */ package com.hundsun.ares.studio.jres.clearinghouse.celleditor; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang.StringUtils; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.util.EDataTypeUniqueEList; import org.eclipse.emf.ecore.util.EObjectContainmentEList; import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.jface.viewers.ColumnViewer; import org.eclipse.jface.viewers.DialogCellEditor; import org.eclipse.jface.window.Window; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import com.hundsun.ares.studio.core.ARESModelException; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.jres.model.chouse.AddIndexField; import com.hundsun.ares.studio.jres.model.chouse.RemoveIndexField; 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; /** * @author liaogc * */ public class RemoveIndexFeildColomnsCellEditor extends DialogCellEditor { private ColumnViewer columnViewer; private IARESResource resource; private List<TableIndexColumn> indexFields = new ArrayList<TableIndexColumn>(); private TableIndex index; private TableResourceData tableResourceData = null; private RemoveIndexField removeIndexField; private List<TableIndexColumn> initIndexFields = new ArrayList<TableIndexColumn>(); private int returnCode = Window.CANCEL; public RemoveIndexFeildColomnsCellEditor(ColumnViewer columnViewer, TableResourceData tableResourceData, IARESResource resource, String fromText, String toText) { super((Composite) columnViewer.getControl()); this.columnViewer = columnViewer; this.resource = resource; this.tableResourceData = tableResourceData; } @Override protected Object doGetValue() { return indexFields; } @Override protected void doSetValue(Object value) { if (returnCode == Window.CANCEL) { setValueValid(false); } else { setValueValid(true); } if (value instanceof EObjectContainmentEList) { removeIndexField = (RemoveIndexField) ((EObjectContainmentEList) value).getEObject(); String indexName = removeIndexField.getName(); for (TableIndex tableIndex : tableResourceData.getIndexes()) { if (StringUtils.equals(indexName, tableIndex.getName())) { this.index = EcoreUtil.copy(tableIndex); initIndexFields.addAll(EcoreUtil.copyAll(removeIndexField.getIndexFields())); break; } } } if (value instanceof List && null!= value) { indexFields.clear(); for(Object oValue:((List)value)){ if(oValue instanceof TableIndexColumn){ TableIndexColumn tableIndexColumn = (TableIndexColumn) oValue; indexFields.add(tableIndexColumn); } } } } @Override protected Object openDialogBox(Control cellEditorWindow) { if (index != null) { IndexFieldSelectEditorDialog dialog = new IndexFieldSelectEditorDialog( cellEditorWindow.getShell(), "ѡ��Ҫɾ���������ֶ�", index,initIndexFields, tableResourceData, resource); if ((returnCode=dialog.open())== Window.OK) { return dialog.getSelectedColumns(); } } return null; } @Override protected Control createControl(Composite parent) { Control control = super.createControl(parent); if (returnCode == Window.CANCEL) { setValueValid(false); } else { setValueValid(true); } return control; } }