/**
* Դ�������ƣ�IndexSelectEditorDialog.java
* �������Ȩ���������ӹɷ�����˾ ��Ȩ����
* ϵͳ���ƣ�JRES Studio
* ģ�����ƣ�com.hundsun.ares.studio.jres.database.ui
* ����˵����$desc
* ����ĵ���
* ���ߣ�
*/
package com.hundsun.ares.studio.jres.database.ui.editors.dialog;
import java.util.Arrays;
import java.util.List;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.jres.database.ui.viewer.TableColumnLabelProvider;
import com.hundsun.ares.studio.jres.database.ui.viewer.TableColumnRefLabelProvider;
import com.hundsun.ares.studio.jres.model.database.DatabasePackage;
import com.hundsun.ares.studio.jres.model.database.TableColumn;
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.extend.CheckBoxColumnLabelProvider;
import com.hundsun.ares.studio.ui.editor.viewers.EObjectColumnLabelProvider;
import com.hundsun.ares.studio.ui.editor.viewers.ReferenceContentProvider;
/**
* @author wangxh
*
*/
public class IndexAddSelectEditorDialog extends Dialog{
private IARESResource resource;
private TableResourceData info;
private CheckboxTableViewer tableViewer;
private Object indexs;
private List<TableColumn> result;
private String title;
/**
* @param parentShell
* @param info
* @param resource
*/
public IndexAddSelectEditorDialog(Shell parentShell,String title,
TableResourceData info,Object index, IARESResource resource) {
super(parentShell);
this.title = title;
this.info = info;
this.indexs = index;
this.resource = resource;
}
/* (non-Javadoc)
* @see org.eclipse.jface.window.Window#getShellStyle()
*/
@Override
protected int getShellStyle() {
return super.getShellStyle() |SWT.RESIZE | SWT.MAX;
}
public List<TableColumn> getSelectedColumns() {
return result;
}
@Override
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
newShell.setText(title);
}
/* (non-Javadoc)
* @see org.eclipse.jface.dialogs.Dialog#okPressed()
*/
@Override
protected void okPressed() {
result = (List)Arrays.asList(tableViewer.getCheckedElements()) ;
super.okPressed();
}
/* (non-Javadoc)
* @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
*/
@Override
protected Control createDialogArea(Composite parent) {
Composite composite = (Composite) super.createDialogArea(parent);
tableViewer = CheckboxTableViewer.newCheckList(composite, SWT.BORDER|SWT.FULL_SELECTION|SWT.V_SCROLL|SWT.H_SCROLL);
tableViewer.getTable().setLinesVisible(true);
tableViewer.getTable().setHeaderVisible(true);
GridDataFactory.swtDefaults().hint(-1, 200).grab(true, true).align(SWT.FILL, SWT.FILL).applyTo(tableViewer.getTable());
tableViewer.addDoubleClickListener(new IDoubleClickListener() {
@Override
public void doubleClick(DoubleClickEvent event) {
IStructuredSelection sel = (IStructuredSelection) event.getSelection();
if (!sel.isEmpty()) {
Object element = sel.getFirstElement();
tableViewer.setChecked(element, !tableViewer.getChecked(element));
}
}
});
tableViewer.addFilter(new ViewerFilter() {
@Override
public boolean select(Viewer viewer, Object parentElement, Object element) {
TableColumn column = (TableColumn) element;
if (indexs instanceof List) {
List<TableIndexColumn> inds = (List<TableIndexColumn>) indexs;
for (TableIndexColumn indexColumn : inds) {
if (column.getName().equals(indexColumn.getColumnName())) {
return false;
}
}
}
// EList<TableIndexColumn> indexColumns = index.getColumns();
// column.getName() not in index.getColumns()
return true;
}
});
tableViewer.setContentProvider(new ReferenceContentProvider(DatabasePackage.Literals.TABLE_RESOURCE_DATA__COLUMNS));
// �ֶ���
{
EAttribute attribute = DatabasePackage.Literals.TABLE_COLUMN__FIELD_NAME;
final TableViewerColumn tvColumn = new TableViewerColumn(tableViewer, SWT.LEFT);
tvColumn.getColumn().setWidth(100);
tvColumn.getColumn().setText("�ֶ���");
EObjectColumnLabelProvider provider = new EObjectColumnLabelProvider(attribute);
tvColumn.setLabelProvider(provider);
}
// ������
{
EAttribute attribute = DatabasePackage.Literals.TABLE_COLUMN__COLUMN_NAME;
final TableViewerColumn tvColumn = new TableViewerColumn(tableViewer, SWT.LEFT);
tvColumn.getColumn().setWidth(100);
tvColumn.getColumn().setText("������");
EObjectColumnLabelProvider provider = new EObjectColumnLabelProvider(attribute);
tvColumn.setLabelProvider(provider);
}
// ������
{
final TableViewerColumn tvColumn = new TableViewerColumn(tableViewer, SWT.LEFT);
tvColumn.getColumn().setWidth(100);
tvColumn.getColumn().setText("������");
TableColumnRefLabelProvider provider = new TableColumnRefLabelProvider(resource.getBundle(), TableColumnRefLabelProvider.TYPE.ChineseName);
tvColumn.setLabelProvider(provider);
}
// �ֶ�����
{
final TableViewerColumn tvColumn = new TableViewerColumn(tableViewer, SWT.LEFT);
tvColumn.getColumn().setWidth(100);
tvColumn.getColumn().setText("�ֶ�����");
EAttribute attribute = DatabasePackage.Literals.TABLE_COLUMN__DATA_TYPE;
TableColumnLabelProvider provider = new TableColumnLabelProvider(attribute, resource);
tvColumn.setLabelProvider(provider);
}
// �Ƿ�����
{
EAttribute attribute = DatabasePackage.Literals.TABLE_COLUMN__PRIMARY_KEY;
final TableViewerColumn tvColumn = new TableViewerColumn(tableViewer, SWT.LEFT);
tvColumn.getColumn().setWidth(100);
tvColumn.getColumn().setText("�Ƿ�����");
CheckBoxColumnLabelProvider provider = new CheckBoxColumnLabelProvider(attribute , resource);
tvColumn.setLabelProvider(provider);
}
// �Ƿ�Ϊ��
{
EAttribute attribute = DatabasePackage.Literals.TABLE_COLUMN__NULLABLE;
final TableViewerColumn tvColumn = new TableViewerColumn(tableViewer, SWT.LEFT);
tvColumn.getColumn().setWidth(100);
tvColumn.getColumn().setText("�Ƿ�Ϊ��");
CheckBoxColumnLabelProvider provider = new CheckBoxColumnLabelProvider(attribute , resource);
tvColumn.setLabelProvider(provider);
}
tableViewer.setInput(info);
return composite;
}
}