/**
* Դ�������ƣ�ConstraintModifyCellEditor.java
* �������Ȩ���������ӹɷ�����˾ ��Ȩ����
* ϵͳ���ƣ�ARES Studio
* ģ�����ƣ�com.hundsun.ares.studio.jres.biz.stock.ui
* ����˵����$desc
* ����ĵ���
* ���ߣ�sundl
*/
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.util.EcoreUtil;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.viewers.DialogCellEditor;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
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.ui.DatabaseUI;
import com.hundsun.ares.studio.jres.model.chouse.CTCTMDetail;
import com.hundsun.ares.studio.jres.model.chouse.ConstraintModifyDetail;
import com.hundsun.ares.studio.jres.model.database.TableColumn;
import com.hundsun.ares.studio.jres.model.database.TableResourceData;
import com.hundsun.ares.studio.jres.model.database.util.DatabaseUtil;
/**
* @author sundl
*
*/
public class ConstraintColumnsCellEditor extends DialogCellEditor {
private TableResourceData table;
private IARESResource resource;
private ConstraintModifyDetail constraint;
public ConstraintColumnsCellEditor(Composite parent, ConstraintModifyDetail constraint, TableResourceData table, IARESResource resource) {
super(parent);
this.table = table;
this.resource = resource;
this.constraint = constraint;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.DialogCellEditor#openDialogBox(org.eclipse.swt.widgets.Control)
*/
@Override
protected Object openDialogBox(Control cellEditorWindow) {
ColumnSelectionDialog dialog = new ColumnSelectionDialog(getControl().getShell(), resource, table) {
protected Control createDialogArea(Composite parent) {
Control control = super.createDialogArea(parent);
List<TableColumn> checked = new ArrayList<TableColumn>();
for (TableColumn c : constraint.getColumns()) {
TableColumn c2 = DatabaseUtil.findColumn(c, table);
checked.add(c2);
}
getTreeViewer().setCheckedElements(checked.toArray());
return control;
}
};
if (dialog.open() == Dialog.OK) {
TableColumn[] columns = dialog.getSelection();
List<TableColumn> str = new ArrayList<TableColumn>();
for (int i=0; i < columns.length; i++) {
TableColumn c = EcoreUtil.copy(columns[i]);
str.add(c);
}
return str;
}
return null;
}
protected void updateContents(Object value) {
if (value instanceof List<?>) {
List<?> list = (List<?>) value;
int length = list.size();
String label = "";
for (int i = 0; i < length; i++) {
Object obj = list.get(i);
TableColumn c = (TableColumn) obj;
label += c.getName();
}
super.updateContents(label);
}
}
}