📄 workflow_flowtree.java
字号:
package treedoc;
/** 主窗口的左边的树类
添加对树进行状态保存的文件
11.30增加树结构和状态保留的串行化方法
修改GXL文件目录列表的显示方式
*/
/**
* 名称 : WORKFLOW_FLOWTREE
* 描述 : WWW.FANGFA.NET 工作流管理系统--主窗口树型目录管理类
* 版权信息 : Copyright (c) 2004 COMSCI
* @作者 : COMSCI Sichuan Fangfa Digital
* @版本 : 0.9 builder 2004091910
* @日期 : 2004/09/19
*/
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;
import java.io.Serializable.*;
public class workflow_FlowTree {
public JTree tree;
public DefaultMutableTreeNode root, node1, node2, node3, node4, node5;
private File file, filelist, filelist1;
private JPopupMenu menu;
private String[] li, li1;
public String graphname;
workflow_progressbar pro; // 用于进度条控制
JFrame jf = new JFrame(); // 用于进度条控制
workflow_dom db_action; // GXL解析类
workflow_FileImportGXL fr;
workflow_GraphEd gd;
workflow_StepMain smn;
workflow_AddStepActive waa;
workflow_userlist wul;
workflow_JClosableTabbedPane wjt;
workflow_FlowTree jTree1;
workflow_JClosableTabbedPane wtp;
workflow_CellRender wcr;
workflow_RTCView wrtc;
workflow_Util_DateTimeManager wudt;
String path0, path2, user, depname1;
int departmentid;
String currentDateTime;
public workflow_FlowTree(workflow_GraphEd ed,
workflow_JClosableTabbedPane wttp, String path,
String path1, String userid, String depname) {
path0 = path;
path2 = path1;
user = userid;
depname1 = depname;
gd = ed;
wtp = wttp;
wrtc = new workflow_RTCView("");
wudt = new workflow_Util_DateTimeManager();
tree = new JTree(readNode());
tree.setCellRenderer(new workflow_CellRender());
tree.setRowHeight(25);
//初始化GXLREADER类
// 鼠标事件处理方法;
// 右键显示弹出菜单....
tree.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) {
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.
getLastSelectedPathComponent();
JPopupMenu menu = createPopupMenu(e.getPoint(), selectedNode);
menu.show(tree, e.getX(), e.getY());
}
}
});
}
// /////////////////////////创建一棵树///////////////////////
public JTree createTree() {
tree.setBorder(BorderFactory.createEtchedBorder());
tree.setPreferredSize(new Dimension(130, 200));
tree.setRowHeight(25);
return tree;
}
////////////////////创建子节点//////////////////////
public void createnode(Object nodename) {
DefaultMutableTreeNode nodek = new DefaultMutableTreeNode(nodename);
tree.isEditable();
if (root.getChildCount() == 4) {
node1 = (DefaultMutableTreeNode) root.getChildAt(0);
}
node1.add(nodek);
tree.setRowHeight(25);
tree.updateUI();
tree.setRowHeight(25);
}
///////////////////////给已经提交树添加节点///////////////////
public void createnode1(Object nodename) {
try {
DefaultMutableTreeNode nodel = new DefaultMutableTreeNode(nodename);
tree.isEditable();
if (root.getChildCount() == 4) {
node2 = (DefaultMutableTreeNode) root.getChildAt(1);
}
node2.add(nodel);
tree.setRowHeight(25);
tree.updateUI();
tree.setRowHeight(25);
}
catch (Exception e) {
System.out.println(e);
}
}
///////////////////////////给正在运行的树增加节点/////////////////
public void createnode2(Object nodename) {
try {
DefaultMutableTreeNode nodel = new DefaultMutableTreeNode(nodename);
tree.isEditable();
if (root.getChildCount() == 4) {
node2 = (DefaultMutableTreeNode) root.getChildAt(2);
}
node2.add(nodel);
tree.setRowHeight(25);
tree.updateUI();
tree.setRowHeight(25);
}
catch (Exception e) {
System.out.println(e);
}
}
/////////////////////////////////////////////////////////////////////////////////////
public void Dep_tree() {
/**取数据库中的部门数据生成树,
然后根据FLOW_MANAGER中的部门信息显示该部门的FLOW
*/
/**
* SQL:取出全部DEP的名称
*
*
*
*
*
*/
}
///////////////////////////////线程方法,显示提交流程图的运行状态////////////////
Thread thread = new Thread() {
public void run() {
pro = new workflow_progressbar();
jf.getContentPane().add(pro.pb);
jf.setSize(300, 48);
jf.setLocation(300, 300);
jf.setTitle("正在解析流程图数据.....请等待");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setResizable(false);
jf.show();
}
};
/////////////////////////弹出菜单方法/////////////////////////////
public JPopupMenu createPopupMenu(final Point pt,
final DefaultMutableTreeNode cell) {
menu = new JPopupMenu();
if (!tree.isSelectionEmpty() && cell.getParent().toString().equals("未提交工作流")) {
// Edit
menu.add(new AbstractAction("提交流程") {
public void actionPerformed(ActionEvent e) {
Thread thread1 = new Thread() { //在线程中定义提交过程
public void run() {
graphname = path0 + cell.toString() + ".gxl";
tree.setRowHeight(25);
///////////提交过程,包含将树的节点状态进行重新修改的方法/////////
try {
db_action = new workflow_dom(graphname, cell.toString());
smn = new workflow_StepMain(cell.toString());
departmentid = smn.get_department(user);
java.util.Date date = new java.util.Date();
currentDateTime = wudt.getCurrentDate(date);
smn.new_flow(cell.toString(), currentDateTime, departmentid);
cell.removeFromParent();
tree.updateUI(); //如果在改变了树的节点后,不使用该API,则不会在UI上面显示
createnode1(cell.toString());
tree.updateUI();
file = new File(path0 + (String) cell.getUserObject() +
".gxl");
File file1 = new File(path2 +
(String) cell.getUserObject() +
".actioned");
if (file.isFile() && file.exists()) {
file.renameTo(file1);
file.delete();
}
}
catch (Exception a) {
System.err.println(a);
}
tree.setRowHeight(25);
jf.dispose();
}
};
if (JOptionPane.showConfirmDialog(null, "是否将该流程图提交进数据库?") == 0) {
thread.start(); //线程方法...先运行进度窗口
thread1.start(); // 线程方法2 再运行提交方法
}
}
});
}
/////////////显示未入库的流程拓扑图///////////////////////
if (!tree.isSelectionEmpty() && cell.getParent().toString().equals("未提交工作流")) {
menu.addSeparator();
menu.add(new AbstractAction("显示该流程图") {
public void actionPerformed(ActionEvent e) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -