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; } }