/** * @author liuchunxia * * workflow property dialog */ package net.ms.designer.editors.workflow.dialog; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import net.ms.designer.core.MsEditorInput; import net.ms.designer.core.MsProject; import net.ms.designer.editors.componentdetail.models.CommonField; import net.ms.designer.editors.componentdetail.models.ComponentTable; import net.ms.designer.editors.componentdetail.models.Container; import net.ms.designer.editors.workflow.Constants; import net.ms.designer.editors.workflow.models.ParameterEntire; import net.ms.designer.editors.workflow.models.ParameterPartial; import net.ms.designer.editors.workflow.models.SubFlowActivity; import net.ms.designer.editors.workflow.models.WorkflowBaseActivity; import net.ms.designer.editors.workflow.models.WorkflowDiagram; import net.ms.designer.editors.workflow.models.WorkflowSubPart; import net.ms.designer.editors.packages.ui.PackageEditor; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.dialogs.TitleAreaDialog; import org.eclipse.jface.viewers.ColumnWeightData; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.TableLayout; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.MessageBox; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.TabFolder; import org.eclipse.swt.widgets.TabItem; import org.eclipse.swt.widgets.TableColumn; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.internal.UIPlugin; public class WorkflowPropertyDialog extends TitleAreaDialog { private Shell shell; private WorkflowSubPart subpart; public List paraList; private MsProject project; WorkflowPropertyDialog myself = this; private Container container; private String inf1, inf2, inf3; // Text; // properties about workflow private Text txtVersion; private Text txtWorkflowParas; private Text txtCreateTime; private Text txtFinishtTime; private Text txtStartTime; private Text txtWorkflowPriority; private Text txtWorkflowStatus; private Text txtWorkflowName; private Text txtWorkflowDesc; private Text txtWorkflowAllInfor; // �Զ��� private Text txtWorkflowComp; private Text txtWorkflowIname; // button about workflow private Button btnWorkflowCus; private Button btnWorkflowParaCreate; private Button btnWorkflowParaEdit; private Button btnWorkflowParaDelete; // Combo; // properties about workflow // private Combo comboWorkflowComp; private Combo comboWorkflowEnt; private Combo comboWorkflowInf1; private Combo comboWorkflowInf2; // Tableview private TableViewer tvWfPara; public WorkflowPropertyDialog(Shell shell, WorkflowSubPart subpart, MsProject project) { super(shell); this.shell = shell; this.subpart = subpart; this.project = ((WorkflowDiagram) this.subpart).getProject(); // this.container = // (Container)((PackageEditor)UIPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor()).getContainer(); paraList = new ArrayList(); } protected Control createDialogArea(Composite parent) { // workflow property if (this.subpart instanceof WorkflowDiagram) { paraList = ((WorkflowDiagram) subpart).getParaList(); this.createWorkflowArea(parent); } return parent; } protected Control createWorkflowArea(Composite parent) { setTitle("��������Ϣ"); setMessage(" �趨�����������"); TabFolder tabFolder = new TabFolder(parent, SWT.NONE); tabFolder.setLayoutData(new GridData(GridData.FILL_BOTH)); TabItem tabItem_1 = new TabItem(tabFolder, SWT.NONE); Composite composite1 = new Composite(tabFolder, SWT.NULL); tabItem_1.setText("����"); // GridLayout layout = new GridLayout(); layout.marginHeight = 5; layout.marginWidth = 20; layout.verticalSpacing = 8; layout.numColumns = 2; composite1.setLayoutData(new GridData(GridData.FILL_BOTH)); composite1.setLayout(layout); tabItem_1.setControl(composite1); GridData labelGridData = new GridData(GridData.HORIZONTAL_ALIGN_END); GridData txtGridData = new GridData(GridData.FILL_HORIZONTAL); GridData comboGridData = new GridData(GridData.FILL_HORIZONTAL); Label labelWorkflowName = new Label(composite1, SWT.NONE); labelWorkflowName.setLayoutData(labelGridData); labelWorkflowName.setText("��������"); this.txtWorkflowName = new Text(composite1, SWT.BORDER); txtWorkflowName.setLayoutData(txtGridData); txtWorkflowName.setEditable(false); // Label labelWorkflowIname = new Label(composite1,SWT.NONE); // labelWorkflowIname .setLayoutData(labelGridData); // labelWorkflowIname .setText("���ʻ�����"); // // this.txtWorkflowIname = new Text(composite1,SWT.BORDER); // txtWorkflowIname.setLayoutData(txtGridData); Label labelWorkflowDesc = new Label(composite1, SWT.NONE); labelWorkflowDesc.setLayoutData(labelGridData); labelWorkflowDesc.setText("��������"); this.txtWorkflowDesc = new Text(composite1, SWT.BORDER); txtWorkflowDesc.setLayoutData(txtGridData); txtWorkflowDesc.setEditable(false); // Label labelWorkflowComp = new Label(composite1,SWT.NONE); // labelWorkflowComp.setLayoutData(labelGridData); // labelWorkflowComp.setText("�������"); // this.comboWorkflowComp = new Combo(composite1,SWT.DROP_DOWN | // SWT.READ_ONLY); // comboWorkflowComp.setLayoutData(); // this.txtWorkflowComp = new Text(composite1,SWT.BORDER); // txtWorkflowComp.setLayoutData(txtGridData); // txtWorkflowComp.setEditable(false); // // Label labelWorkflowEnt = new Label(composite1,SWT.NONE); // labelWorkflowEnt.setLayoutData(labelGridData); // labelWorkflowEnt.setText("ҵ��ʵ��"); // // this.comboWorkflowEnt = new Combo(composite1,SWT.DROP_DOWN | // SWT.READ_ONLY); // comboWorkflowEnt.setLayoutData(comboGridData); // // Label labelWorkflowInfor1= new Label(composite1,SWT.NONE); // labelWorkflowInfor1.setLayoutData(labelGridData); // labelWorkflowInfor1.setText("��ʾ��Ϣ"); // // this.comboWorkflowInf1 = new Combo(composite1,SWT.NONE); // comboWorkflowInf1.setLayoutData(comboGridData); // comboWorkflowInf1.addModifyListener(new ModifyListener() // { // // public void modifyText(ModifyEvent e) { // if(comboWorkflowInf1.getText() != null && // comboWorkflowInf1.getText().length()>0) // { // inf1 = comboWorkflowInf1.getText(); // StringBuffer sb = new StringBuffer(inf1); // if(inf2 != null && inf2.length()>0) // { // sb.append(","); // sb.append(inf2); // } // // if(inf3 != null && inf3.length()>0) // // { // // sb.append(","); // // sb.append(inf3); // // } // txtWorkflowAllInfor.setText(sb.toString()); // } // } // // }); // // Label labelWorkflowInfor2= new Label(composite1,SWT.NONE); // labelWorkflowInfor2.setLayoutData(labelGridData); // labelWorkflowInfor2.setText(""); // // this.comboWorkflowInf2 = new Combo(composite1,SWT.NONE); // comboWorkflowInf2.setLayoutData(comboGridData); // comboWorkflowInf2.addModifyListener(new ModifyListener() // { // // public void modifyText(ModifyEvent e) { // if(comboWorkflowInf2.getText() != null && // comboWorkflowInf2.getText().length()>0) // { // inf2 = comboWorkflowInf2.getText(); // StringBuffer sb = new StringBuffer(); // if(inf1 != null && inf1.length()>0) // { // sb.append(inf1); // sb.append(","); // sb.append(inf2); // } // // if(inf3 != null && inf3.length()>0) // // { // // sb.append(","); // // sb.append(inf3); // // } // txtWorkflowAllInfor.setText(sb.toString()); // } // } // // }); // // this.btnWorkflowCus = new Button(composite1, SWT.CHECK); // btnWorkflowCus.setText("�Զ���"); // btnWorkflowCus.setSelection(false); // btnWorkflowCus.setLayoutData(labelGridData); // btnWorkflowCus.addSelectionListener(new SelectionListener(){ // // public void widgetSelected(SelectionEvent e) { // // TODO Auto-generated method stub // if(btnWorkflowCus.getSelection() == true) // { // txtWorkflowAllInfor.setEditable(true); // } // if(btnWorkflowCus.getSelection() == false) // { // txtWorkflowAllInfor.setEditable(false); // } // } // // public void widgetDefaultSelected(SelectionEvent e) { // // TODO Auto-generated method stub // // } // // }); // this.txtWorkflowAllInfor = new Text(composite1,SWT.BORDER); // txtWorkflowAllInfor.setLayoutData(txtGridData); // txtWorkflowAllInfor.setEditable(false); TabItem tabItem_2 = new TabItem(tabFolder, SWT.NONE); Composite composite2 = new Composite(tabFolder, SWT.NONE); GridLayout layout2 = new GridLayout(); layout2.marginHeight = 5; layout2.marginWidth = 20; layout2.verticalSpacing = 8; layout2.numColumns = 2; composite2.setLayoutData(new GridData(GridData.FILL_BOTH)); composite2.setLayout(layout2); tabItem_2.setText("����"); tabItem_2.setControl(composite2); tvWfPara = new TableViewer(composite2, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION); tvWfPara.getTable().setHeaderVisible(true); tvWfPara.getTable().setLinesVisible(true); TableLayout tLayout = new TableLayout(); tvWfPara.getTable().setLayout(tLayout); tvWfPara.getTable().setLayoutData(new GridData(GridData.FILL_BOTH)); TableColumn column1 = new TableColumn(tvWfPara.getTable(), SWT.SINGLE); column1.setText("��������"); column1.setWidth(150); TableColumn column2 = new TableColumn(tvWfPara.getTable(), SWT.SINGLE); column2.setText("��������"); column2.setWidth(150); TableColumn column3 = new TableColumn(tvWfPara.getTable(), SWT.SINGLE); column3.setText("����/���"); column3.setWidth(120); tvWfPara.setContentProvider(new TableViewerContentProvider()); tvWfPara.setLabelProvider(new TableViewerLabelProvider()); tvWfPara.setInput(paraList); tvWfPara.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { ParameterEntire para = (ParameterEntire) tvWfPara .getElementAt(tvWfPara.getTable().getSelectionIndex()); if (para.getParaName().equals("bean") || para.getParaName().equals("entityid") || para.getParaName().equals("infor")) { btnWorkflowParaEdit.setEnabled(true); btnWorkflowParaDelete.setEnabled(true); } else { btnWorkflowParaEdit.setEnabled(true); btnWorkflowParaDelete.setEnabled(true); } } }); Composite parent2 = new Composite(composite2, SWT.NONE); GridLayout layoutpa = new GridLayout(); layoutpa.marginHeight = 5; layoutpa.marginWidth = 20; layoutpa.verticalSpacing = 8; parent2.setLayout(layoutpa); parent2.setLayoutData(new GridData(GridData.FILL_BOTH)); GridData btnGridData = new GridData(); btnGridData.horizontalAlignment = GridData.FILL; // this.btnWorkflowParaCreate = new Button(parent2, SWT.NONE); btnWorkflowParaCreate.setLayoutData(btnGridData); btnWorkflowParaCreate.setText("�� ��"); btnWorkflowParaCreate.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { WorkflowParameterDialog paraDialog = new WorkflowParameterDialog( UIPlugin.getDefault().getWorkbench() .getActiveWorkbenchWindow().getShell(), null, myself, null, null); paraDialog.open(); } }); this.btnWorkflowParaEdit = new Button(parent2, SWT.NONE); btnWorkflowParaEdit.setLayoutData(btnGridData); btnWorkflowParaEdit.setText("�� ��"); btnWorkflowParaEdit.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { if (tvWfPara.getTable().getSelectionIndex() < 0) { { MessageDialog.openConfirm(UIPlugin.getDefault() .getWorkbench().getActiveWorkbenchWindow() .getShell(), "��ѡ��һ������", "��ѡ��һ������"); return; } } WorkflowParameterDialog paraDialog = new WorkflowParameterDialog( UIPlugin.getDefault().getWorkbench() .getActiveWorkbenchWindow().getShell(), (ParameterEntire) (tvWfPara.getElementAt(tvWfPara .getTable().getSelectionIndex())), myself, null, null); paraDialog.open(); } }); this.btnWorkflowParaDelete = new Button(parent2, SWT.NONE); btnWorkflowParaDelete.setLayoutData(btnGridData); btnWorkflowParaDelete.setText("ɾ ��"); btnWorkflowParaDelete.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { if (tvWfPara.getTable().getSelectionIndex() < 0) { { MessageDialog.openConfirm(UIPlugin.getDefault() .getWorkbench().getActiveWorkbenchWindow() .getShell(), "��ѡ��һ������", "��ѡ��һ������"); return; } } Iterator it = paraList.iterator(); while (it.hasNext()) { ParameterEntire para = (ParameterEntire) it.next(); if (para.getParaName().equals( ((ParameterEntire) tvWfPara.getElementAt(tvWfPara .getTable().getSelectionIndex())) .getParaName())) { paraList.remove(para); break; } } tvWfPara.getTable().deselectAll(); refresh(); } }); setPrioTextContent(); return parent; } // set text or combo or tableView value private void setPrioTextContent() { if (this.subpart instanceof WorkflowDiagram) { WorkflowDiagram diagram = (WorkflowDiagram) subpart; this.txtWorkflowName.setText(diagram.getName()); if (diagram.getWfDesc() != null && diagram.getWfDesc().length() > 0) { this.txtWorkflowDesc.setText("" + diagram.getWfDesc()); } this.paraList = diagram.getParaList(); } } /** * it defind the order when press the OK button */ protected void buttonPressed(int buttonId) { if (buttonId == IDialogConstants.OK_ID) { WorkflowDiagram diagram = (WorkflowDiagram) subpart; diagram.setParaList(paraList); ((MsEditorInput) (UIPlugin.getDefault().getWorkbench() .getActiveWorkbenchWindow().getActivePage() .getActiveEditor().getEditorInput())).setProject(project); } else if (buttonId == IDialogConstants.CANCEL_ID) { super.cancelPressed(); } super.buttonPressed(buttonId); } protected GridData setCustomButtonLayoutData(Button button, int hSapn) { GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL); data.heightHint = convertVerticalDLUsToPixels(IDialogConstants.BUTTON_HEIGHT); int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH); data.widthHint = Math.max(widthHint, button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x); data.horizontalSpan = hSapn; button.setLayoutData(data); return data; } public void refresh() { tvWfPara.setContentProvider(new TableViewerContentProvider()); tvWfPara.setLabelProvider(new TableViewerLabelProvider()); tvWfPara.setInput(paraList); tvWfPara.refresh(); } }