package com.vci.client.workflow.task; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import javax.swing.ButtonGroup; import javax.swing.ComboBoxModel; import javax.swing.DefaultCellEditor; import javax.swing.DefaultComboBoxModel; import javax.swing.DefaultListModel; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.event.TreeExpansionEvent; import javax.swing.event.TreeExpansionListener; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.TreePath; import com.vci.client.LogonApplication; import com.vci.client.common.TransmitTreeObject; import com.vci.client.common.objects.DeptObject; import com.vci.client.common.objects.RoleObject; import com.vci.client.common.objects.UserObject; import com.vci.client.framework.delegate.RightManagementClientDelegate; import com.vci.client.framework.systemConfig.stafforgmanage.RightManagementTreeCellRenderer; import com.vci.client.ui.exception.VCIException; import com.vci.client.ui.locale.LocaleDisplay; import com.vci.client.ui.swing.VCIOptionPane; import com.vci.client.ui.tree.VCIBaseTree; import com.vci.client.ui.tree.VCIBaseTreeModel; import com.vci.client.ui.tree.VCIBaseTreeNode; import com.vci.client.workflow.delegate.EventConfClientDelegate; import com.vci.client.workflow.delegate.ProcessCustomClientDelegate; import com.vci.client.workflow.editor.ui.CustomClassTableModel; import com.vci.client.workflow.editor.ui.PropertyObject; import com.vci.corba.common.VCIError; /** * This code was edited or generated using CloudGarden's Jigloo * SWT/Swing GUI Builder, which is free for non-commercial * use. If Jigloo is being used commercially (ie, by a corporation, * company or business for any purpose whatever) then you * should purchase a license for each developer using Jigloo. * Please visit www.cloudgarden.com for details. * Use of Jigloo implies acceptance of these licensing terms. * A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR * THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED * LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE. */ /** * 任务指派 * @author liudi * * 2013-7-5 */ public class AppointTaskDialog extends JDialog { private JLabel curTaskNameLab; private JScrollPane tableScrollPane; private JButton cancelBtn; private JButton okBtn; private JTable eventTable; private JLabel eventLab; private JComboBox appointTaskCombo; private JLabel appointTaskLab; private JTextField curTaskNameText; private JButton deleteBtn; private JButton addBtn; private JTextField jtfAddPerson; private JLabel jlAddPerson; private JButton btnAddPerson; private String curtTaskName; private String executionId; private String eventType = "appoint"; private UserObject userInfo; private String userName = LogonApplication.getUserEntityObject().getUserName(); private VCIBaseTree rightManagementTree; private TransmitTreeObject transmitTreeObject = new TransmitTreeObject(); private VCIBaseTreeModel treeModel; private JList list; private DefaultListModel listModel; private JList userList; private JList roleList; private JList deptList; private DefaultListModel userListModel; private DefaultListModel roleListModel; private DefaultListModel deptListModel; //存放用户信息 private List userObjectlist = new ArrayList(); //存放角色信息 private List roleObjectlist = new ArrayList(); //存放部门信息 private List deptObjectlist = new ArrayList(); // private KJButton okBtn = new KJButton(this.getI18nString("btnOk"), "ok.gif"); // private KJButton cancelBtn = new KJButton(this.getI18nString("btnCancel"), "cancel.gif"); private JRadioButton userButton = new JRadioButton("成员"); // private JRadioButton roleButton = new JRadioButton("角色"); // private JRadioButton departButton = new JRadioButton("部门"); JScrollPane scrollPane_1 = new JScrollPane(); // JScrollPane scrollPane_2 = new JScrollPane(); //选中某一按钮,记录下所选按钮的对象名称 private String radioChoseFlag = "user"; /** * Auto-generated main method to display this * JPanel inside a new JFrame. */ public AppointTaskDialog(String taskName,String executionId) { super(LogonApplication.frame,true); this.curtTaskName = taskName; this.executionId = executionId; initGUI(); displayCenter(); setVisible(true); } /** *显示在屏幕中央 */ private void displayCenter() { Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = this.getSize(); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } this.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); this.setModal(true); } private void initGUI() { try { this.setTitle("任务指派 "); this.setSize(new java.awt.Dimension(470, 750)); setLayout(new BorderLayout()); JScrollPane contentJsp = new JScrollPane(); JPanel mainPanel = new JPanel(); mainPanel.setLayout(new BorderLayout()); JScrollPane viewImgePanel = new JScrollPane(); ViewExecutionImagePanel viewPanel = new ViewExecutionImagePanel(executionId, curtTaskName); viewImgePanel.getViewport().add(viewPanel); mainPanel.add(viewImgePanel,BorderLayout.NORTH); JPanel contentPanel = new JPanel(); // JScrollPane jsp = new JScrollPane(); JPanel jsp = new JPanel(); jsp.setLayout(new BorderLayout()); contentPanel.setLayout(null); JPanel panelLeft = new JPanel(); JPanel panelRight = new JPanel(); panelRight = getUserSelectionPanel(); // panelLeft.setLayout(new BorderLayout()); // panelLeft.add(jsp,BorderLayout.CENTER); // panelLeft.add(panelRight,BorderLayout.EAST); jsp.add(contentPanel,BorderLayout.CENTER); jsp.add(panelRight,BorderLayout.EAST); mainPanel.add(jsp); add(mainPanel,BorderLayout.CENTER); { curTaskNameLab = new JLabel(); contentPanel.add(curTaskNameLab); curTaskNameLab.setText("当前任务名称:"); curTaskNameLab.setBounds(72, 53, 85, 17); } { curTaskNameText = new JTextField(); curTaskNameText.setText(curtTaskName); curTaskNameText.setEditable(false); contentPanel.add(curTaskNameText); curTaskNameText.setBounds(183, 49, 152, 24); } { appointTaskLab = new JLabel(); contentPanel.add(appointTaskLab); appointTaskLab.setText("指派任务名称:"); appointTaskLab.setBounds(72, 105, 85, 17); } { ComboBoxModel appointTaskComboModel = new DefaultComboBoxModel(); appointTaskCombo = new JComboBox(); contentPanel.add(appointTaskCombo); appointTaskCombo.setModel(appointTaskComboModel); appointTaskCombo.setBounds(183, 101, 152, 24); String deployId = new ProcessCustomClientDelegate(LogonApplication.getUserEntityObject()).getDeploymentIdByExecutionId(executionId); String[] taskNames = new ProcessCustomClientDelegate(LogonApplication.getUserEntityObject()).getAllTaskNames(deployId); for(String taskName : taskNames){ if(!curtTaskName.equals(taskName)){ appointTaskCombo.addItem(taskName); } } } { eventLab = new JLabel(); contentPanel.add(eventLab); eventLab.setText("指派任务事件"); eventLab.setBounds(72, 153, 132, 17); } { tableScrollPane = new JScrollPane(); contentPanel.add(tableScrollPane); tableScrollPane.setBounds(72, 176, 268, 143); { tableScrollPane.setViewportView(getCustomProperty()); } } { okBtn = new JButton(); contentPanel.add(okBtn); okBtn.setText("确定"); okBtn.setBounds(128, 343, 62, 24); okBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ProcessCustomClientDelegate clientDelagate = new ProcessCustomClientDelegate(LogonApplication.getUserEntityObject()); String tagActivityName = (String) appointTaskCombo.getSelectedItem(); int rowCount = eventTable.getRowCount(); String[] classNames = new String[rowCount]; for(int i=0;i taskTypes = new ArrayList(); taskTypes.add(new PropertyObject("", "")); for (int i = 0; i < types.length; i++) { if("".equals(types[i].trim())) continue; /*taskTypes.add(new PropertyObject(types[i], EventProperties.getStringProperty("workflow.event.type.appoint." + types[i])));*/ //add by caill start 2016.4.8 通过corba连接服务端 try { taskTypes.add(new PropertyObject(types[i], new EventConfClientDelegate().getStringProperty("workflow.event.type.appoint." + types[i]))); } catch (VCIError e) { // TODO Auto-generated catch block e.printStackTrace(); } //add by caill end } return taskTypes.toArray(new PropertyObject[0]); } private String getI18nForEvent(String key) { return LocaleDisplay.getI18nString(key, "RMIPWorkflow", getLocale()); } private JButton getJButton1() { if(addBtn == null) { addBtn = new JButton(); addBtn.setText("添加"); addBtn.setBounds(346, 198, 62, 24); } return addBtn; } private JButton getJButton2() { if(deleteBtn == null) { deleteBtn = new JButton(); deleteBtn.setText("删除"); deleteBtn.setBounds(346, 228, 62, 24); } return deleteBtn; } private JPanel getUserSelectionPanel(){ JPanel mainPanel = new JPanel(); mainPanel.setLayout(new BorderLayout()); JPanel panel = new JPanel(); JPanel topPanel = new JPanel(); ButtonGroup bgroup = new ButtonGroup(); bgroup.add(userButton); // bgroup.add(roleButton); // bgroup.add(departButton); userButton.setSelected(true); topPanel.add(userButton); // topPanel.add(roleButton); // roleButton.setSelected(true); // topPanel.add(departButton); mainPanel.add(topPanel, BorderLayout.NORTH); mainPanel.add(panel, BorderLayout.CENTER); panel.setLayout(new BorderLayout(0, 0)); JPanel panel_1 = new JPanel(); panel.add(panel_1, BorderLayout.CENTER); GridBagLayout gbl_panel_1 = new GridBagLayout(); panel_1.setLayout(gbl_panel_1); JPanel panel_2 = new JPanel(); GridBagConstraints gbc_panel_2 = new GridBagConstraints(); gbc_panel_2.weighty = 1.0; gbc_panel_2.weightx = 1.0; gbc_panel_2.insets = new Insets(0, 0, 0, 5); gbc_panel_2.fill = GridBagConstraints.BOTH; gbc_panel_2.gridx = 0; gbc_panel_2.gridy = 0; panel_1.add(panel_2, gbc_panel_2); panel_2.setLayout(new BorderLayout(0, 0)); Dimension listDim = new Dimension(150, 200); JScrollPane scrollPane = new JScrollPane(); panel_2.add(scrollPane); scrollPane.setPreferredSize(listDim); final VCIBaseTreeNode rootNode = new VCIBaseTreeNode(LocaleDisplay.getI18nString("rmip.stafforg.menu.staffOrg", "RMIPFramework", getLocale()), "root"); treeModel = new VCIBaseTreeModel(rootNode); initUserTree(rootNode, "root"); // initTree(rootNode, "root"); // initDepartTree(rootNode, "root"); userButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { rootNode.removeAllChildren(); initUserTree(rootNode, "root"); treeModel.reload(); // int size = userListModel.getSize(); // for(int i=0;i>"); panel_5.add(rightChose,BorderLayout.NORTH); JButton liftRight = new JButton("<<"); panel_5.add(liftRight); JPanel panel_4 = new JPanel(); GridBagConstraints gbc_panel_4 = new GridBagConstraints(); gbc_panel_4.weightx = 1.0; gbc_panel_4.weighty = 1.0; gbc_panel_4.insets = new Insets(0, 0, 0, 5); gbc_panel_4.fill = GridBagConstraints.BOTH; gbc_panel_4.gridx = 2; gbc_panel_4.gridy = 0; panel_1.add(panel_4, gbc_panel_4); panel_4.setLayout(new BorderLayout(0, 0)); panel_4.add(scrollPane_1); listModel = new DefaultListModel(); list = new JList(listModel); list.setBackground(Color.WHITE); userListModel = new DefaultListModel(); roleListModel = new DefaultListModel(); deptListModel = new DefaultListModel(); userList = new JList(userListModel); roleList = new JList(roleListModel); deptList = new JList(deptListModel); scrollPane_1.setViewportView(userList); scrollPane_1.setPreferredSize(listDim); rightChose.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { addToUserListFromTreeNode(true); } }); liftRight.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { removeUserFromUserList(true); } }); userList.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if(e.getClickCount() != 2) return; removeUserFromUserList(false); } }); roleList.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if(e.getClickCount() != 2) return; removeUserFromUserList(false); } }); deptList.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if(e.getClickCount() != 2) return; removeUserFromUserList(false); } }); init(); pack(); return mainPanel; } private void init() { rightManagementTree.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if(e.getClickCount() != 2) return; TreePath path = rightManagementTree.getPathForLocation(e.getX(), e.getY()); if(path == null) return; if(path != null && !(path.getLastPathComponent() instanceof VCIBaseTreeNode)) return; VCIBaseTreeNode clickedNode = (VCIBaseTreeNode)path.getLastPathComponent(); if(clickedNode.getLevel()<3) return; transmitTreeObject.setCurrentTreeNode(clickedNode); addToUserListFromTreeNode(false); } }); rightManagementTree.addTreeSelectionListener(new TreeSelectionListener() { public void valueChanged(TreeSelectionEvent e) { // rightManagementTree_valueChanged(e); TreePath treePath = e.getPath(); VCIBaseTreeNode selectNode = (VCIBaseTreeNode) treePath.getLastPathComponent(); transmitTreeObject.setCurrentTreeNode(selectNode); } }); /** * 树的展开事件 */ rightManagementTree.addTreeExpansionListener(new TreeExpansionListener() { public void treeExpanded(TreeExpansionEvent event) { TreePath treePath = event.getPath(); VCIBaseTreeNode selectNode = (VCIBaseTreeNode) treePath.getLastPathComponent(); transmitTreeObject.setCurrentTreeNode(selectNode); Object object = selectNode.getObj(); if (!selectNode.isExpand()) { selectNode.setExpand(true); transmitTreeObject.getCurrentTreeNode().removeAllChildren(); if (object instanceof UserObject) { UserObject user = (UserObject) object; if (user.getId().equals("root")) { UserObject[] userInfos; try { userInfos = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()).fetchUserInfo(); for (UserObject userObject : userInfos) { treeModel.insertNodeInto(new VCIBaseTreeNode(userObject.toString(), userObject), selectNode, selectNode.getChildCount()); } } catch (VCIException e) { e.printStackTrace(); } } } // if (object instanceof RoleObject) { // RoleObject role = (RoleObject) object; // if (role.getId().equals("root")) { // try { // RoleObject[] roleInfos = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()).fetchRoleInfo(); // // for (RoleObject roleObject : roleInfos) { // treeModel.insertNodeInto(new VCIBaseTreeNode(roleObject.getName(), roleObject), selectNode, selectNode.getChildCount()); // } // // } catch (VCIError e) { // e.printStackTrace(); // } // } //// else{ //// try { //// UserObject[] userObj = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()).fetchUsersByRoleId(role.getId()); //// for(UserObject userobj:userObj){ //// treeModel.insertNodeInto(new VCIBaseTreeNode(userobj.toString(), userobj),selectNode, selectNode.getChildCount()); //// } //// } catch (VCIException e) { //// VCIOptionPane.showError(LogonApplication.frame, "RMIPFramework", e); //// e.printStackTrace(); //// } //// } // } // if (object instanceof DeptObject){ // try { // DeptObject[] DeptInfos = null; // if (((DeptObject) object).getId().equals("root")){ // DeptInfos= new RightManagementClientDelegate(LogonApplication.getUserEntityObject()) // .fetchDeptInfoRoot(); // if (DeptInfos == null){ // return; // } // int len = DeptInfos.length; // for (int i = 0; i < len; i++) { // treeModel.insertNodeInto(new VCIBaseTreeNode(DeptInfos[i].getName(), DeptInfos[i]),selectNode,selectNode.getChildCount()); // } // }else if(((DeptObject) object).getId().equals("")){ // DeptInfos = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()) // .fetchDeptInfoByParentId(((DeptObject) object).getId()); // if (DeptInfos == null){ // return; // } // int len = DeptInfos.length; // for (int i = 0; i < len; i++) { // treeModel.insertNodeInto(new VCIBaseTreeNode(DeptInfos[i].getName(), DeptInfos[i]),selectNode,selectNode.getChildCount()); // } // }else{ //// try { // UserObject[] userObj = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()).getUserByDeptList(((DeptObject) object).getId()); // for (UserObject userobj : userObj) { // treeModel.insertNodeInto(new VCIBaseTreeNode(userobj.toString(), userobj), selectNode, selectNode.getChildCount()); // } //// }catch (VCIException e) { //// VCIOptionPane.showError(LogonApplication.frame, "RMIPFramework", e); //// e.printStackTrace(); //// } // } // } catch (VCIException e) { // VCIOptionPane.showError(LogonApplication.frame, "RMIPFramework", e); // return; // } catch (VCIError e) { // e.printStackTrace(); // } // } } } public void treeCollapsed(TreeExpansionEvent arg0) { } }); transmitTreeObject.setTreeModel(treeModel); transmitTreeObject.setTree(rightManagementTree); } private void initUserTree(VCIBaseTreeNode rootNode, String puid) { // try { // userInfo = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()).fetchUserInfoByName(userName); // } catch (VCIException e) { // VCIOptionPane.showError(LogonApplication.frame,"RMIPFramework", e); // return; // } UserObject userObject = new UserObject(); userObject.setId("root"); VCIBaseTreeNode userNode = new VCIBaseTreeNode(LocaleDisplay.getI18nString("rmip.stafforg.menu.staff", "RMIPFramework", getLocale()), userObject); rootNode.add(userNode); } /** *

* Description: 初始化人员组织结构树 *

* * @author wangxl * @time 2011-5-31 * @param rootNode * @param puid */ private void initTree(VCIBaseTreeNode rootNode, String puid) { // try { // userInfo = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()).fetchUserInfoByName(userName); // } catch (VCIException e) { // VCIOptionPane.showError(LogonApplication.frame, "RMIPFramework", e); // return; // } RoleObject roleObject = new RoleObject(); roleObject.setId("root"); VCIBaseTreeNode roleNode = new VCIBaseTreeNode(LocaleDisplay.getI18nString("rmip.stafforg.menu.role", "RMIPFramework", getLocale()), roleObject); rootNode.add(roleNode); } /** * 初始化部门树 * @param rootNode * @param puid */ private void initDepartTree(VCIBaseTreeNode rootNode, String puid) { // try { // userInfo = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()).fetchUserInfoByName(userName); // } catch (VCIException e) { // VCIOptionPane.showError(LogonApplication.frame, "RMIPFramework",e); // return; // } DeptObject rootDepartment = new DeptObject(); rootDepartment.setId("root"); VCIBaseTreeNode departmentNode = new VCIBaseTreeNode( LocaleDisplay.getI18nString("rmip.stafforg.menu.department", "RMIPFramework", getLocale()), rootDepartment); rootNode.add(departmentNode); } private void addToUserListFromTreeNode(boolean batch){ LinkedList nodeList = new LinkedList(); TreePath[] paths = rightManagementTree.getSelectionPaths(); if(batch && paths != null){ for(TreePath path : paths){ nodeList.add((VCIBaseTreeNode)path.getLastPathComponent()); } } else{ nodeList.add(transmitTreeObject.getCurrentTreeNode()); } for(VCIBaseTreeNode selectNode : nodeList){ if(selectNode == null) continue; Object object = selectNode.getObj(); if (object instanceof UserObject) { UserObject user = (UserObject) object; if("root".equals(user.getId())){ continue; } if(checkUserIdAdded(user)) return; userListModel.addElement(object); } if (object instanceof RoleObject) { RoleObject role = (RoleObject) object; if("root".equals(role.getId())){ continue; } if(checkRoleIdAdded(role)) return; roleListModel.addElement(object); } if (object instanceof DeptObject) { DeptObject dept = (DeptObject) object; if("root".equals(dept.getId())){ continue; } if(checkDeptIdAdded(dept)) return; deptListModel.addElement(object); } } } private boolean checkUserIdAdded(UserObject obj){ boolean res = false; int size = userListModel.getSize(); for(int i = 0; i < size; i++){ if(userListModel.get(i) instanceof UserObject){ res = obj.getId().equals(((UserObject)userListModel.get(i)).getId()); if(res) break; } } return res; } private boolean checkRoleIdAdded(RoleObject obj){ boolean res = false; int size = roleListModel.getSize(); for(int i = 0; i < size; i++){ if(roleListModel.get(i) instanceof RoleObject){ res = obj.getId().equals(((RoleObject)roleListModel.get(i)).getId()); if(res) break; } } return res; } private boolean checkDeptIdAdded(DeptObject obj){ boolean res = false; int size = deptListModel.getSize(); for(int i = 0; i < size; i++){ if(deptListModel.get(i) instanceof DeptObject){ res = obj.getId().equals(((DeptObject)deptListModel.get(i)).getId()); if(res) break; } } return res; } private void removeUserFromUserList(boolean batch){ if(radioChoseFlag.equals("user")){ Object[] selectedIndices = userList.getSelectedValues(); if(!batch){ selectedIndices = new Object[]{userList.getSelectedValue()}; } for(int i =0;i