package net.ms.designer.editors.workflow.dialog;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import net.ms.designer.core.MsEditorInput;
import net.ms.designer.editors.workflow.Constants;
import net.ms.designer.editors.workflow.models.ApplicationActivity;
import net.ms.designer.editors.workflow.models.ParameterEntire;
import net.ms.designer.editors.workflow.models.WorkflowSubPart;
import net.ms.designer.editors.workflow.xmlparse.ReadFromApplicationXML;
import net.ms.designer.editors.workflow.xmlparse.WriteToApplicationsXML;
import net.ms.designer.projectbuilder.service.ProjectBuilder;
import org.basuyi.xflow.model.Activity;
import org.basuyi.xflow.model.WfAction;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.jface.viewers.TableLayout;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.ui.internal.UIPlugin;
import org.eclipse.ui.views.properties.IPropertyDescriptor;
import org.eclipse.ui.views.properties.IPropertySource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ApplicationListDialog extends TitleAreaDialog {
private Shell shell;
// tableView
public TableViewer tvApplication; // all applications
// Button
private Button btnSysApp;
private Button btnUserApp;
private Button btnAppCreate, btnAppEdit, btnAppDelete;
public WorkflowBaseActivityPropertyDialog activityPropDialog;
private ApplicationListDialog appListDialog = this;
public ApplicationListDialog(Shell parentShell, WorkflowSubPart subpart, WorkflowBaseActivityPropertyDialog parent) {
super(parentShell);
this.shell = parentShell;
this.activityPropDialog = parent;
// ReadFromApplicationXML read = new ReadFromApplicationXML();
// String path =
// ResourcesPlugin.getWorkspace().getRoot().getLocation().toOSString()+"\\applications.xml";
try {
// this.allApplicationList = read.readFromApplicationXML(path);
if (parent.allApplicationList != null) {
return;
}
parent.allApplicationList = getActivityActionsFromDB(subpart);
if (parent.allApplicationList == null || parent.allApplicationList.size() < 1) {
parent.allApplicationList = new ArrayList();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private List getActivityActionsFromDB(WorkflowSubPart subpart) {
List applicationList = new ArrayList();
ApplicationContext context = new ClassPathXmlApplicationContext(
"workflow_context.xml");
ProjectBuilder projectBuilder = (ProjectBuilder) context
.getBean("projectBuilderProxy");
Activity activity = new Activity();
activity.setActivityId(subpart.getName());
Set<WfAction> actions = projectBuilder.getActivityActions(activity);
for (WfAction action : actions) {
ApplicationActivity applicationActivity = new ApplicationActivity();
applicationActivity.setApplicationId(action.getActionId());
applicationActivity.setApplicationName(action.getActionName());
applicationActivity.setApplicationDesc(action.getActionDesc());
// applicationActivity.setApplicationType(action.getActionType());
applicationList.add(applicationActivity);
}
return applicationList;
}
protected Control createDialogArea(Composite parent) {
setTitle("����Ӧ���б�");
setMessage(" ���û���Ӧ��");
GridLayout listlayout = new GridLayout();
listlayout.numColumns = 1;
listlayout.marginHeight = 5;
listlayout.marginWidth = 20;
listlayout.verticalSpacing = 8;
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(listlayout);
composite.setLayoutData(new GridData(GridData.FILL_BOTH));
// GridData labelGridData = new GridData(GridData.HORIZONTAL_ALIGN_END);
// GridData txtGridData = new GridData(GridData.FILL_HORIZONTAL);
GridData btnGridData = new GridData(GridData.FILL_HORIZONTAL);
GridLayout groupLayout = new GridLayout();
groupLayout.marginWidth = 20;
groupLayout.marginHeight = 5;
groupLayout.numColumns = 2;
// Group group1 = new Group(composite,SWT.NONE);
// group1.setText("Ӧ������");
// group1.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
// group1.setLayout(groupLayout);
//
// this.btnSysApp = new Button(group1,SWT.RADIO);
// btnSysApp.setLayoutData(btnGridData);
// btnSysApp.setText("ϵͳӦ��");
// btnSysApp.setSelection(false);
// btnSysApp.addSelectionListener(new MyAppTypeSelectionListener());
//
// this.btnUserApp = new Button(group1,SWT.RADIO);
// btnUserApp.setLayoutData(btnGridData);
// btnUserApp.setText("�û�Ӧ��");
// btnUserApp.setSelection(false);
// btnUserApp.addSelectionListener(new MyAppTypeSelectionListener());
Composite subComposite = new Composite(composite, SWT.NONE);
GridLayout subLayout = new GridLayout();
// subLayout.numColumns = 2;
subLayout.marginHeight = 0;
subLayout.marginWidth = 0;
subLayout.verticalSpacing = 8;
subComposite.setLayout(subLayout);
subComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
tvApplication = new TableViewer(subComposite, SWT.H_SCROLL
| SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION);
tvApplication.getTable().setHeaderVisible(true);
tvApplication.getTable().setLinesVisible(true);
TableLayout tLayout = new TableLayout();
tvApplication.getTable().setLayout(tLayout);
GridData tvGridData = new GridData(GridData.FILL_BOTH);
tvGridData.verticalSpan = 12;
tvApplication.getTable().setLayoutData(tvGridData);
TableColumn column1 = new TableColumn(tvApplication.getTable(),
SWT.SINGLE);
column1.setText("Ӧ������"); //$NON-NLS-1$
column1.setWidth(190);
TableColumn column2 = new TableColumn(tvApplication.getTable(),
SWT.SINGLE);
column2.setText("Ӧ������"); //$NON-NLS-1$
column2.setWidth(190);
tvApplication.setContentProvider(new TableViewerContentProvider());
tvApplication
.setLabelProvider(new ApplicationTableViewerLabelProvider());
tvApplication.setInput(this.activityPropDialog.allApplicationList);
Composite btnComposite = new Composite(composite, SWT.NONE);
btnComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
GridLayout btnComLayout = new GridLayout();
btnComLayout.numColumns = 3;
// btnComLayout.marginHeight = 5;
// btnComLayout.marginWidth = 25;
btnComLayout.makeColumnsEqualWidth = true;
// btnComLayout.verticalSpacing = 50;
btnComposite.setLayout(btnComLayout);
this.btnAppCreate = new Button(btnComposite, SWT.NONE);
// btnAppCreate.setLayoutData(btnGridData);
btnAppCreate.setText(" �� �� ");
btnAppCreate.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
// ApplicationActivity application = new ApplicationActivity();
// Date da = new Date();
// long time = da.getTime();
// application.setApplicationId(Long.toString(time));
ApplicationDialog appDialog = new ApplicationDialog(UIPlugin
.getDefault().getWorkbench().getActiveWorkbenchWindow()
.getShell(), null, appListDialog);
appDialog.open();
}
});
this.btnAppEdit = new Button(btnComposite, SWT.NONE);
// btnAppEdit.setLayoutData(btnGridData);
btnAppEdit.setText(" �� �� ");
btnAppEdit.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
if (tvApplication.getTable().getSelectionIndex() < 0) {
{
MessageDialog.openConfirm(UIPlugin.getDefault()
.getWorkbench().getActiveWorkbenchWindow()
.getShell(), "��ѡ��һ��Ӧ��", "��ѡ��һ��Ӧ��");
return;
}
}
ApplicationDialog appDialog = new ApplicationDialog(UIPlugin
.getDefault().getWorkbench().getActiveWorkbenchWindow()
.getShell(), (ApplicationActivity) (tvApplication
.getElementAt(tvApplication.getTable()
.getSelectionIndex())), appListDialog);
appDialog.open();
}
});
this.btnAppDelete = new Button(btnComposite, SWT.NONE);
btnAppDelete.setText(" ɾ �� ");
btnAppDelete.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
if (tvApplication.getTable().getSelectionIndex() < 0) {
{
MessageDialog.openConfirm(UIPlugin.getDefault()
.getWorkbench().getActiveWorkbenchWindow()
.getShell(), "��ѡ��һ��Ӧ��", "��ѡ��һ��Ӧ��");
return;
}
}
Iterator it = appListDialog.activityPropDialog.allApplicationList.iterator();
while (it.hasNext()) {
ApplicationActivity app = (ApplicationActivity) it.next();
if (app.getApplicationId().equals(
((ApplicationActivity) tvApplication
.getElementAt(tvApplication.getTable()
.getSelectionIndex()))
.getApplicationId())) {
appListDialog.activityPropDialog.allApplicationList.remove(app);
break;
}
}
tvApplication.setInput(appListDialog.activityPropDialog.allApplicationList);
refresh();
}
});
return parent;
}
protected void buttonPressed(int buttonId) {
if (buttonId == IDialogConstants.OK_ID) {
if (this.activityPropDialog.allApplicationList != null
&& this.activityPropDialog.allApplicationList.size() > 0) {
// WriteToApplicationsXML write = new WriteToApplicationsXML(
// this.activityPropDialog.allApplicationList);
// try {
// write.writeApplicationsXML(ResourcesPlugin.getWorkspace()
// .getRoot().getLocation().toOSString()
// + "\\applications.xml");
// } catch (Exception e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// if (UIPlugin.getDefault().getWorkbench()
// .getActiveWorkbenchWindow().getActivePage()
// .getActiveEditor() != null) {
// if ((UIPlugin.getDefault().getWorkbench()
// .getActiveWorkbenchWindow().getActivePage()
// .getActiveEditor().getEditorInput()) instanceof MsEditorInput)
// ((MsEditorInput) (UIPlugin.getDefault().getWorkbench()
// .getActiveWorkbenchWindow().getActivePage()
// .getActiveEditor().getEditorInput()))
// .getProject().setApplicationList(
// activityPropDialog.allApplicationList);
// }
}
} else if (buttonId == IDialogConstants.CANCEL_ID) {
super.cancelPressed();
}
super.buttonPressed(buttonId);
}
public void refresh() {
tvApplication.setContentProvider(new TableViewerContentProvider());
tvApplication
.setLabelProvider(new ApplicationTableViewerLabelProvider());
tvApplication.setInput(activityPropDialog.allApplicationList);
tvApplication.refresh();
}
public class MyAppTypeSelectionListener implements SelectionListener {
public void widgetSelected(SelectionEvent e) {
Button button = (Button) e.getSource();
if (button.getText().equals("ϵͳӦ��")
&& button.getSelection() == true) {
btnSysApp.setSelection(true);
btnUserApp.setSelection(false);
// sysApplicationList = new ArrayList();
// Iterator itSys = allApplicationList.iterator();
// while(itSys.hasNext())
// {
// ApplicationActivity applicationActivity =
// (ApplicationActivity)itSys.next();
// if(applicationActivity.getApplicationType() != null &&
// applicationActivity.getApplicationType().equals(Constants.WF_APPLICATION_TYPE_SYS))
// {
// sysApplicationList.add(applicationActivity);
// }
// }
// tvApplication.setInput(sysApplicationList);
refresh();
}
if (button.getText().equals("�û�Ӧ��")
&& button.getSelection() == true) {
btnSysApp.setSelection(false);
btnUserApp.setSelection(true);
// userApplicationList = new ArrayList();
// Iterator itUser = allApplicationList.iterator();
// while(itUser.hasNext())
// {
// ApplicationActivity applicationActivity =
// (ApplicationActivity)itUser.next();
// if(applicationActivity.getApplicationType() != null &&
// applicationActivity.getApplicationType().equals(Constants.WF_APPLICATION_TYPE_USER))
// {
// userApplicationList.add(applicationActivity);
// }
// }
// tvApplication.setInput(userApplicationList);
refresh();
}
}
public void widgetDefaultSelected(SelectionEvent e) {
}
}
}