flowmanager.java
来自「JGraph扩展应用。自定义Renderer,自定义视图View实现自定义工作流」· Java 代码 · 共 622 行 · 第 1/2 页
JAVA
622 行
/*
Copyright 2005 Matthew J. Battey
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied. See the License for the
specific language governing permissions and limitations under the License.
This software implements a Java application to manage a SAFMQ server.
Created on May 12, 2005
*/
package flow.graph.app;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.Action;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.JToolBar;
import javax.swing.LookAndFeel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.plaf.metal.DefaultMetalTheme;
import javax.swing.plaf.metal.MetalLookAndFeel;
import javax.swing.plaf.basic.BasicLookAndFeel;
import javax.swing.plaf.synth.SynthLookAndFeel;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
import com.jgoodies.looks.Options;
import com.jgoodies.looks.demo.Settings;
import com.jgoodies.looks.plastic.PlasticLookAndFeel;
import com.jgoodies.looks.windows.WindowsLookAndFeel;
import com.jgoodies.uif_lite.panel.SimpleInternalFrame;
import com.l2fprod.common.swing.JOutlookBar;
import flow.graph.db.SQLiteConnection;
import flow.graph.gui.graph.FlowStatusBar;
import flow.graph.gui.graph.GraphManager;
import flow.graph.gui.graph.GroupPanel;
import flow.graph.gui.graph.lua.gui.FunctionManagerForm;
import flow.graph.gui.graph.template.TemplateFactory;
import flow.graph.gui.graph.template.Templates;
import flow.graph.gui.tools.JButtonGroup;
import flow.graph.gui.tools.JGroupPanel;
import flow.graph.gui.tools.JGroupContainer;
import flow.graph.gui.tools.SelectButton;
import flow.graph.gui.tools.SimpleButton;
import flow.graph.gui.tree.BusinessNode;
import flow.graph.gui.tree.Deleteable;
import flow.graph.gui.tree.ServerTreeView;
import flow.graph.gui.tree.ServiceNode;
import flow.graph.gui.tree.SimpleAction;
import flow.graph.gui.tree.StartNode;
/**
* @author matt
*
*/
public class FlowManager extends JFrame {
StartNode startNode;
ServerTreeView treeView;
JPanel controlView = new JPanel();
private GroupPanel groupPanel;
private Templates templates;
private static FlowManager theManager = null;
public FlowManager(String dbname){
this();
SQLiteConnection.SQLite_DATABASE = dbname;
}
public FlowManager() {
super("工作流管理");
theManager = this;
templates = TemplateFactory.loadTemplate();
configureUI();
try {
ImageIcon icon = new ImageIcon(FlowManager.class.getResource("images/app.gif"));
this.setIconImage(icon.getImage());
} catch (Exception e) {
e.printStackTrace();
}
startNode = new StartNode();
treeView = new ServerTreeView(startNode);
JMenuBar bar = new JMenuBar();
JMenu file = new JMenu("文件(F)");
JMenu edit = new JMenu("编辑(E)");
JMenu manager = new JMenu("管理(M)");
file.setMnemonic(KeyEvent.VK_F);
edit.setMnemonic(KeyEvent.VK_E);
manager.setMnemonic(KeyEvent.VK_M);
Action open = new SimpleAction("打开(O)", new Integer(KeyEvent.VK_O), false){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}};
JMenuItem item = new JMenuItem();
item.setAction(open);
item.setIcon(new ImageIcon(GraphManager.class.getResource("images/Arrow.gif")));
file.add(item);
file.addSeparator();
file.add(new SimpleAction("保存(S)", new Integer(KeyEvent.VK_S), false){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}});
file.add(new SimpleAction("另存为...", new Integer(KeyEvent.VK_A), false){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}});
file.add(new SimpleAction("保存所有", new Integer(KeyEvent.VK_A), false){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}});
file.addSeparator();
file.add(new SimpleAction("关闭(C)", new Integer(KeyEvent.VK_C), false){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}});
file.add(new SimpleAction("关闭所有", new Integer(KeyEvent.VK_A), false){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}});
file.addSeparator();
file.add(new SimpleAction("Exit(E)", new Integer(KeyEvent.VK_E), true) {
public void actionPerformed(ActionEvent e){
//FlowManager.getInstance().hide(); }
if (JOptionPane.showConfirmDialog(FlowManager.getInstance(), "要保存所做的更改吗?", "系统正在退出...", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION){
System.out.println("System.exit by ask yes.");
}
else{
System.out.println("System.exit by ask no.");
}
System.exit(0);
}
});
bar.add(file);
treeView.newServiceAction = new SimpleAction("新增业务...", new Integer(KeyEvent.VK_G), false) {
public void actionPerformed(ActionEvent e) { addNewService(); }
};
treeView.toolNewServiceAction = new SimpleButton(new ImageIcon(ServerTreeView.class.getResource("images/new_ser.gif")));
treeView.toolNewServiceAction.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) { addNewService(); }
});
/*
treeView.toolNewServiceAction = new SimpleAction("新增业务...", new ImageIcon(ServerTreeView.class.getResource("images/new_ser.gif")), false) {
public void actionPerformed(ActionEvent e) { addNewService(); }
};*/
edit.add(treeView.newServiceAction);
edit.add(treeView.modifyServiceAction);
edit.addSeparator();
edit.add(treeView.getNewNodeAction());
edit.add(treeView.getModifyNodeAction());
edit.addSeparator();
edit.add(treeView.getDeleteAction());
bar.add(edit);
manager.add(new SimpleAction("系统函数", new Integer(KeyEvent.VK_F), true){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
new FunctionManagerForm();
}});
bar.add(manager);
this.setJMenuBar(bar);
controlView.setLayout(new GridLayout());
controlView.setMinimumSize(new Dimension(50,50));
controlView.setPreferredSize(new Dimension(400,400));
//SimpleInternalFrame sif = new SimpleInternalFrame("");
//sif.setPreferredSize(new Dimension(200, 100));
//sif.add(treeView);
//JSplitPane sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, groupPanel, controlView);
groupPanel = new GroupPanel(treeView, templates);
JSplitPane sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, groupPanel.getGroupPanel(), controlView);
sp.setDividerSize(5);
sp.setDividerLocation(200);
sp.setOpaque(true);
getContentPane().add(sp, BorderLayout.CENTER);
createToolBar(treeView);
//createToolBar();
createStatusBar();
this.pack();
this.setVisible(true);
onWindowClosing(this);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
startNode.load();
}
public void refreshGroupPanel(){
groupPanel = new GroupPanel(treeView, TemplateFactory.loadTemplate());
//groupPanel.getGroupPanel().updateUI();
}
public GroupPanel getGroupPanel(){
return groupPanel;
}
public JGroupPanel createNormalModel(){
JGroupPanel group = new JGroupPanel();
//group.insertGroup(0, "普通模板库", new Color(236,233,216));
group.insertGroup(0, "模板库", UIManager.getColor("Desktop.background"));
JButtonGroup bg = new JButtonGroup();
//////////////////////////////////////////
SelectButton shapeArc = new SelectButton(new ImageIcon(GraphManager.class.getResource("images/Arrow.gif")));
shapeArc.setToolTipText("箭头");
SelectButton shapeStart = new SelectButton(new ImageIcon(GraphManager.class.getResource("images/insert.gif")));
shapeStart.setToolTipText("开始图形");
SelectButton shapeStop = new SelectButton(new ImageIcon(GraphManager.class.getResource("images/insert.gif")));
shapeStop.setToolTipText("结束图形");
SelectButton shapeEclipse = new SelectButton(new ImageIcon(GraphManager.class.getResource("images/insert.gif")));
shapeEclipse.setToolTipText("椭圆图形");
SelectButton shapeRectangle = new SelectButton(new ImageIcon(GraphManager.class.getResource("images/insert.gif")));
shapeRectangle.setToolTipText("矩形图形");
SelectButton shapeRoundRectangle = new SelectButton(new ImageIcon(GraphManager.class.getResource("images/insert.gif")));
shapeRoundRectangle.setToolTipText("圆角矩形图形");
SelectButton shapeDiamond = new SelectButton(new ImageIcon(GraphManager.class.getResource("images/insert.gif")));
shapeDiamond.setToolTipText("钻石图形");
SelectButton shapeTriangle = new SelectButton(new ImageIcon(GraphManager.class.getResource("images/insert.gif")));
shapeTriangle.setToolTipText("三角形图形");
bg.add(shapeArc);
bg.add(shapeStart);
bg.add(shapeStop);
bg.add(shapeEclipse);
bg.add(shapeRectangle);
bg.add(shapeRoundRectangle);
bg.add(shapeDiamond);
bg.add(shapeTriangle);
group.getGroup(0).setMemberGap(60, 10);
group.addMember(0, shapeArc);
group.addMember(0, shapeStart);
group.addMember(0, shapeStop);
group.addMember(0, shapeEclipse);
group.addMember(0, shapeRectangle);
group.addMember(0, shapeRoundRectangle);
group.addMember(0, shapeDiamond);
group.addMember(0, shapeTriangle);
//group.expandGroup(0);
return group;
}
private void createStatusBar(){
getContentPane().add(new FlowStatusBar(), BorderLayout.SOUTH);
}
public void createToolBar(){
JToolBar toolBar = new JToolBar();
toolBar.setFloatable(false);
toolBar.setLayout(new FlowLayout(FlowLayout.LEFT));
SimpleButton sb = new SimpleButton("", new ImageIcon(FlowManager.class.getResource("images/copy.gif")));
sb.setToolTipText("copy");
sb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.out.println("sb");
}});
toolBar.add(sb);
SelectButton sb1 = new SelectButton("", new ImageIcon(FlowManager.class.getResource("images/new.gif")));
sb1.setToolTipText("new");
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?