package com.vci.client.workflow.editor.user; 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.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.DefaultListModel; import javax.swing.JButton; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JScrollPane; 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.KJButton; 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.corba.common.VCIError; public class UserSelectionDialog extends VCIJDialog { /** * */ private static final long serialVersionUID = 1L; 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(); //选中某一按钮,记录下所选按钮的对象名称 private String radioChoseFlag = "user"; public UserSelectionDialog() { super(LogonApplication.frame, true); 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); topPanel.add(departButton); getContentPane().add(topPanel, BorderLayout.NORTH); getContentPane().add(panel, BorderLayout.CENTER); panel.setLayout(new BorderLayout(0, 0)); JPanel panel_3 = new JPanel(); panel.add(panel_3, BorderLayout.SOUTH); panel_3.add(okBtn); okBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { int userSize = userList.getModel().getSize(); int roleSize = roleList.getModel().getSize(); int deptSize = deptList.getModel().getSize(); if(userSize == 0&&roleSize==0&&deptSize==0){ VCIOptionPane.showMessage(LogonApplication.frame, "请选择信息!"); return; } userObjectlist.clear(); 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)); // JScrollPane scrollPane_1 = new JScrollPane(); panel_4.add(scrollPane_1); listModel = new DefaultListModel(); list = new JList(listModel); list.setBackground(Color.WHITE); // scrollPane_1.setViewportView(list); 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(); } 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 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 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()<2) 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")) { try { UserObject[] userInfos = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()).fetchUserInfo(); UserObject currentUser = new UserObject(); currentUser.setId("currentUser"); currentUser.setUserName("#CURRENTUSER#"); currentUser.setTrueName("当前登录用户"); treeModel.insertNodeInto(new VCIBaseTreeNode(currentUser.toString(), currentUser), selectNode, selectNode.getChildCount()); 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; } } } if (object instanceof DeptObject){ try { DeptObject[] DeptInfos = null; if (((DeptObject) object).getId().equals("root")){ DeptInfos= new RightManagementClientDelegate(LogonApplication.getUserEntityObject()) .fetchDepartmentInfo(); }else{ DeptInfos = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()) .fetchDepartmentInfoByParentId(((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()); } } catch (VCIException e) { e.printStackTrace(); return; } } } } public void treeCollapsed(TreeExpansionEvent arg0) { } }); transmitTreeObject.setTreeModel(treeModel); transmitTreeObject.setTree(rightManagementTree); } // private void rightManagementTree_valueChanged(TreeSelectionEvent e) { // // TreePath treePath = e.getPath(); // VCIBaseTreeNode selectNode = (VCIBaseTreeNode) treePath.getLastPathComponent(); // transmitTreeObject.setCurrentTreeNode(selectNode); // Object object = selectNode.getObj(); // if (object instanceof RoleObject) { // RoleObject role = (RoleObject) object; // try { // if("root".equals(role.getId())){ // return; // } // UserObject[] selectRole = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()).selectRole(role.getId()); // // 更新右边JLIST // listModel.removeAllElements(); // for (UserObject userObject : selectRole) { // listModel.addElement(userObject); // } // // } catch (VCIError e1) { // e1.printStackTrace(); // } // } // if(object instanceof DeptObject){ // DeptObject DeptObject = (DeptObject) object; // if("root".equals(DeptObject.getId())){ // return; // } // UserObject[] selectUser; // try { // selectUser = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()).getUserByDeptId(DeptObject.getId()); // // 更新右边JLIST // listModel.removeAllElements(); // for (UserObject userObject : selectUser) { // listModel.addElement(userObject); // } // } catch (VCIException e1) { // e1.printStackTrace(); // } // // // } // } /** *

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

* * @author ld * @time 2012-11-09 * @param rootNode * @param puid */ private void initUserTree(VCIBaseTreeNode rootNode, String puid) { 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(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) { 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); } /** * 初始化部门树 * @param rootNode * @param puid */ private void initDepartTree(VCIBaseTreeNode rootNode, String puid) { 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 String getI18nString(String spCode) { return ClientHelper.getI18nStringForWorkflow(this.getClass().getName() + "." + spCode, this.getLocale()); } public List getUserObjectlist() { return userObjectlist; } public List getRoleObjectlist() { return roleObjectlist; } public List getDeptObjectlist() { return deptObjectlist; } public void setUserObjectlist(List userObjectlist) { this.userObjectlist = userObjectlist; userListModel.removeAllElements(); for(UserObject obj : userObjectlist){ userListModel.addElement(obj); } userList.setModel(userListModel); } public void setRoleObjectlist(List roleObjectlist) { this.roleObjectlist = roleObjectlist; roleListModel.removeAllElements(); for(RoleObject obj : roleObjectlist){ roleListModel.addElement(obj); } roleList.setModel(roleListModel); } public void setDeptObjectlist(List deptObjectlist) { this.deptObjectlist = deptObjectlist; deptListModel.removeAllElements(); for(DeptObject obj : deptObjectlist){ deptListModel.addElement(obj); } deptList.setModel(deptListModel); } }