/** * Դ�������ƣ�IndexFieldAddSelectEditorDialog.java * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�JRES Studio * ģ�����ƣ�com.hundsun.ares.studio.jres.database.ui * ����˵����$desc * ����ĵ��� * ���ߣ� */ package com.hundsun.ares.studio.jres.database.ui.editors.dialog; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.layout.GridLayoutFactory; import org.eclipse.jface.viewers.ColumnViewer; 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 org.eclipse.swt.widgets.Shell; import org.eclipse.ui.plugin.AbstractUIPlugin; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.jres.database.ui.DatabaseUI; import com.hundsun.ares.studio.jres.database.ui.editors.dialog.inner.IndexTable; import com.hundsun.ares.studio.jres.model.chouse.util.StockUtils; import com.hundsun.ares.studio.jres.model.database.DatabaseFactory; import com.hundsun.ares.studio.jres.model.database.TableIndexColumn; import com.hundsun.ares.studio.jres.model.database.TableResourceData; /** * @author liaogc * */ public class IndexFieldAddSelectEditorDialog extends Dialog { private ColumnViewer viewer; private String title; private IARESResource resource; private TableResourceData tableResourceData; private List<TableIndexColumn> addFieldColumnList = new ArrayList<TableIndexColumn>();//���ӵ������ֶ� private List<TableIndexColumn> oldFeildColumnList = new ArrayList<TableIndexColumn>();//ԭ�������������ֶ� private List<TableIndexColumn> result = new ArrayList<TableIndexColumn>(); private IndexTable table; /** * @param parentShell * @param Title * @param Viewer * @param resource */ public IndexFieldAddSelectEditorDialog(Shell parentShell, String Title, IARESResource resource,TableResourceData tableResourceData,List<TableIndexColumn> addFieldColumnList,List<TableIndexColumn> oldFeildColumnList ) { super(parentShell); this.title = Title; this.resource = resource; this.tableResourceData = tableResourceData; this.addFieldColumnList = addFieldColumnList; this.oldFeildColumnList = oldFeildColumnList; } /* * (non-Javadoc) * * @see * org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets * .Shell) */ @Override protected void configureShell(Shell newShell) { super.configureShell(newShell); newShell.setText(title); newShell.setImage(AbstractUIPlugin.imageDescriptorFromPlugin(DatabaseUI.PLUGIN_ID, "icons/table.gif").createImage()); } protected void okPressed() { result.clear(); List<TableIndexColumn> totalElements = (List<TableIndexColumn>) table.getInput(); for(TableIndexColumn tableIndexColumn:totalElements){ boolean isRight = true; for(TableIndexColumn indexColumnadd1:this.oldFeildColumnList){ if(StringUtils.equals(indexColumnadd1.getColumnName(), tableIndexColumn.getColumnName())){ isRight = false; break; } } if(isRight){ result.add(tableIndexColumn); } } 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); GridLayoutFactory.fillDefaults().numColumns(3).margins(10, 10).applyTo(composite); GridDataFactory.fillDefaults().grab(true, true).hint(400, 300).applyTo(composite); table=new IndexTable(composite, resource ,tableResourceData); Collection<TableIndexColumn> inputs=new ArrayList<TableIndexColumn>(); for(TableIndexColumn column:oldFeildColumnList){ TableIndexColumn copy=DatabaseFactory.eINSTANCE.createTableIndexColumn(); copy.setAscending(column.isAscending()); copy.setColumnName(column.getColumnName()); copy.setColumnType(column.getColumnType()); inputs.add(copy); } for(TableIndexColumn column:addFieldColumnList){ TableIndexColumn copy=DatabaseFactory.eINSTANCE.createTableIndexColumn(); copy.setAscending(column.isAscending()); copy.setColumnName(column.getColumnName()); copy.setColumnType(column.getColumnType()); inputs.add(copy); } table.addFilter(new IndexFieldAddViewerFilter()); table.setInput(inputs); return composite; } public Object getResult(){ return result; } /** * ����ԭ�������е��ֶ� * @author liaogc * */ private class IndexFieldAddViewerFilter extends ViewerFilter{ /* (non-Javadoc) * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) */ @Override public boolean select(Viewer viewer, Object parentElement, Object element) { if(element instanceof TableIndexColumn){ TableIndexColumn indexColumn = (TableIndexColumn) element; for(TableIndexColumn addFieldColumn:addFieldColumnList){ if(StringUtils.equals(indexColumn.getColumnName(), addFieldColumn.getColumnName())){ return true; } } return false; } return true; } } }