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<String> resultList = new ArrayList<String>();
|
private JList userList;
|
|
private VCIBaseTreeNode rootNode;
|
private UserObject userInfo;
|
|
public List<String> getResultList() {
|
return resultList;
|
}
|
|
public void setResultList(List<String> 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<objs.length;i++) {
|
treeModel.insertNodeInto(new VCIBaseTreeNode(objs[i].getUserName(), objs[i]),selectNode,selectNode.getChildCount());
|
}
|
}else{
|
return;
|
}
|
}
|
int len = DeptInfos==null?0: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 initUI() {
|
setSize(780, 600);
|
|
JPanel panel = new JPanel();
|
getContentPane().add(panel, BorderLayout.CENTER);
|
panel.setLayout(new BorderLayout(0, 0));
|
|
|
JPanel panel_1 = new JPanel();
|
panel_1.setLayout(new BorderLayout(0, 0));
|
panel.add(panel_1, BorderLayout.CENTER);
|
|
JPanel panel_3 = new JPanel();
|
FlowLayout flowLayout = (FlowLayout) panel_3.getLayout();
|
flowLayout.setAlignment(FlowLayout.RIGHT);
|
panel_1.add(panel_3, BorderLayout.SOUTH);
|
|
commit = new JButton("提交");
|
panel_3.add(commit);
|
|
cancel = new JButton("关闭");
|
panel_3.add(cancel);
|
{
|
{
|
rootNode = new VCIBaseTreeNode("人员组织", "root");
|
treeModel = new VCIBaseTreeModel(rootNode);
|
initUserTree(rootNode, "root");
|
initRoleTree(rootNode, "root");
|
initDepartTree(rootNode, "root");
|
}
|
}
|
{
|
{
|
resultListModel = new DefaultListModel();
|
}
|
}
|
|
JPanel panel_4 = new JPanel();
|
panel_1.add(panel_4, BorderLayout.CENTER);
|
panel_4.setBorder(new TitledBorder(null, "人员", TitledBorder.LEADING, TitledBorder.TOP, null, null));
|
GridBagLayout gbl_panel_5 = new GridBagLayout();
|
gbl_panel_5.columnWidths = new int[] { 0, 0, 0, 0, 0, 0 };
|
gbl_panel_5.rowHeights = new int[] { 0, 0, 0 };
|
gbl_panel_5.columnWeights = new double[] { 0.0, 0.0, 1.0,
|
0.0, 1.0, Double.MIN_VALUE };
|
gbl_panel_5.rowWeights = new double[] { 0.0, 1.0, Double.MIN_VALUE };
|
panel_4.setLayout(gbl_panel_5);
|
{
|
JLabel userListLab = new JLabel("人员列表");
|
GridBagConstraints gbc_userListLab = new GridBagConstraints();
|
gbc_userListLab.insets = new Insets(0, 0, 0, 5);
|
gbc_userListLab.gridx = 1;
|
gbc_userListLab.gridy = 1;
|
panel_4.add(userListLab, gbc_userListLab);
|
}
|
JScrollPane scrollPane = new JScrollPane();
|
GridBagConstraints gbc_scrollPane = new GridBagConstraints();
|
gbc_scrollPane.insets = new Insets(0, 0, 0, 5);
|
gbc_scrollPane.fill = GridBagConstraints.BOTH;
|
gbc_scrollPane.gridx = 2;
|
gbc_scrollPane.gridy = 1;
|
panel_4.add(scrollPane, gbc_scrollPane);
|
rightManagementTree = new VCIBaseTree(treeModel,
|
new RightManagementTreeCellRenderer());
|
scrollPane.setViewportView(rightManagementTree);
|
{
|
JPanel panel_5 = new JPanel();
|
GridBagConstraints gbc_panel_3 = new GridBagConstraints();
|
gbc_panel_3.insets = new Insets(0, 0, 0, 5);
|
gbc_panel_3.fill = GridBagConstraints.BOTH;
|
gbc_panel_3.gridx = 3;
|
gbc_panel_3.gridy = 1;
|
panel_4.add(panel_5, gbc_panel_3);
|
GridBagLayout gbl_panel_3 = new GridBagLayout();
|
gbl_panel_3.columnWidths = new int[] { 45, 0 };
|
gbl_panel_3.rowHeights = new int[] { 23, 0, 0, 0, 0, 0 };
|
gbl_panel_3.columnWeights = new double[] { 0.0,
|
Double.MIN_VALUE };
|
gbl_panel_3.rowWeights = new double[] { 0.0, 0.0, 0.0, 0.0,
|
0.0, Double.MIN_VALUE };
|
panel_5.setLayout(gbl_panel_3);
|
{
|
JButton btnNewButton = new JButton(">>");
|
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<VCIBaseTreeNode> nodeList = new LinkedList<VCIBaseTreeNode>();
|
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<selectedIndices.length;i++){
|
resultListModel.removeElement(selectedIndices[i]);
|
resultList.remove(selectedIndices[i]);
|
}
|
}
|
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;
|
}
|
}
|