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<String, Runnable> actionMaps = new LinkedHashMap<String, Runnable>();
|
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对象
|
* <p>
|
* Description:
|
* </p>
|
*
|
* @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<Object> sources = new LinkedList<Object>();
|
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<UserObject> selectedUsers = new LinkedList<UserObject>();
|
private LinkedList<String> selectedUserNames = new LinkedList<String>();
|
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<UserObject> 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();
|
}
|
}
|
}
|