package com.vci.client.portal.Formdesign; 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.LinkedList; import java.util.List; import javax.swing.DefaultListModel; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; 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.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.framework.util.ClientHelper; import com.vci.client.ui.exception.VCIException; import com.vci.client.ui.locale.LocaleDisplay; 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; /** * 更改任务候选人 * * @author Administrator * */ public class RightUserDialog extends VCIJDialog { private static final long serialVersionUID = 1461586100225135416L; private JButton commit; private JButton cancel; private boolean saveFlag = false; private VCIBaseTreeModel treeModel; private VCIBaseTree rightManagementTree; private TransmitTreeObject transmitTreeObject = new TransmitTreeObject(); private DefaultListModel resultListModel; private List resultList = new ArrayList(); private JList userList; private VCIBaseTreeNode rootNode; private UserObject userInfo; public List getResultList() { return resultList; } public void setResultList(List resultList) { this.resultList = resultList; } public boolean isSaveFlag() { return saveFlag; } public void setSaveFlag(boolean saveFlag) { this.saveFlag = saveFlag; } public RightUserDialog() { super(LogonApplication.frame, true); initUI(); addListener(); this.setLocationRelativeTo(null); } private void addListener() { commit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { saveFlag = true; dispose(); } }); cancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { dispose(); } }); rightManagementTree.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if(e.getClickCount() != 2) return; TreePath path = rightManagementTree.getPathForLocation(e.getX(), e.getY()); VCIBaseTreeNode clickedNode = (VCIBaseTreeNode) rightManagementTree.getLastSelectedPathComponent(); if(path == null) return; if(clickedNode.getLevel()<2) return; transmitTreeObject.setCurrentTreeNode(clickedNode); addToUserListFromTreeNode(false); } }); rightManagementTree.addTreeSelectionListener(new TreeSelectionListener() { public void valueChanged(TreeSelectionEvent 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")) { try { UserObject[] 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(); return; } } } 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 (VCIException e) { e.printStackTrace(); return; } }else{ try { UserObject[] fetchUserInfoByRoleId = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()).fetchUserInfoByRoleId(role.getId(), role.getType()); for (UserObject userObject : fetchUserInfoByRoleId) { treeModel.insertNodeInto(new VCIBaseTreeNode(userObject.getUserName(), userObject), selectNode, selectNode.getChildCount()); } } catch (VCIException e) { e.printStackTrace(); } } } if (object instanceof DeptObject){ RightManagementClientDelegate del = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()); try { DeptObject[] DeptInfos = null; DeptObject deptObject = (DeptObject) object; if (deptObject.getId().equals("root")){ DeptInfos= new RightManagementClientDelegate(LogonApplication.getUserEntityObject()) .fetchDepartmentInfo(); }else{ DeptInfos = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()) .fetchDepartmentInfoByParentId(deptObject.getId()); } if (DeptInfos == null){ if (!deptObject.getId().equals("root")){ UserObject[] objs = del.getUserByDeptId(deptObject.getId()); for(int i=0;i>"); btnNewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { addToUserListFromTreeNode(true); 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 = 4; 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 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="+user.getUserName()); } if (object instanceof RoleObject) { RoleObject role = (RoleObject) object; if("root".equals(role.getId())){ continue; } if(checkRoleIdAdded(role)) return; resultListModel.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); 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;i