package com.vci.client.framework.common; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Frame; 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.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import javax.swing.BoxLayout; import javax.swing.ButtonGroup; import javax.swing.DefaultListModel; import javax.swing.JTree; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.TreePath; import com.incors.plaf.alloy.p; import com.vci.client.LogonApplication; 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.ui.exception.VCIException; import com.vci.client.ui.swing.VCIOptionPane; import com.vci.client.ui.swing.VCISwingUtil; import com.vci.client.ui.swing.components.VCIJButton; import com.vci.client.ui.swing.components.VCIJDialog; import com.vci.client.ui.swing.components.VCIJLabel; import com.vci.client.ui.swing.components.VCIJList; import com.vci.client.ui.swing.components.VCIJPanel; import com.vci.client.ui.swing.components.VCIJRadioButton; import com.vci.client.ui.swing.components.VCIJScrollPane; import com.vci.client.ui.swing.components.VCIJTree; import com.vci.client.ui.tree.VCIBaseTreeModel; import com.vci.client.ui.tree.VCIBaseTreeNode; import com.vci.mw.ClientContextVariable; public class CommonUserChooseDialog extends VCIJDialog implements ActionListener { /** * */ private static final long serialVersionUID = 1L; private String dialogTitle = "选择用户"; private String userModelTitle = "选择成员:"; private String roleModelTitle = "选择角色:"; private String roleModelUsers = "角色下的成成员:"; private String deptModelTitle = "选择部门:"; private String deptModelUsers = "部门下的成员:"; private VCIJLabel lblNorthModelType = new VCIJLabel("按 "); private VCIJRadioButton rbtnUser = new VCIJRadioButton("成员"); private VCIJRadioButton rbtnRole = new VCIJRadioButton("角色"); private VCIJRadioButton rbtnDept = new VCIJRadioButton("部门"); private VCIJLabel lblNorthNote = new VCIJLabel(""); private String rootText = "人员组织"; private String nextUserTitle = "选择用户"; private VCIJPanel userModelPanel = new VCIJPanel(); private VCIJTree userTree = null; private VCIBaseTreeNode userModelTreeNode = null; private VCIBaseTreeModel userTreeModel = null; private String userTreeNodeFlag = "userTreeNode"; private VCIJList userModelNextUsers = null; private VCIJPanel roleModelPanel = new VCIJPanel(); private VCIJTree roleTree = null; private VCIBaseTreeNode roleModelTreeNode = null; private VCIBaseTreeModel roleTreeModel = null; private String roleTreeNodeFlag = "roleTreeNode"; private VCIJList roleUsersList = null; private VCIJList roleModelNextUsers = null; private VCIJPanel deptModelPanel = new VCIJPanel(); private VCIJTree deptTree = null; private VCIBaseTreeNode deptModelTreeNode = null; private VCIBaseTreeModel deptTreeModel = null; private String deptTreeNodeFlag = "deptTreeNode"; private VCIJList deptUsersList = null; private VCIJList deptModelNextUsers = null; private boolean isCancelClicked = false; private VCIJButton btnOk = VCISwingUtil.createVCIJButton("ok", "确定", "", "accept.png", this); private VCIJButton btnCancel = VCISwingUtil.createVCIJButton("cancel", "取消", "", "cancel.png", this); private LinkedHashMap actionMaps = new LinkedHashMap(); private RightManagementClientDelegate rmgrDel = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()); MouseAdapter addToUserListMouseAdapter = new MouseAdapter(){ @Override public void mouseClicked(MouseEvent e) { if(e.getClickCount() == 2){ addToNext(true); } } }; MouseAdapter removeFromUserListMouseAdapter = new MouseAdapter(){ @Override public void mouseClicked(MouseEvent e) { if(e.getClickCount() == 2){ removeFromNext(true); } } }; MouseAdapter treeClickMouseAdapter = new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { if(e.getClickCount() == 2){ treeMouseDBClick(e); } } }; TreeSelectionListener treeSelectionListener = new TreeSelectionListener() { @Override public void valueChanged(TreeSelectionEvent e) { treeValueChanged(e); } }; public CommonUserChooseDialog(Frame f){ super(f, true); initUI(); initActionMaps(); initDialogSize(600, 400); setVisible(true); } private void initUI(){ setTitle(dialogTitle); setLayout(new BorderLayout()); add(createNorthButtonPanel(), BorderLayout.NORTH); add(createCenterPanel(), BorderLayout.CENTER); add(createSouthButtonPanel(), BorderLayout.SOUTH); //window自带关闭功能的实现 this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { cancel(); } }); } private VCIJPanel createNorthButtonPanel(){ ButtonGroup rbtnGroup = new ButtonGroup(); rbtnGroup.add(rbtnUser); rbtnGroup.add(rbtnRole); rbtnGroup.add(rbtnDept); VCIJPanel pal = new VCIJPanel(new FlowLayout(FlowLayout.LEFT)); pal.add(lblNorthModelType); pal.add(rbtnUser); pal.add(rbtnRole); pal.add(rbtnDept); pal.add(lblNorthNote); return pal; } private VCIJPanel createCenterPanel(){ VCIJPanel pal = new VCIJPanel(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); c.anchor = GridBagConstraints.NORTHWEST; c.fill = GridBagConstraints.BOTH; c.weightx = 1.0; c.weighty = 1.0; userModelPanel = createUserModelPanel(); pal.add(userModelPanel, c); c.gridx = GridBagConstraints.REMAINDER; roleModelPanel = createRoleModelPanel(); pal.add(roleModelPanel, c); c.gridx = GridBagConstraints.REMAINDER; deptModelPanel = createDeptModelPanel(); pal.add(deptModelPanel, c); rbtnUser.setSelected(true); userModelPanel.setVisible(true); roleModelPanel.setVisible(false); deptModelPanel.setVisible(false); return pal; } private VCIJPanel createUserModelPanel(){ String titleIcon = "user.png"; VCIJPanel pal = new VCIJPanel(new GridBagLayout()); int gridx = 0; VCIJPanel palWest = new VCIJPanel(new BorderLayout()); VCIJLabel lblWest = new VCIJLabel(userModelTitle, VCISwingUtil.createImageIcon(titleIcon), VCIJLabel.LEFT); palWest.add(lblWest, BorderLayout.NORTH); VCIBaseTreeNode rootTreeNode = new VCIBaseTreeNode(rootText, "root"); String modelText = userModelTitle.replaceAll("选择", "").replaceAll(":", ""); userModelTreeNode = new VCIBaseTreeNode(modelText, userTreeNodeFlag); rootTreeNode.add(userModelTreeNode); userTreeModel = new VCIBaseTreeModel(rootTreeNode); userTree = new VCIJTree(userTreeModel); LocalTreeCellRenderer treeCellRender = new LocalTreeCellRenderer(titleIcon); userTree.setCellRenderer(treeCellRender); userTree.addTreeSelectionListener(treeSelectionListener); userTree.addMouseListener(treeClickMouseAdapter); VCIJScrollPane jspWest = new VCIJScrollPane(); jspWest.getViewport().add(userTree); palWest.add(jspWest, BorderLayout.CENTER); jspWest.setPreferredSize(new Dimension(220, 10)); pal.add(palWest, createGridBagConstraints(gridx++, 0, 1, 4, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH)); VCIJPanel palEast = new VCIJPanel(new BorderLayout()); VCIJLabel lblEast = new VCIJLabel(nextUserTitle, VCISwingUtil.createImageIcon("user.png"), VCIJLabel.LEFT); palEast.add(lblEast, BorderLayout.NORTH); // 批量添加\移除 VCIJPanel palAddRemoveBtnPanel = new VCIJPanel(); palAddRemoveBtnPanel.setLayout(new BoxLayout(palAddRemoveBtnPanel, BoxLayout.Y_AXIS)); VCIJButton btnToNextUser = VCISwingUtil.createVCIJButton("addToNextUser", "", "", "arrow-right.png", this); VCIJButton btnRemoveFromNext = VCISwingUtil.createVCIJButton("removeFromNext", "", "", "arrow-left.png", this); pal.add(btnToNextUser, createGridBagConstraints(gridx+1, 1, 1, 1, 1.0, 10.0, GridBagConstraints.CENTER, GridBagConstraints.NONE)); pal.add(btnRemoveFromNext, createGridBagConstraints(gridx+1, 2, 1, 1, 1.0, 10.0, GridBagConstraints.CENTER, GridBagConstraints.NONE)); DefaultListModel listModel = new DefaultListModel(); userModelNextUsers = new VCIJList(listModel); userModelNextUsers.addMouseListener(removeFromUserListMouseAdapter); VCIJScrollPane jspEast = new VCIJScrollPane(); jspEast.getViewport().add(userModelNextUsers); palEast.add(jspEast, BorderLayout.CENTER); palEast.setPreferredSize(new Dimension(220, 10)); gridx += 2; pal.add(palEast, createGridBagConstraints(gridx++, 0, 1, 4, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH)); return pal; } private VCIJPanel createRoleModelPanel(){ String titleIcon = "group.png"; VCIJPanel pal = new VCIJPanel(new GridBagLayout()); int gridx = 0; VCIJPanel palWest = new VCIJPanel(new BorderLayout()); VCIJLabel lblWest = new VCIJLabel(roleModelTitle, VCISwingUtil.createImageIcon(titleIcon), VCIJLabel.LEFT); palWest.add(lblWest, BorderLayout.NORTH); VCIBaseTreeNode rootTreeNode = new VCIBaseTreeNode(rootText, "root"); String modelText = roleModelTitle.replaceAll("选择", "").replaceAll(":", ""); roleModelTreeNode = new VCIBaseTreeNode(modelText, roleTreeNodeFlag); rootTreeNode.add(roleModelTreeNode); roleTreeModel = new VCIBaseTreeModel(rootTreeNode); roleTree = new VCIJTree(roleTreeModel); LocalTreeCellRenderer treeCellRender = new LocalTreeCellRenderer(titleIcon); roleTree.setCellRenderer(treeCellRender); roleTree.addTreeSelectionListener(treeSelectionListener); roleTree.addMouseListener(treeClickMouseAdapter); VCIJScrollPane jspWest = new VCIJScrollPane(); jspWest.getViewport().add(roleTree); palWest.add(jspWest, BorderLayout.CENTER); jspWest.setPreferredSize(new Dimension(150, 10)); pal.add(palWest, createGridBagConstraints(gridx++, 0, 1, 4, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH)); VCIJPanel palMiddle = new VCIJPanel(new BorderLayout()); VCIJLabel lblMiddle = new VCIJLabel(roleModelUsers, VCISwingUtil.createImageIcon("user.png"), VCIJLabel.LEFT); palMiddle.add(lblMiddle, BorderLayout.NORTH); roleUsersList = new VCIJList(new DefaultListModel()); roleUsersList.addMouseListener(addToUserListMouseAdapter); VCIJScrollPane jspMiddle = new VCIJScrollPane(); jspMiddle.getViewport().add(roleUsersList); palMiddle.add(jspMiddle, BorderLayout.CENTER); pal.add(palMiddle, createGridBagConstraints(gridx++, 0, 1, 4, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH)); // 批量添加\移除 VCIJPanel palAddRemoveBtnPanel = new VCIJPanel(); palAddRemoveBtnPanel.setLayout(new BoxLayout(palAddRemoveBtnPanel, BoxLayout.Y_AXIS)); VCIJButton btnToNextUser = VCISwingUtil.createVCIJButton("addToNext", "", "", "arrow-right.png", this); VCIJButton btnRemoveFromNext = VCISwingUtil.createVCIJButton("removeFromNext", "", "", "arrow-left.png", this); palAddRemoveBtnPanel.add(btnToNextUser); palAddRemoveBtnPanel.add(btnRemoveFromNext); pal.add(btnToNextUser, createGridBagConstraints(gridx+1, 2, 1, 1, 0.0, 10.0, GridBagConstraints.CENTER, GridBagConstraints.NONE)); pal.add(btnRemoveFromNext, createGridBagConstraints(gridx+1, 3, 1, 1, 0.0, 10.0, GridBagConstraints.CENTER, GridBagConstraints.NONE)); gridx += 2; VCIJPanel palEast = new VCIJPanel(new BorderLayout()); VCIJLabel lblEast = new VCIJLabel(nextUserTitle, VCISwingUtil.createImageIcon("user.png"), VCIJLabel.LEFT); palEast.add(lblEast, BorderLayout.NORTH); roleModelNextUsers = new VCIJList(new DefaultListModel()); roleModelNextUsers.addMouseListener(removeFromUserListMouseAdapter); VCIJScrollPane jspEast = new VCIJScrollPane(); jspEast.getViewport().add(roleModelNextUsers); palEast.add(jspEast, BorderLayout.CENTER); pal.add(palEast, createGridBagConstraints(gridx++, 0, 1, 4, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH)); return pal; } private VCIJPanel createDeptModelPanel(){ String titleIcon = "book.png"; VCIJPanel pal = new VCIJPanel(new GridBagLayout()); int gridx = 0; VCIJPanel palWest = new VCIJPanel(new BorderLayout()); VCIJLabel lblWest = new VCIJLabel(deptModelTitle, VCISwingUtil.createImageIcon(titleIcon), VCIJLabel.LEFT); palWest.add(lblWest, BorderLayout.NORTH); VCIBaseTreeNode rootTreeNode = new VCIBaseTreeNode(rootText, "root"); String modelText = deptModelTitle.replaceAll("选择", "").replaceAll(":", ""); deptModelTreeNode = new VCIBaseTreeNode(modelText, deptTreeNodeFlag); rootTreeNode.add(deptModelTreeNode); deptTreeModel = new VCIBaseTreeModel(rootTreeNode); deptTree = new VCIJTree(deptTreeModel); LocalTreeCellRenderer treeCellRender = new LocalTreeCellRenderer(titleIcon); deptTree.setCellRenderer(treeCellRender); deptTree.addTreeSelectionListener(treeSelectionListener); deptTree.addMouseListener(treeClickMouseAdapter); VCIJScrollPane jspWest = new VCIJScrollPane(); jspWest.getViewport().add(deptTree); palWest.add(jspWest, BorderLayout.CENTER); jspWest.setPreferredSize(new Dimension(150, 10)); pal.add(palWest, createGridBagConstraints(gridx++, 0, 1, 4, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH)); VCIJPanel palMiddle = new VCIJPanel(new BorderLayout()); VCIJLabel lblMiddle = new VCIJLabel(deptModelUsers, VCISwingUtil.createImageIcon("user.png"), VCIJLabel.LEFT); palMiddle.add(lblMiddle, BorderLayout.NORTH); deptUsersList = new VCIJList(new DefaultListModel()); deptUsersList.addMouseListener(addToUserListMouseAdapter); VCIJScrollPane jspMiddle = new VCIJScrollPane(); jspMiddle.getViewport().add(deptUsersList); palMiddle.add(jspMiddle, BorderLayout.CENTER); pal.add(palMiddle, createGridBagConstraints(gridx++, 0, 1, 4, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH)); // 批量添加\移除 VCIJPanel palAddRemoveBtnPanel = new VCIJPanel(); palAddRemoveBtnPanel.setLayout(new BoxLayout(palAddRemoveBtnPanel, BoxLayout.Y_AXIS)); VCIJButton btnToNextUser = VCISwingUtil.createVCIJButton("addToNext", "", "", "arrow-right.png", this); VCIJButton btnRemoveFromNext = VCISwingUtil.createVCIJButton("removeFromNext", "", "", "arrow-left.png", this); palAddRemoveBtnPanel.add(btnToNextUser); palAddRemoveBtnPanel.add(btnRemoveFromNext); pal.add(btnToNextUser, createGridBagConstraints(gridx+1, 2, 1, 1, 0.0, 10.0, GridBagConstraints.CENTER, GridBagConstraints.NONE)); pal.add(btnRemoveFromNext, createGridBagConstraints(gridx+1, 3, 1, 1, 0.0, 10.0, GridBagConstraints.CENTER, GridBagConstraints.NONE)); gridx += 2; VCIJPanel palEast = new VCIJPanel(new BorderLayout()); VCIJLabel lblEast = new VCIJLabel(nextUserTitle, VCISwingUtil.createImageIcon("user.png"), VCIJLabel.LEFT); palEast.add(lblEast, BorderLayout.NORTH); deptModelNextUsers = new VCIJList(new DefaultListModel()); deptModelNextUsers.addMouseListener(removeFromUserListMouseAdapter); VCIJScrollPane jspEast = new VCIJScrollPane(); jspEast.getViewport().add(deptModelNextUsers); palEast.add(jspEast, BorderLayout.CENTER); pal.add(palEast, createGridBagConstraints(gridx++, 0, 1, 4, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH)); return pal; } class LocalTreeCellRenderer extends DefaultTreeCellRenderer { /** * */ private static final long serialVersionUID = 1L; String modelIcon = ""; public LocalTreeCellRenderer(String modelIcon){ this.modelIcon = modelIcon; } @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { Component compt = super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); if(value instanceof VCIBaseTreeNode){ VCIBaseTreeNode node = (VCIBaseTreeNode)value; if(node.isRoot()){ setIcon(VCISwingUtil.createImageIcon("house.png")); } else { setIcon(VCISwingUtil.createImageIcon(modelIcon)); } } return compt; } }; /** * 返回GridBagLayout布局管理的Constraints对象 *

* Description: *

* * @author xchao * @time 2012-11-6 * @param gridx * @param gridy * @param gridwidth * @param gridheight * @param weightx * @param weighty * @param anchor * @param fill * @return */ private GridBagConstraints createGridBagConstraints(int gridx, int gridy, int gridwidth, int gridheight, double weightx, double weighty, int anchor, int fill) { int padxy = 5; return new GridBagConstraints(gridx, gridy, gridwidth, gridheight, weightx, weighty, anchor, fill, new Insets(padxy, padxy, padxy, padxy), padxy, padxy); } private VCIJPanel createSouthButtonPanel(){ VCIJPanel pal = new VCIJPanel(new FlowLayout(FlowLayout.CENTER)); pal.add(btnOk); pal.add(btnCancel); return pal; } private void initActionMaps(){ rbtnUser.addActionListener(this); rbtnRole.addActionListener(this); rbtnDept.addActionListener(this); rbtnUser.setActionCommand("changeModelPnael"); rbtnRole.setActionCommand("changeModelPnael"); rbtnDept.setActionCommand("changeModelPnael"); actionMaps.put("changeModelPnael", new Runnable() { public void run() { changeModelPnael(); }}); actionMaps.put("addToNext", new Runnable() { public void run() { addToNext(false); }}); actionMaps.put("addToNextUser", new Runnable() { public void run() { addToNextUser(false); }}); actionMaps.put("removeFromNext", new Runnable() { public void run() { removeFromNext(false); }}); actionMaps.put("ok", new Runnable() { public void run() { ok(); }}); actionMaps.put("cancel", new Runnable() { public void run() { cancel(); }}); } private void changeModelPnael(){ userModelPanel.setVisible(rbtnUser.isSelected()); roleModelPanel.setVisible(rbtnRole.isSelected()); deptModelPanel.setVisible(rbtnDept.isSelected()); } private void addToNextUser(boolean fromDBClick){ if(rbtnUser.isSelected()){ TreePath[] paths = userTree.getSelectionModel().getSelectionPaths(); if (paths == null) return; for (int i = 0 ; i < paths.length ; i ++){ VCIBaseTreeNode treeNode = (VCIBaseTreeNode)paths[i].getLastPathComponent(); Object nodeObj = treeNode.getObj(); if(nodeObj instanceof UserObject){ UserObject userObj = (UserObject)nodeObj; DefaultListModel listModel = (DefaultListModel) userModelNextUsers.getModel(); if(listModel.contains(userObj)) return; listModel.addElement(userObj); userModelNextUsers.setModel(listModel); } } } } private void addToNext(boolean fromDBClick){ VCIJList fromList = roleUsersList; VCIJList toList = roleModelNextUsers; if(rbtnDept.isSelected()){ fromList = deptUsersList; toList = deptModelNextUsers; } if(rbtnUser.isSelected()){ fromList = userModelNextUsers; toList = deptModelNextUsers; } addToNextDoDetail(fromList, toList, fromDBClick); } private void addToNextDoDetail(VCIJList fromList, VCIJList toList, boolean fromDBClick){ LinkedList sources = new LinkedList(); if(fromDBClick){ sources.add(fromList.getSelectedValue()); } else{ for(Object obj : fromList.getSelectedValues()){ sources.add(obj); } } DefaultListModel toModel = (DefaultListModel)toList.getModel(); for(Object obj : sources){ if(toModel.contains(obj)) continue; toModel.addElement(obj); } toList.setModel(toModel); } private void removeFromNext(boolean fromDBClick){ VCIJList fromList = userModelNextUsers; if(rbtnRole.isSelected()){ fromList = roleModelNextUsers; } else if(rbtnDept.isSelected()){ fromList = deptModelNextUsers; } removeFromNextDoDetail(fromList, fromDBClick); } private void removeFromNextDoDetail(VCIJList fromList, boolean fromDBClick){ Object[] objs = fromList.getSelectedValues(); DefaultListModel listModel = (DefaultListModel)fromList.getModel(); for(Object obj : objs){ if(listModel.contains(obj)){ listModel.removeElement(obj); } } fromList.setModel(listModel); } private RightManagementClientDelegate rmcdel = new RightManagementClientDelegate(); private UserObject[] getUserObjects(String deptOid, String roleOid){ UserObject[] userObjs = new UserObject[0]; try { userObjs = rmcdel.fetchUserInfoByCondition("", "", deptOid, roleOid, "", 1, 1000); } catch (VCIException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } return userObjs; } private RoleObject[] getRoleObjects(){ RoleObject[] objs = new RoleObject[0]; try { String userName = ClientContextVariable.getInvocationInfo().userName; objs = rmcdel.fetchRoleInfoByUserType(userName); } catch (VCIException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } return objs; } private DeptObject[] getDeptObjects(String parentOid){ DeptObject[] objs = new DeptObject[0]; try { objs = rmcdel.fetchDepartmentInfoByParentId(parentOid); } catch (VCIException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } return objs; } private void treeMouseDBClick(MouseEvent e){ if(rbtnUser.isSelected()){ userTreeMouseDBClick(); } else if(rbtnRole.isSelected()){ roleTreeMouseDBClick(); } else if(rbtnDept.isSelected()){ deptTreeMouseDBClick(); } } private void userTreeMouseDBClick(){ VCIBaseTreeNode treeNode = (VCIBaseTreeNode)userTree.getLastSelectedPathComponent(); if (treeNode == null) return; if(treeNode.isExpand()) return; Object nodeObj = treeNode.getObj(); if(nodeObj instanceof String){ if(nodeObj.equals("")){ return; } else if(nodeObj.equals("userTreeNode")){ UserObject[] objs = getUserObjects("", ""); if(objs != null){ for(UserObject obj : objs){ VCIBaseTreeNode treeNodeChild = new VCIBaseTreeNode(obj.toString(), obj); treeNode.insert(treeNodeChild, treeNode.getChildCount()); treeNode.setExpand(true); treeNode.setLeaf(false); } } userTree.updateUI(); } } if(nodeObj instanceof UserObject){ UserObject userObj = (UserObject)nodeObj; DefaultListModel listModel = (DefaultListModel) userModelNextUsers.getModel(); if(listModel.contains(userObj)) return; listModel.addElement(userObj); userModelNextUsers.setModel(listModel); } } private void roleTreeMouseDBClick(){ VCIBaseTreeNode treeNode = (VCIBaseTreeNode)roleTree.getLastSelectedPathComponent(); if (treeNode == null) return; if(treeNode.isExpand()) return; Object nodeObj = treeNode.getObj(); if(nodeObj instanceof String){ if(nodeObj.equals("")){ return; } else if(nodeObj.equals("roleTreeNode")){ RoleObject[] objs = getRoleObjects(); if(objs != null){ for(RoleObject obj : objs){ VCIBaseTreeNode treeNodeChild = new VCIBaseTreeNode(obj.toString(), obj); treeNode.insert(treeNodeChild, treeNode.getChildCount()); treeNode.setExpand(true); treeNode.setLeaf(false); } } roleTree.updateUI(); } } } private void deptTreeMouseDBClick(){ VCIBaseTreeNode treeNode = (VCIBaseTreeNode)deptTree.getLastSelectedPathComponent(); if (treeNode == null) return; if(treeNode.isExpand()) return; Object nodeObj = treeNode.getObj(); String parentOid = ""; if(nodeObj instanceof String){ if(nodeObj.equals("")){ return; } else if(nodeObj.equals("deptTreeNode")){ parentOid = ""; } } else if(nodeObj instanceof DeptObject){ parentOid = ((DeptObject)nodeObj).getId(); } DeptObject[] objs = getDeptObjects(parentOid); if(objs != null){ for(DeptObject obj : objs){ VCIBaseTreeNode treeNodeChild = new VCIBaseTreeNode(obj.toString(), obj); treeNode.insert(treeNodeChild, treeNode.getChildCount()); treeNode.setExpand(true); treeNode.setLeaf(false); } } deptTree.updateUI(); } private void treeValueChanged(TreeSelectionEvent e){ try{ if(rbtnRole.isSelected()){ VCIBaseTreeNode treeNode = (VCIBaseTreeNode)roleTree.getLastSelectedPathComponent(); Object nodeObj = treeNode.getObj(); if(nodeObj instanceof RoleObject){ RoleObject roleObj = (RoleObject)nodeObj; UserObject[] userObjs = rmgrDel.selectUserByRoleId(roleObj.getId()); reloadModelUsers(userObjs, roleUsersList); } } else if(rbtnDept.isSelected()){ VCIBaseTreeNode treeNode = (VCIBaseTreeNode)deptTree.getLastSelectedPathComponent(); Object nodeObj = treeNode.getObj(); if(nodeObj instanceof DeptObject){ DeptObject deptObj = (DeptObject)nodeObj; UserObject[] userObjs = rmgrDel.getUserByDeptId(deptObj.getId()); reloadModelUsers(userObjs, deptUsersList); } } }catch (VCIException ex) { ex.printStackTrace(); VCIOptionPane.showError(this, "RMIPFramework", ex); } } private void reloadModelUsers(UserObject[] objs, VCIJList modelUserList){ DefaultListModel model = (DefaultListModel)modelUserList.getModel(); model.removeAllElements(); for(UserObject obj : objs){ model.addElement(obj); } modelUserList.setModel(model); } private LinkedList selectedUsers = new LinkedList(); private LinkedList selectedUserNames = new LinkedList(); private void ok(){ DefaultListModel model = new DefaultListModel(); if(rbtnUser.isSelected()){ model = (DefaultListModel)userModelNextUsers.getModel(); } else if(rbtnRole.isSelected()){ model = (DefaultListModel)roleModelNextUsers.getModel(); } else if(rbtnDept.isSelected()){ model = (DefaultListModel)deptModelNextUsers.getModel(); } selectedUsers.clear(); selectedUserNames.clear(); if(model.size() == 0) { VCIOptionPane.showMessage(this, "请至少选择一个用户!"); return; } for(int i = 0; i < model.size(); i++){ Object obj = model.getElementAt(i); if(obj instanceof UserObject){ UserObject userObj = (UserObject)obj; selectedUsers.add(userObj); selectedUserNames.add(userObj.getUserName()); } } hiddenAndDispose(DialogResult.OK); } private void cancel(){ isCancelClicked = true; hiddenAndDispose(DialogResult.CANCEL); } private void hiddenAndDispose(DialogResult res){ setVisible(false); super.dispose(); return; } public List getUserObjectlist(){ return selectedUsers; } public String[] getUserNames(){ String[] userNames = new String[0]; if (!isCancelClicked){ if (rbtnUser.isSelected()){ if (selectedUserNames.size() > 0){ userNames = selectedUserNames.toArray(new String[]{}); } } } return userNames; } @Override public void actionPerformed(ActionEvent e) { String key = e.getActionCommand(); if(actionMaps.containsKey(key)){ actionMaps.get(key).run(); } } }