/** * <p>Copyright: Copyright (c) 2014</p> * <p>Company: �������ӹɷ����޹�˾</p> */ package com.hundsun.ares.studio.jres.clearinghouse.support; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.apache.commons.lang.StringUtils; import org.eclipse.emf.ecore.EObject; 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.database.ui.editors.dialog.IndexFieldAddSelectEditorDialog; import com.hundsun.ares.studio.jres.model.chouse.AddIndexField; 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 AddIndexColomnsCellEditor extends DialogCellEditor { private ColumnViewer columnViewer; private IARESResource resource; private List<TableIndexColumn> addIndexColumns = new ArrayList<TableIndexColumn>(); private List<TableIndexColumn> oldFeildColumnList = new ArrayList<TableIndexColumn>();; private TableIndex index; private AddIndexField addIndexField; private TableResourceData tableResourceData = null; private int returnCode = Window.CANCEL; public AddIndexColomnsCellEditor(ColumnViewer columnViewer,IARESResource resource,TableResourceData tableResourceData, String fromText, String toText) { super((Composite) columnViewer.getControl()); this.columnViewer = columnViewer; this.resource = resource; this.tableResourceData = tableResourceData; } @Override protected Object doGetValue() { return addIndexColumns; } @Override protected void doSetValue(Object value) { if (returnCode == Window.CANCEL) { setValueValid(false); }else { setValueValid(true); } if (value instanceof EObjectContainmentEList) { addIndexField = (AddIndexField) ((EObjectContainmentEList) value).getEObject(); String indexName = addIndexField.getName(); for (TableIndex tableIndex : tableResourceData.getIndexes()) { if (StringUtils.equals(indexName, tableIndex.getName())) { this.index = tableIndex; oldFeildColumnList.addAll(EcoreUtil.copyAll(tableIndex.getColumns())); break; } } } addIndexColumns.clear(); addIndexColumns.addAll(EcoreUtil.copyAll((Collection<TableIndexColumn>)value)); } @Override protected Object openDialogBox(Control cellEditorWindow) { TableResourceData tableResourceData = null; EObject obj = index.eContainer(); if (obj == null || !(obj instanceof TableResourceData)) { try { tableResourceData = resource.getInfo(TableResourceData.class); } catch (ARESModelException e) { e.printStackTrace(); } }else { tableResourceData = (TableResourceData)obj; } IndexFieldAddSelectEditorDialog dialog = new IndexFieldAddSelectEditorDialog( cellEditorWindow.getShell(), "ѡ����ֶ�", resource,tableResourceData,addIndexColumns,oldFeildColumnList); returnCode = dialog.open(); Object result = (returnCode == Window.OK) ? dialog.getResult() : null; if(result == null){ setValueValid(false); } return result; } @Override protected Control createControl(Composite parent) { Control control = super.createControl(parent); if (returnCode == Window.CANCEL) { setValueValid(false); }else { setValueValid(true); } return control; } }