⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 workflow_flowtree.java

📁 用java实现的工作流
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
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 + -