?? workflow_flowtree.java
字號:
package treedoc;
/** 主窗口的左邊的樹類
添加對樹進行狀態(tài)保存的文件
11.30增加樹結(jié)構(gòu)和狀態(tài)保留的串行化方法
修改GXL文件目錄列表的顯示方式
*/
/**
* 名稱 : WORKFLOW_FLOWTREE
* 描述 : WWW.FANGFA.NET 工作流管理系統(tǒng)--主窗口樹型目錄管理類
* 版權(quán)信息 : 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類
// 鼠標(biāo)事件處理方法;
// 右鍵顯示彈出菜單....
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());
}
}
});
}
// /////////////////////////創(chuàng)建一棵樹///////////////////////
public JTree createTree() {
tree.setBorder(BorderFactory.createEtchedBorder());
tree.setPreferredSize(new Dimension(130, 200));
tree.setRowHeight(25);
return tree;
}
////////////////////創(chuàng)建子節(jié)點//////////////////////
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);
}
///////////////////////給已經(jīng)提交樹添加節(jié)點///////////////////
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);
}
}
///////////////////////////給正在運行的樹增加節(jié)點/////////////////
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() {
/**取數(shù)據(jù)庫中的部門數(shù)據(jù)生成樹,
然后根據(jù)FLOW_MANAGER中的部門信息顯示該部門的FLOW
*/
/**
* SQL:取出全部DEP的名稱
*
*
*
*
*
*/
}
///////////////////////////////線程方法,顯示提交流程圖的運行狀態(tài)////////////////
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("正在解析流程圖數(shù)據(jù).....請等待");
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);
///////////提交過程,包含將樹的節(jié)點狀態(tài)進行重新修改的方法/////////
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(); //如果在改變了樹的節(jié)點后,不使用該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, "是否將該流程圖提交進數(shù)據(jù)庫?") == 0) {
thread.start(); //線程方法...先運行進度窗口
thread1.start(); // 線程方法2 再運行提交方法
}
}
});
}
/////////////顯示未入庫的流程拓撲圖///////////////////////
if (!tree.isSelectionEmpty() && cell.getParent().toString().equals("未提交工作流")) {
menu.addSeparator();
menu.add(new AbstractAction("顯示該流程圖") {
public void actionPerformed(ActionEvent e) {
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -