package com.vci.client.workflow.task; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.LinkedList; import java.util.List; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.event.TreeExpansionEvent; import javax.swing.event.TreeExpansionListener; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; import javax.swing.tree.TreeSelectionModel; import com.vci.client.LogonApplication; 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.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.client.workflow.delegate.ProcessCustomClientDelegate; import com.vci.client.workflow.template.ProcessCategoryTreeCellRender; import com.vci.client.workflow.template.object.ProcessCategoryObject; import com.vci.client.workflow.template.object.ProcessDefinitionObject; import com.vci.client.workflow.template.object.RMTypeObject; import com.vci.corba.common.VCIError; public class TaskAssignedDialog extends VCIJDialog { private static final long serialVersionUID = 4257732186259993713L; private VCIBaseTree leftTree = null; private VCIBaseTreeModel treeModel = null; private VCIBaseTreeNode rootNode = null; VCIJButton okBtn = VCISwingUtil.createVCIJButton("", "确定", "确定", "ok.gif"); VCIJButton cancelBtn = VCISwingUtil.createVCIJButton("", "取消", "取消", "cancel.gif"); // VCIJLabel lbluser = new VCIJLabel("快速查询:"); // VCIJTextField jtfuser = new VCIJTextField(""); String selectUser = ""; String userDept = ""; public String getSelectUser() { return selectUser; } public void setSelectUser(String selectUser) { this.selectUser = selectUser; } private UserObject[] userObjects; private boolean isOk = false; public TaskAssignedDialog(Frame parent) { super(parent, true); setTitle("选择代办人"); initUI(); addListener(); setSize(280, 320); centerToScreen(); this.setSize(280, 350); this.setVisible(true); } private void initUI() { JPanel assignPanel = new JPanel(new BorderLayout()); JScrollPane leftScrPane = new JScrollPane(); initLeftPanel(leftScrPane); assignPanel.add(leftScrPane); JPanel btnPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); btnPanel.add(okBtn); btnPanel.add(cancelBtn); JPanel topPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); // topPanel.add(lbluser); // topPanel.add(jtfuser); getContentPane().add(topPanel,BorderLayout.NORTH); getContentPane().add(assignPanel); getContentPane().add(btnPanel, BorderLayout.SOUTH); } private void initLeftPanel(JScrollPane leftJsp) { String rootObj = "root"; UserObject user = LogonApplication.getUserObject(); RightManagementClientDelegate del = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()); // try { // DeptObject dept = del.fetchDeptByUserId(user.getId()); // if(dept != null){ // userDept = dept.getName(); // rootNode = new VCIBaseTreeNode(userDept,rootObj); // // }else rootNode = new VCIBaseTreeNode("人员",rootObj); treeModel = new VCIBaseTreeModel(rootNode); leftTree = new VCIBaseTree(treeModel, new ProcessCategoryTreeCellRender()); leftTree.getSelectionModel().setSelectionMode(TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION); leftTree.addTreeExpansionListener(new TreeExpansionListener() { public void treeExpanded(TreeExpansionEvent event) { TreePath treePath = event.getPath(); VCIBaseTreeNode selectNode = (VCIBaseTreeNode) treePath.getLastPathComponent(); if(!selectNode.isExpand()){ selectNode.removeAllChildren(); getExpandTreeData(selectNode); } } public void treeCollapsed(TreeExpansionEvent event) { } }); leftJsp.getViewport().add(leftTree); initLeftTree(rootNode); // } catch (VCIException e) { // VCIOptionPane.showMessage(this, "查询人员所属部门时出错"); // e.printStackTrace(); // } } private void getExpandTreeData(VCIBaseTreeNode treeNode) { try{ String processCategoryId = ""; Object nodeObject = treeNode.getObj(); if(nodeObject instanceof ProcessDefinitionObject) { treeNode.setLeaf(true); return; } if(nodeObject instanceof String && nodeObject.toString().equals("root")){ initLeftTree(rootNode); }else{ if (nodeObject instanceof ProcessCategoryObject) { processCategoryId = ((ProcessCategoryObject)nodeObject).getId(); } else if (nodeObject instanceof RMTypeObject) { TreeNode[] treeNodes = treeNode.getPath(); processCategoryId = ((ProcessCategoryObject)(((VCIBaseTreeNode)treeNodes[1]).getObj())).getId(); } //refresh tree from db ProcessCategoryObject[] processCategories = new ProcessCustomClientDelegate(LogonApplication.getUserEntityObject()).getProcessCategories(processCategoryId); for (ProcessCategoryObject obj : processCategories) { VCIBaseTreeNode node = new VCIBaseTreeNode(obj.getName(), obj); treeModel.insertNodeInto(node, treeNode, treeNode.getChildCount()); treeNode.setExpand(true); } } }catch(VCIException ex){ VCIOptionPane.showError(LogonApplication.frame, "RMIPRm", ex); } } private void initLeftTree(VCIBaseTreeNode treeNode) { try{ RightManagementClientDelegate del = new RightManagementClientDelegate(); UserObject[] object = del.fetchUserInfo(); // if(userDept != ""){ for(UserObject obj : object){ // if(obj.getUserName().equals(LogonApplication.getUserObject().getUserName())){ // continue; // } // DeptObject dept = del.fetchDeptByUserId(obj.getId()); // if(!"".equals(this.getSelectUser())){ // if(obj.toString().contains(selectUser)){ // if(dept != null && dept.getName().equals(userDept)){ // VCIBaseTreeNode node = new VCIBaseTreeNode(obj.getUserName()+"("+obj.getTrueName()+")", obj); // treeNode.add(node); // } // } // }else{ // if(dept != null && dept.getName().equals(userDept)){ VCIBaseTreeNode node = new VCIBaseTreeNode(obj.toString(), obj); treeNode.add(node); // } // } } // } this.leftTree.setSelectionPath(new TreePath(treeNode)); this.leftTree.updateUI(); } catch (VCIException e) { e.printStackTrace(); } } private void addListener() { okBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ok(); } }); cancelBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { close(); } }); // jtfuser.addKeyListener(new KeyAdapter(){ // public void keyReleased(KeyEvent e) { // select(); // } // }); } private UserObject[] getSelectProcessDefinition() { UserObject result = null; List list = new LinkedList(); int count = leftTree.getSelectionCount(); // (VCIBaset)leftTree.getSelectionPaths(); // Object node = leftTree.getLastSelectedPathComponent(); Object[] nodes = new Object[count]; if(count != 0 ){ for(int i = 0 ;i screenSize.height) { componentSize.height = screenSize.height; } if (componentSize.width > screenSize.width) { componentSize.width = screenSize.width; } this.setLocation((screenSize.width - componentSize.width) / 2, (screenSize.height - componentSize.height) / 2); } public boolean isOk() { return isOk; } private String getI18nString(String code){ return ClientHelper.getI18nStringForWorkflow(this.getClass().getName() + "." + code, this.getLocale()); } private void select(){ // setSelectUser(jtfuser.getText()); rootNode.removeAllChildren(); initLeftTree(rootNode); } }