/** * Դ�������ƣ�TableIndexColomnsEditor.java * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�JRES Studio * ģ�����ƣ�com.hundsun.ares.studio.jres.database.ui * ����˵����$desc * ����ĵ��� * ���ߣ���С�� */ package com.hundsun.ares.studio.jres.database.ui.editors.celleditor; import java.util.ArrayList; import java.util.Collection; 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.IndexSelectEditorDialog; 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; /** * �ֶ��б�celleditor * * @author wangxh * */ public class TableIndexColomnsCellEditor extends DialogCellEditor { private ColumnViewer columnViewer; private IARESResource resource; private Collection<TableIndexColumn> indexColumns = new ArrayList<TableIndexColumn>(); private TableIndex index; private int returnCode = Window.CANCEL; public TableIndexColomnsCellEditor(ColumnViewer columnViewer,IARESResource resource, String fromText, String toText) { super((Composite) columnViewer.getControl()); this.columnViewer = columnViewer; this.resource = resource; } @Override protected Object doGetValue() { return indexColumns; } @Override protected void doSetValue(Object value) { if (returnCode == Window.CANCEL) { setValueValid(false); }else { setValueValid(true); } if (value instanceof EObjectContainmentEList) { index = (TableIndex) ((EObjectContainmentEList) value).getEObject(); } indexColumns.clear(); indexColumns.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; } IndexSelectEditorDialog dialog = new IndexSelectEditorDialog( cellEditorWindow.getShell(), "ѡ����ֶ�", columnViewer, resource,tableResourceData); 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; } }