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.util.ArrayList; import java.util.List; import javax.swing.DefaultListModel; import javax.swing.JButton; import javax.swing.JList; import javax.swing.JPanel; 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.logon.client.LogonFrame; 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; public class FowardUser extends VCIJDialog { /** * */ private static final long serialVersionUID = 1L; private UserObject userInfo; private String userName = LogonFrame.userName; private VCIBaseTree rightManagementTree; private TransmitTreeObject transmitTreeObject = new TransmitTreeObject(); private VCIBaseTreeModel treeModel; private JList list; private DefaultListModel listModel; private List userObjectlist = new ArrayList(); private KJButton okBtn = new KJButton(this.getI18nString("btnOk"), "ok.gif"); private KJButton cancelBtn = new KJButton(this.getI18nString("btnCancel"), "cancel.gif"); private JButton roleButton = new JButton("角色"); private JButton departButton = new JButton("部门"); public FowardUser() { super(LogonApplication.frame, true); JPanel panel = new JPanel(); JPanel topPanel = new JPanel(); 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[] selectedIndices = list.getSelectedIndices(); if(selectedIndices.length == 0){ VCIOptionPane.showMessage(LogonApplication.frame, getI18nString("message")); return; } for (int i : selectedIndices) { UserObject object = (UserObject) listModel.get(i); userObjectlist.add(object); } dispose(); } }); cancelBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { listModel = null; dispose(); } }); panel_3.add(cancelBtn); JPanel panel_1 = new JPanel(); panel.add(panel_1, BorderLayout.CENTER); GridBagLayout gbl_panel_1 = new GridBagLayout(); panel_1.setLayout(gbl_panel_1); JPanel panel_2 = new JPanel(); GridBagConstraints gbc_panel_2 = new GridBagConstraints(); gbc_panel_2.weighty = 1.0; gbc_panel_2.weightx = 1.0; gbc_panel_2.insets = new Insets(0, 0, 0, 5); gbc_panel_2.fill = GridBagConstraints.BOTH; gbc_panel_2.gridx = 0; gbc_panel_2.gridy = 0; panel_1.add(panel_2, gbc_panel_2); panel_2.setLayout(new BorderLayout(0, 0)); Dimension listDim = new Dimension(150, 200); JScrollPane scrollPane = new JScrollPane(); panel_2.add(scrollPane); scrollPane.setPreferredSize(listDim); final VCIBaseTreeNode rootNode = new VCIBaseTreeNode(LocaleDisplay.getI18nString("rmip.stafforg.menu.staffOrg", "RMIPFramework", getLocale()), "root"); treeModel = new VCIBaseTreeModel(rootNode); // initTree(rootNode, "root"); // initDepartTree(rootNode, "root"); roleButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { rootNode.removeAllChildren(); initTree(rootNode, "root"); treeModel.reload(); listModel.clear(); } }); departButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { rootNode.removeAllChildren(); initDepartTree(rootNode, "root"); treeModel.reload(); listModel.clear(); } }); rightManagementTree = new VCIBaseTree(treeModel, new RightManagementTreeCellRenderer()); scrollPane.setViewportView(rightManagementTree); 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 = 1; 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); scrollPane_1.setPreferredSize(listDim); init(); pack(); } private void init() { rightManagementTree.addTreeSelectionListener(new TreeSelectionListener() { public void valueChanged(TreeSelectionEvent e) { rightManagementTree_valueChanged(e); } }); /** * 树的展开事件 */ 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 RoleObject) { RoleObject role = (RoleObject) object; if (role.getId().equals("root")) { try { RoleObject[] roleInfos = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()).fetchRoleInfoByType(userInfo.getUserType()); for (RoleObject roleObject : roleInfos) { treeModel.insertNodeInto(new VCIBaseTreeNode(roleObject.getName(), roleObject), selectNode, selectNode.getChildCount()); } } catch (VCIException re) { // VCIOptionPane.showError(LogonApplication.frame, LocaleDisplay.getI18nString(String.valueOf(re.code), "RMIPFramework", getLocale())); return; } } } if (object instanceof DeptObject){ try { DeptObject[] DeptInfos = null; if (((DeptObject) object).getId().equals("root")){ DeptInfos= new RightManagementClientDelegate(LogonApplication.getUserEntityObject()) .fetchDepartmentInfoRoot(); }else{ DeptInfos = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()) .fetchDepartmentInfoByParentId(((DeptObject) object).getId()); } 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 re) { // VCIOptionPane.showError(LogonApplication.frame, // LocaleDisplay.getI18nString(String.valueOf(re.code), "RMIPFramework", getLocale())); 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 (VCIException e1) { e1.printStackTrace(); } } if(object instanceof DeptObject){ DeptObject DeptObject = (DeptObject) object; if("root".equals(DeptObject.getId())){ return; } UserObject[] selectRole; try { selectRole = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()).getUserByDeptId(DeptObject.getId()); // 更新右边JLIST listModel.removeAllElements(); for (UserObject userObject : selectRole) { listModel.addElement(userObject); } } catch (VCIException e1) { e1.printStackTrace(); } } } /** *

* 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) { // VCIOptionPane.showError(LogonApplication.frame, LocaleDisplay.getI18nString(String.valueOf(e.code), "RMIPFramework", getLocale())); 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) { // VCIOptionPane.showError(LogonApplication.frame, LocaleDisplay.getI18nString(String.valueOf(e.code), "RMIPFramework", getLocale())); 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 JList getList() { return list; } public void setList(JList list) { this.list = list; } public DefaultListModel getListModel() { return listModel; } public void setListModel(DefaultListModel listModel) { this.listModel = listModel; } }