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<UserObject> list = new LinkedList<UserObject>();
|
int count = leftTree.getSelectionCount();
|
// (VCIBaset)leftTree.getSelectionPaths();
|
// Object node = leftTree.getLastSelectedPathComponent();
|
Object[] nodes = new Object[count];
|
if(count != 0 ){
|
for(int i = 0 ;i<count;i++){
|
nodes[i] = leftTree.getSelectionPaths()[i].getLastPathComponent();
|
}
|
}
|
if(nodes != null) {
|
for(int i = 0 ;i<nodes.length;i++){
|
Object obj = ((VCIBaseTreeNode)nodes[i]).getObj();
|
if(obj instanceof UserObject) {
|
// result = (UserObject) obj;
|
list.add((UserObject) obj);
|
}
|
}
|
}
|
return list.toArray(new UserObject[0]);
|
}
|
|
private void ok() {
|
userObjects = getSelectProcessDefinition();
|
|
if(userObjects == null){
|
JOptionPane.showMessageDialog(this, "请选择代办人");
|
return;
|
}
|
isOk = true;
|
close();
|
}
|
|
private void close() {
|
this.dispose();
|
this.setVisible(false);
|
}
|
|
public UserObject[] getProcessDefinitionObject() {
|
return userObjects;
|
}
|
|
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;
|
}
|
|
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);
|
}
|
|
}
|