package com.vci.client.workflow.task; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; 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.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import javax.swing.DefaultListModel; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.border.TitledBorder; import javax.swing.event.TreeExpansionEvent; import javax.swing.event.TreeExpansionListener; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.TreeNode; 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.rightConfig.object.FunctionObject; 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.swing.components.VCIJDialog; 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.commom.ClientHelper; import com.vci.client.workflow.delegate.ProcessCustomClientDelegate; import com.vci.client.workflow.template.object.ProcessDefinitionObject; import com.vci.corba.common.VCIError; /** * 更改任务候选人 * * @author Administrator * */ public class ResetTaskUserByPlatformDialog extends VCIJDialog { private static final long serialVersionUID = 1461586100225135416L; private JTable historyTable; private HistoryTableModel historyTableModel; private boolean view = false; FunctionObject funcObject = new FunctionObject(); private String executionId; private JButton commit; private JButton cancel; private String outCome; private String desc; private String taskId; private String taskName; private boolean saveFlag = false; private String status; private JList taskList; private DefaultListModel taskListModel; private VCIBaseTreeModel treeModel; private Object userInfo; private VCIBaseTree rightManagementTree; private TransmitTreeObject transmitTreeObject = new TransmitTreeObject(); private Map> taskAndUserMap = new HashMap>(); private Map taskAndUserMap_1 = new HashMap(); private DefaultListModel resultListModel; private DefaultListModel tmpListModel = new DefaultListModel(); private List resultList = new ArrayList(); private JList userList; private String userValue ; private String roleValue ; private String departmentValue ; private VCIBaseTreeNode rootNode; public boolean isSaveFlag() { return saveFlag; } public void setSaveFlag(boolean saveFlag) { this.saveFlag = saveFlag; } public String getOutCome() { return outCome; } public void setOutCome(String outCome) { this.outCome = outCome; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } public Map> getTaskAndUserMap() { return taskAndUserMap; } public void setTaskAndUserMap(Map> taskAndUserMap) { this.taskAndUserMap = taskAndUserMap; } public ResetTaskUserByPlatformDialog(String executionId,String taskId,String taskName,String status) { super(LogonApplication.frame, true); this.executionId = executionId; this.taskId = taskId; this.taskName = taskName; this.status = status; initUI(); addListener(); initTaskList(); this.setLocationRelativeTo(null); } // public TodoTaskByPlatformDialog(Map datamap, ProcessTaskInfo frocessTaskInfo, boolean view) { // super(LogonApplication.frame, true); // this.view = view; // setTitle("查看"); // this.datamap = datamap; // this.frocessTaskInfo = frocessTaskInfo; // initUI(); // initData(); // addListener(); // } private void addListener() { commit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { if(taskAndUserMap==null||taskAndUserMap.size()==0){ VCIOptionPane.showMessage(LogonApplication.frame, "您还没有没有选择用户!"); return; }else{ saveFlag = true; dispose(); } } }); cancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { dispose(); } }); taskList.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent arg0) { super.mouseClicked(arg0); try { String deploymentId = new ProcessCustomClientDelegate().getDeploymentIdByExecutionId(executionId); String[] allCandidatesForTask = new ProcessCustomClientDelegate().getAllCandidatesForTask(deploymentId,(String)taskList.getSelectedValue(),""); if(allCandidatesForTask.length==1){ userValue = allCandidatesForTask[0]; roleValue = null; departmentValue = null; } if(allCandidatesForTask.length==2){ userValue = allCandidatesForTask[0]; roleValue = allCandidatesForTask[1]; departmentValue = null; } if(allCandidatesForTask.length==3){ userValue = allCandidatesForTask[0]; roleValue = allCandidatesForTask[1]; departmentValue = allCandidatesForTask[2]; } } catch (VCIError e) { e.printStackTrace(); } catch (VCIException e) { e.printStackTrace(); } // resultList = taskAndUserMap.get((String)taskList.getSelectedValue()); if(resultList == null){ resultList = new ArrayList(); } resultListModel.clear(); DefaultListModel defaultListModel = taskAndUserMap_1.get((String)taskList.getSelectedValue()); for(int i=0;i>"); btnNewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { int selectedIndex = taskList.getSelectedIndex(); if (selectedIndex == -1) { VCIOptionPane.showMessage( LogonApplication.frame, "请选择任务!"); return; } addToUserListFromTreeNode(true); taskAndUserMap.put( (String) taskList.getSelectedValue(), resultList); taskAndUserMap_1.put((String) taskList.getSelectedValue(), tmpListModel); userList.setModel(resultListModel); userList.updateUI(); } }); GridBagConstraints gbc_btnNewButton = new GridBagConstraints(); gbc_btnNewButton.anchor = GridBagConstraints.NORTHWEST; gbc_btnNewButton.insets = new Insets(0, 0, 5, 0); gbc_btnNewButton.gridx = 0; gbc_btnNewButton.gridy = 2; panel_5.add(btnNewButton, gbc_btnNewButton); } { JButton btnNewButton_1 = new JButton("<<"); btnNewButton_1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { removeUserFromUserList(true); } }); GridBagConstraints gbc_btnNewButton_1 = new GridBagConstraints(); gbc_btnNewButton_1.anchor = GridBagConstraints.NORTHWEST; gbc_btnNewButton_1.gridx = 0; gbc_btnNewButton_1.gridy = 4; panel_5.add(btnNewButton_1, gbc_btnNewButton_1); } } JScrollPane scrollPane_5 = new JScrollPane(); GridBagConstraints gbc_scrollPane_5 = new GridBagConstraints(); gbc_scrollPane_5.fill = GridBagConstraints.BOTH; gbc_scrollPane_5.gridx = 6; gbc_scrollPane_5.gridy = 1; panel_4.add(scrollPane_5, gbc_scrollPane_5); userList = new JList(); userList.setModel(resultListModel); scrollPane_5.setViewportView(userList); } /** * 居中屏幕 */ private void centerToScreen() { Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension componentSize = getSize(); if (componentSize.height > screenSize.height) { componentSize.height = screenSize.height; } if (componentSize.width > screenSize.width) { componentSize.width = screenSize.width; } setLocation((screenSize.width - componentSize.width) / 2, (screenSize.height - componentSize.height) / 2); } private String getI18nString(String spCode) { return ClientHelper.getI18nStringForWorkflow(this.getClass().getName() + "." + spCode, this.getLocale()); } private String getI18nStringByCode(String spCode) { return ClientHelper.getI18nStringForWorkflow(spCode, this.getLocale()); } private void initUserTree(VCIBaseTreeNode rootNode, String puid) { String userName = LogonApplication.getUserEntityObject().getUserName(); try { userInfo = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()).fetchUserInfoByName(userName); } catch (VCIException e) { e.printStackTrace(); return; } UserObject userObject = new UserObject(); userObject.setId("root"); VCIBaseTreeNode userNode = new VCIBaseTreeNode("用户", userObject); rootNode.add(userNode); } private void initRoleTree(VCIBaseTreeNode rootNode, String puid) { String userName = LogonApplication.getUserEntityObject().getUserName(); try { userInfo = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()).fetchUserInfoByName(userName); } catch (VCIException e) { e.printStackTrace(); return; } RoleObject roleObject = new RoleObject(); roleObject.setId("root"); VCIBaseTreeNode roleNode = new VCIBaseTreeNode(LocaleDisplay.getI18nString("rmip.stafforg.menu.role", "RMIPFramework", getLocale()), roleObject); rootNode.add(roleNode); } private void initDepartTree(VCIBaseTreeNode rootNode, String puid) { String userName = LogonApplication.getUserEntityObject().getUserName(); try { userInfo = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()).fetchUserInfoByName(userName); } catch (VCIException e) { e.printStackTrace(); 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; // resultListModel.addElement(object); // resultList.add(user); // } // } 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; resultListModel.addElement(object); tmpListModel.addElement(object); resultList.add("user:"+user.getUserName()); } if (object instanceof RoleObject) { RoleObject role = (RoleObject) object; if("root".equals(role.getId())){ continue; } if(checkRoleIdAdded(role)) return; resultListModel.addElement(object); tmpListModel.addElement(object); resultList.add("role:"+role.getName()); } if (object instanceof DeptObject) { DeptObject dept = (DeptObject) object; if("root".equals(dept.getId())){ continue; } if(checkDeptIdAdded(dept)) return; resultListModel.addElement(object); tmpListModel.addElement(object); resultList.add("department:"+dept.getName()); } } } private boolean checkUserIdAdded(UserObject obj){ boolean res = false; int size = resultListModel.getSize(); for(int i = 0; i < size; i++){ if(resultListModel.get(i) instanceof UserObject){ res = obj.getId().equals(((UserObject)resultListModel.get(i)).getId()); if(res) break; } } return res; } private void removeUserFromUserList(boolean batch){ Object[] selectedIndices = userList.getSelectedValues(); if(!batch){ selectedIndices = new Object[]{userList.getSelectedValue()}; } for(int i =0;i0){ initUserTree(rootNode, "root"); initRoleTree(rootNode, "root"); initDepartTree(rootNode, "root"); } } catch (VCIException e) { e.printStackTrace(); } catch (VCIError e) { e.printStackTrace(); } } private boolean checkRoleIdAdded(RoleObject obj){ boolean res = false; int size = resultListModel.getSize(); for(int i = 0; i < size; i++){ if(resultListModel.get(i) instanceof RoleObject){ res = obj.getId().equals(((RoleObject)resultListModel.get(i)).getId()); if(res) break; }else{ res = obj.getName().equals(resultListModel.get(i)); if(res) break; } } return res; } private boolean checkDeptIdAdded(DeptObject obj){ boolean res = false; int size = resultListModel.getSize(); for(int i = 0; i < size; i++){ if(resultListModel.get(i) instanceof DeptObject){ res = obj.getId().equals(((DeptObject)resultListModel.get(i)).getId()); if(res) break; }else{ res = obj.getName().equals(resultListModel.get(i)); if(res) break; } } return res; } }