package com.vci.client.workflow.task;
|
|
import java.awt.BorderLayout;
|
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionListener;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import javax.swing.JComponent;
|
import javax.swing.JMenuItem;
|
import javax.swing.JPanel;
|
import javax.swing.JPopupMenu;
|
import javax.swing.JScrollPane;
|
import javax.swing.JSplitPane;
|
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 javax.swing.tree.TreeSelectionModel;
|
|
import com.vci.client.LogonApplication;
|
import com.vci.client.common.VCIBasePanel;
|
import com.vci.client.framework.rightConfig.object.FunctionObject;
|
import com.vci.client.ui.swing.VCISwingUtil;
|
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.template.ProcessDefinitionPanel;
|
import com.vci.client.workflow.template.object.ProcessCategoryObject;
|
import com.vci.client.workflow.template.object.ProcessDefinitionObject;
|
|
/**
|
* 资源删除任务项
|
* <p>Title: </p>
|
* <p>Description: </p>
|
* <p>Copyright: Copyright (c) 2012</p>
|
* <p>Company: VCI</p>
|
* @author wangxl
|
* @time 2013-1-23
|
* @version 1.0
|
*/
|
public class RMDeleteTaskPanel extends VCIBasePanel {
|
private static final long serialVersionUID = 3904757499482930815L;
|
|
private VCIBaseTree leftTree = null;
|
private VCIBaseTreeModel treeModel = null;
|
private VCIBaseTreeNode rootNode = null;
|
|
private ProcessTaskToolBar toolBar = null;
|
JComponent rightPanel = null;
|
JPanel rightEmptyPanel = new JPanel();
|
|
private JSplitPane splitPane;
|
private JPopupMenu taskMenu;
|
private JMenuItem refMenuItem = new JMenuItem("刷新", VCISwingUtil.createImageIcon("arrow_refresh.png"));//刷新
|
FunctionObject funcObject = new FunctionObject();
|
public RMDeleteTaskPanel(FunctionObject object) {
|
super(object);
|
LogonApplication.getUserEntityObject().setModules(this.getClass().getName());
|
init();
|
}
|
|
private void init() {
|
JScrollPane leftScrPane = new JScrollPane();
|
splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftScrPane, rightEmptyPanel);
|
splitPane.setDividerSize(10);
|
splitPane.setContinuousLayout(true);
|
splitPane.setOneTouchExpandable(true);
|
splitPane.setDividerLocation(200);
|
this.setLayout(new BorderLayout());
|
this.add(splitPane, BorderLayout.CENTER);
|
refMenuItem.addActionListener(new ActionListener() {
|
public void actionPerformed(ActionEvent e) {
|
TreePath selectionPath = leftTree.getSelectionPath();
|
treeInitRightData(selectionPath);
|
updateTree();
|
}
|
});
|
initLeftPanel(leftScrPane);
|
setComponentPopupMenu(leftTree, getWorkFlowMenu());
|
}
|
|
private void initLeftPanel(JScrollPane leftJsp) {
|
String rootObj = "root";
|
rootNode = new VCIBaseTreeNode("任务箱", rootObj);
|
treeModel = new VCIBaseTreeModel(rootNode);
|
leftTree = new VCIBaseTree(treeModel, new ProcessTaskTreeCellRender());
|
leftTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
|
leftTree.addTreeSelectionListener(new TreeSelectionListener() {
|
public void valueChanged(TreeSelectionEvent e) {
|
treeValueChanged(e);
|
}
|
});
|
leftTree.addTreeExpansionListener(new TreeExpansionListener() {
|
public void treeExpanded(TreeExpansionEvent event) {
|
TreePath treePath = event.getPath();
|
VCIBaseTreeNode selectNode = (VCIBaseTreeNode) treePath.getLastPathComponent();
|
if (!selectNode.isExpand()&&!selectNode.getObj().equals("root")) {
|
selectNode.removeAllChildren();
|
getExpandTreeData(selectNode);
|
}
|
}
|
|
public void treeCollapsed(TreeExpansionEvent event) {
|
}
|
});
|
leftJsp.getViewport().add(leftTree);
|
initLeftTree(rootNode);
|
}
|
|
protected void treeValueChanged(TreeSelectionEvent e) {
|
TreePath treePath = e.getPath();
|
treeInitRightData(treePath);
|
}
|
|
/**
|
* 加载右侧数据
|
* @param treePath
|
*/
|
private void treeInitRightData(TreePath treePath) {
|
if (treePath == null) {
|
splitPane.setRightComponent(rightEmptyPanel);
|
return;
|
}
|
|
VCIBaseTreeNode selectNode = (VCIBaseTreeNode) treePath.getLastPathComponent();
|
Object object = selectNode.getObj();
|
ProcessDefinitionObject processDefinitionObject = null;
|
|
if (object instanceof ProcessDefinitionObject) {
|
processDefinitionObject = (ProcessDefinitionObject) object;
|
if (rightPanel == null) {
|
rightPanel = new ProcessDefinitionPanel();
|
}
|
((ProcessDefinitionPanel) rightPanel).setObject(processDefinitionObject);
|
splitPane.setRightComponent(rightPanel);
|
} else if (object instanceof IdName) {
|
IdName idName = (IdName) object;
|
if ("todotask".equals(idName.getId())) {
|
TodoTaskPanel instance = TodoTaskPanel.getInstance(funcObject,idName.getTaskType());
|
// instance.initData();
|
instance.initializeData();
|
splitPane.setRightComponent(instance);
|
} else if ("donetask".equals(idName.getId())) {
|
DoneTaskPanel doneTaskPanel = DoneTaskPanel.getInstance(funcObject,idName.getTaskType());
|
doneTaskPanel.initData();
|
splitPane.setRightComponent(doneTaskPanel);
|
} else if ("tracktask".equals(idName.getId())) {
|
TrackTaskPanel instance = TrackTaskPanel.getInstance(funcObject,idName.getTaskType());
|
instance.initializeData();
|
splitPane.setRightComponent(instance);
|
} else if("doneprocess".equals(idName.getId())){
|
DoneProcessPanel doneProcessPanel = DoneProcessPanel.getInstance(funcObject,idName.getTaskType());
|
doneProcessPanel.initData();
|
splitPane.setRightComponent(doneProcessPanel);
|
}
|
} else {
|
splitPane.setRightComponent(rightEmptyPanel);
|
}
|
int location = splitPane.getDividerLocation();
|
splitPane.setDividerLocation(location);
|
}
|
|
public ProcessTaskToolBar getSpecialToolBar() {
|
if (toolBar == null) {
|
toolBar = new ProcessTaskToolBar(LogonApplication.frame, this);
|
}
|
return toolBar;
|
}
|
|
/**
|
* 返回当前选中的树节点
|
*
|
* @return
|
*/
|
public VCIBaseTreeNode getCurrentSelectedTreeNode() {
|
return (VCIBaseTreeNode) this.leftTree.getLastSelectedPathComponent();
|
}
|
|
public Object getCurrentSelectedObject() {
|
return this.getCurrentSelectedTreeNode().getObj();
|
}
|
|
/**
|
* toolbar上的刷新按钮会调用该方法
|
*/
|
public void updateTree() {
|
((VCIBaseTreeNode) this.leftTree.getLastSelectedPathComponent()).removeAllChildren();
|
getExpandTreeData(((VCIBaseTreeNode) this.leftTree.getLastSelectedPathComponent()));
|
this.leftTree.updateUI();
|
}
|
|
private void getExpandTreeData(VCIBaseTreeNode treeNode) {
|
// try{
|
String processCategoryId = "";
|
Object nodeObject = treeNode.getObj();
|
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(); } //TODO 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); }
|
*
|
* ProcessDefinitionObject[] processDefinitions = new ProcessCustomClientDelegate(LogonApplication.getUserEntityObject()).getProcessDefinitions(processCategoryId); for
|
* (ProcessDefinitionObject processDefinitionObject : processDefinitions) { VCIBaseTreeNode node = new VCIBaseTreeNode(processDefinitionObject.getName(),
|
* processDefinitionObject); treeModel.insertNodeInto(node, treeNode, treeNode.getChildCount()); treeNode.setExpand(true); }
|
*/
|
}
|
/*
|
* }catch(VCIException ex){ VCIOptionPane.showError(LogonApplication.frame, "RMIPWorkflow", ex); }
|
*/
|
}
|
|
public void initLeftTree() {
|
initLeftTree(this.rootNode);
|
}
|
|
public void initLeftTree(VCIBaseTreeNode treeNode) {
|
// try{
|
/*
|
* ProcessCustomClientDelegate delSrv = new ProcessCustomClientDelegate(LogonApplication.getUserEntityObject()); ProcessCategoryObject[] processCategories =
|
* delSrv.getProcessCategories("root");
|
*/
|
treeNode.removeAllChildren();
|
List<IdName> taskTypes = getTaskTypes();
|
for (IdName obj : taskTypes) {
|
VCIBaseTreeNode node = new VCIBaseTreeNode(obj.getName(), obj);
|
node.setLeaf(true);
|
treeNode.add(node);
|
}
|
this.leftTree.setSelectionPath(new TreePath(treeNode));
|
this.leftTree.updateUI();
|
/*
|
* } catch (VCIException e) { VCIOptionPane.showError(LogonApplication.frame, "RMIPWorkflow", e); return; }
|
*/
|
}
|
|
private List<IdName> getTaskTypes() {
|
List<IdName> taskTypes = new ArrayList<IdName>();
|
taskTypes.add(new IdName("todotask", "待办任务","9"));
|
// taskTypes.add(new IdName("donetask", "已办任务","9"));
|
taskTypes.add(new IdName("doneprocess", "已完成流程","9"));
|
taskTypes.add(new IdName("tracktask", "跟踪任务","9"));
|
return taskTypes;
|
}
|
|
public void setEmptyPanel() {
|
splitPane.setRightComponent(rightEmptyPanel);
|
int location = splitPane.getDividerLocation();
|
splitPane.setDividerLocation(location);
|
}
|
|
public void addNewObjectToTree(ProcessCategoryObject object) {
|
VCIBaseTreeNode newNode = new VCIBaseTreeNode(object.getName(), object);
|
this.treeModel.insertNodeInto(newNode, getCurrentSelectedTreeNode(), getCurrentSelectedTreeNode().getChildCount());
|
this.leftTree.setSelectionPath(new TreePath(newNode.getPath()));
|
this.leftTree.updateUI();
|
}
|
|
public void refreshModifyObjectToTree(ProcessCategoryObject object) {
|
VCIBaseTreeNode modifyNode = getCurrentSelectedTreeNode();
|
modifyNode.setUserObject(object.getName());
|
modifyNode.setObj(object);
|
this.leftTree.setSelectionPath(new TreePath(modifyNode.getPath()));
|
this.leftTree.updateUI();
|
}
|
|
public void removeNode(VCIBaseTreeNode treeNode) {
|
treeNode.removeFromParent();
|
this.leftTree.updateUI();
|
}
|
|
public VCIBaseTree getLeftTree() {
|
return leftTree;
|
}
|
|
private String getI18nString(String spCode) {
|
return ClientHelper.getI18nStringForWorkflow(this.getClass().getName() + "." + spCode, this.getLocale());
|
}
|
|
private JPopupMenu getWorkFlowMenu() {
|
if(taskMenu == null) {
|
taskMenu = new JPopupMenu();
|
}
|
return taskMenu;
|
}
|
|
/**
|
* 右键菜单
|
* @param parent
|
* @param menu
|
*/
|
private void setComponentPopupMenu(final java.awt.Component parent,
|
final javax.swing.JPopupMenu menu) {
|
parent.addMouseListener(new java.awt.event.MouseAdapter() {
|
public void mouseReleased(java.awt.event.MouseEvent e) {
|
|
int x = e.getX();
|
int y = e.getY();
|
TreePath treePath = leftTree.getPathForLocation(x, y);
|
if(treePath == null) return;
|
|
leftTree.setSelectionPath(treePath);
|
|
|
Object currentSelectedObject = getCurrentSelectedObject();
|
taskMenu.add(refMenuItem);
|
if (currentSelectedObject!=null&&e.isPopupTrigger()){
|
menu.show(parent, e.getX(), e.getY());
|
}
|
}
|
|
// public void mouseReleased(java.awt.event.MouseEvent e) {
|
// if (e.isPopupTrigger())
|
// menu.show(parent, e.getX(), e.getY());
|
// }
|
});
|
}
|
}
|