package com.vci.client.workflow.task;
|
|
import java.awt.AWTEvent;
|
import java.awt.Dimension;
|
import java.awt.Frame;
|
import java.awt.Rectangle;
|
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionListener;
|
import java.awt.event.WindowEvent;
|
|
import javax.swing.DefaultListModel;
|
import javax.swing.JButton;
|
import javax.swing.JDialog;
|
import javax.swing.JLabel;
|
import javax.swing.JList;
|
import javax.swing.JOptionPane;
|
import javax.swing.JScrollPane;
|
import javax.swing.JTextArea;
|
import javax.swing.ListSelectionModel;
|
import javax.swing.border.TitledBorder;
|
|
import com.vci.client.LogonApplication;
|
import com.vci.client.ui.exception.VCIException;
|
import com.vci.client.workflow.commom.Checkableitem;
|
import com.vci.client.workflow.delegate.ProcessCustomClientDelegate;
|
import com.vci.corba.common.VCIError;
|
|
public class BackTaskDialog extends JDialog {
|
private static final long serialVersionUID = 1L;
|
public JButton buttonOk = new JButton();
|
public JButton buttonCancel = new JButton();
|
public boolean flag = false;
|
String taskName = "";
|
String outcome = "";
|
String jbpmDeploymentId = "";
|
public String[] userName ;
|
|
private JList userList = new JList();
|
private JList nextTaskList = new JList();
|
|
Checkableitem[] items = {};
|
JScrollPane scrollPanel = new JScrollPane();
|
JScrollPane selectScroPanel = new JScrollPane();
|
JScrollPane scroll = new JScrollPane();
|
private JTextArea descArea;
|
private JLabel descLabel;
|
private String desc = null;
|
String resTask = "";
|
public BackTaskDialog(){
|
|
}
|
/**
|
*
|
* @param frame
|
*/
|
public BackTaskDialog(Frame frame,String jbpmDeploymentId,String taskName,String outcome){
|
super(frame, true);
|
this.taskName = taskName;
|
this.outcome = outcome;
|
this.jbpmDeploymentId = jbpmDeploymentId;
|
init();
|
//激活窗口事件
|
this.enableEvents(AWTEvent.WINDOW_EVENT_MASK);
|
|
}
|
//重写这个方法
|
@Override
|
protected void processWindowEvent(WindowEvent e) {
|
if (e.getID() == WindowEvent.WINDOW_CLOSING)
|
return; //直接返回,阻止默认动作,阻止窗口关闭
|
super.processWindowEvent(e); //该语句会执行窗口事件的默认动作(如:隐藏)
|
}
|
String[] nextTaskName;
|
public void init(){
|
int x = (int) (this.getParent().getLocationOnScreen().getX()) + 235;
|
int y = (int) (this.getParent().getLocationOnScreen().getY()) + 125;
|
this.setLocation(x, y);
|
|
this.setSize(new Dimension(520, 400));
|
this.setResizable(false);
|
|
|
|
descLabel = new JLabel("请输入任务描述:");
|
descLabel.setBounds(40, 190, 120, 25);
|
|
scroll.setBounds(40, 220, 420, 80);
|
descArea = new JTextArea();
|
descArea.setLineWrap(true);
|
scroll.getViewport().add(descArea);
|
|
buttonOk.setText("确定");
|
buttonOk.setBounds(new Rectangle(
|
170, 320, 60, 25));
|
buttonCancel.setText("取消");
|
buttonCancel.setBounds(new Rectangle(
|
270, 320, 60, 25));
|
try {
|
nextTaskName = getNextTaskNames(new ProcessCustomClientDelegate(
|
LogonApplication.getUserEntityObject()));
|
if (nextTaskName.length > 1) {
|
fillNextTaskCombox();
|
|
scrollPanel.setBounds(40, 10, 400, 150);
|
scrollPanel.setBorder(new TitledBorder("回退任务"));
|
scrollPanel.getViewport().add(nextTaskList);
|
|
this.add(scrollPanel);
|
}
|
} catch (VCIError e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
} catch (VCIException e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
|
|
this.setLayout(null);
|
this.add(scrollPanel);
|
this.add(buttonOk);
|
this.add(buttonCancel);
|
// this.add(descLabel);
|
// this.add(scroll);
|
|
buttonOk.addActionListener(new ActionListener() {
|
public void actionPerformed(ActionEvent arg0) {
|
flag = false;
|
resTask = (String) nextTaskList.getSelectedValue();
|
dispose();
|
}
|
});
|
buttonCancel.addActionListener(new ActionListener() {
|
public void actionPerformed(ActionEvent arg0) {
|
flag = true;
|
dispose();
|
}
|
});
|
|
}
|
|
private void fillNextTaskCombox() {
|
ProcessCustomClientDelegate processCustomClientDelegate = new ProcessCustomClientDelegate(
|
LogonApplication.getUserEntityObject());
|
try {
|
String[] nextTaskName = getNextTaskNames(processCustomClientDelegate);
|
DefaultListModel model = new DefaultListModel();
|
|
for (int i = 0; i < nextTaskName.length; i++) {
|
model.addElement(nextTaskName[i]);
|
}
|
|
nextTaskList.setModel(model);
|
nextTaskList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
} catch (VCIError e) {
|
e.printStackTrace();
|
} catch (VCIException e) {
|
JOptionPane.showMessageDialog(LogonApplication.frame, "该资源数据模板没有配置相应流程,请确认!");
|
}
|
}
|
|
private String[] getNextTaskNames(
|
ProcessCustomClientDelegate processCustomClientDelegate)
|
throws VCIException, VCIError {
|
// 通过模板找到流程
|
String[] nextTaskName = processCustomClientDelegate.getTrainName(
|
jbpmDeploymentId, taskName, outcome);
|
return nextTaskName;
|
}
|
public String[] getUserName(){
|
return userName;
|
}
|
public String getDesc() {
|
return desc;
|
}
|
}
|