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

📄 testframe.java

📁 JGraph扩展应用。自定义Renderer,自定义视图View实现自定义工作流控件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/**
 * 
 */
package flow.graph.gui.graph.lua.gui;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.Hashtable;

import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.TitledBorder;

import org.jgraph.JGraph;
import org.jgraph.graph.DefaultGraphCell;

import flow.graph.app.FlowManager;
import flow.graph.gui.graph.FlowGraphConstants;
import flow.graph.gui.graph.GraphExtends;
import flow.graph.gui.graph.cell.BPELFlag;
import flow.graph.gui.graph.cell.FlowGraphCell;
import flow.graph.gui.graph.cell.bpel.Function;
import flow.graph.gui.graph.cell.bpel.FunctionTips;
import flow.graph.gui.graph.cell.bpel.Functions;
import flow.graph.gui.graph.cell.bpel.Invoke;
import flow.graph.gui.graph.cell.bpel.Message;
import flow.graph.gui.graph.cell.bpel.Messages;
import flow.graph.gui.graph.cell.bpel.While;
import flow.graph.gui.graph.cell.ui.AssignForm;
import flow.graph.gui.graph.lua.gui.table.InputParameterTable;
import flow.graph.gui.graph.lua.gui.table.OutputParameterTable;
import flow.graph.gui.graph.lua.gui.table.ParameterTableModel;
import flow.graph.gui.graph.lua.xml.ActionTemplate;
import flow.graph.gui.graph.lua.xml.Parameter;
import flow.graph.gui.graph.lua.xml.Parameters;
import flow.graph.gui.graph.lua.xml.TemplateConstants;
import flow.graph.gui.syntax.JHightLightLineTextPane;
import flow.graph.gui.tools.SimpleButton;
import flow.graph.test.JSelectButton;

/**
 * @author Administrator
 *
 */
public class TestFrame {
	private DefaultGraphCell cell;
	private JGraph graph;
	private JDialog dialog;

	////////////////////////////////////
	//input control
	private JTextField inputName;
	private JComboBox inputType;
	private JTextField inputValue;
	private JTextField inputDiscription;
	private JButton inputAddButton, inputModifyButton, inputDeleteButton;
	private InputParameterTable inputTable;
	private int inputRowID = -1;
	
	////////////////////////////////////
	//output control
	private JTextField outputName;
	private JComboBox outputType;
	private JTextField outputValue;
	private JTextField outputDiscription;
	private JButton outputAddButton, outputModifyButton, outputDeleteButton;
	private OutputParameterTable outputTable;
	private int outputRowID = -1;
	
	private JHightLightLineTextPane actionArea;
	
	public TestFrame(final DefaultGraphCell cell, JGraph graph){
		this.cell = cell;
		this.graph = graph;
		
		if(FlowGraphConstants.getInputTemplate(cell.getAttributes()) == null){
			FlowGraphConstants.setInputTemplate(cell.getAttributes(), new Parameters());
		}
		if(FlowGraphConstants.getOutputTemplate(cell.getAttributes()) == null){
			FlowGraphConstants.setOutputTemplate(cell.getAttributes(), new Parameters());
		}
		if(FlowGraphConstants.getActionTemplate(cell.getAttributes()) == null){
			FlowGraphConstants.setActionTemplate(cell.getAttributes(), new ActionTemplate());
		}		
		
		dialog = new JDialog(FlowManager.getInstance(), "函数调用数据编辑窗口", true);
		
		inputName = new JTextField(20);
		inputType = new JComboBox(Parameter.ParameterType);
		inputValue = new JTextField(20);
		inputDiscription = new JTextField(30);
		inputAddButton = new JButton("增  加");
		inputModifyButton = new JButton("修  改");
		inputDeleteButton = new JButton("删  除");
		inputTable = new InputParameterTable(cell);

		JPanel inputTitledPanel = new JPanel(new BorderLayout());
		inputTitledPanel.setBorder(new TitledBorder("输入参数"));
		inputTitledPanel.setPreferredSize(new Dimension(10, 120));
		//inputTitledPanel.setBackground(Color.BLUE);
		Box inputAddBox1 = Box.createHorizontalBox();
		inputAddBox1.add(new JLabel("名称:"));
		inputAddBox1.add(inputName);
		inputAddBox1.add(Box.createHorizontalStrut(5));
		inputAddBox1.add(new JLabel("类型:"));
		inputAddBox1.add(inputType);
		inputAddBox1.add(Box.createHorizontalStrut(5));
		inputAddBox1.add(new JLabel("值:"));
		inputAddBox1.add(inputValue);
		
		Box inputAddBox2 = Box.createHorizontalBox();
		inputAddBox2.add(new JLabel("说明:"));
		inputAddBox2.add(inputDiscription);
		inputAddBox2.add(Box.createHorizontalStrut(5));
		inputAddBox2.add(inputAddButton);
		inputAddBox2.add(Box.createHorizontalStrut(5));
		inputAddBox2.add(inputModifyButton);
		inputAddBox2.add(Box.createHorizontalStrut(5));
		inputAddBox2.add(inputDeleteButton);
		
		//JPanel inputDeletePanel = new JPanel(new FlowLayout());
		//inputDeletePanel.add(inputDeleteButton);
		
		Box inputLayoutBox = Box.createVerticalBox();
		inputLayoutBox.add(inputAddBox1);
		//inputLayoutBox.add(Box.createVerticalStrut(1));
		inputLayoutBox.add(inputAddBox2);
		//inputLayoutBox.add(Box.createVerticalStrut(1));
		inputLayoutBox.add(new JScrollPane(inputTable));
		//inputLayoutBox.add(Box.createVerticalStrut(1));
		//inputLayoutBox.add(inputDeletePanel);
		inputTitledPanel.add(inputLayoutBox, BorderLayout.CENTER);

		/////////////////////////////////////////////////////////////////
		/////////////////////////////////////////////////////////////////
		outputName = new JTextField(20);
		outputType = new JComboBox(Parameter.ParameterType);
		outputValue = new JTextField(20);
		outputDiscription = new JTextField(30);
		outputAddButton = new JButton("增  加");
		outputModifyButton = new JButton("修  改");
		outputDeleteButton = new JButton("删  除");
		outputTable = new OutputParameterTable(cell);

		JPanel outputTitledPanel = new JPanel(new BorderLayout());
		outputTitledPanel.setBorder(new TitledBorder("输出参数"));
		outputTitledPanel.setPreferredSize(new Dimension(10, 120));
		Box outputAddBox1 = Box.createHorizontalBox();
		outputAddBox1.add(new JLabel("名称:"));
		outputAddBox1.add(outputName);
		outputAddBox1.add(Box.createHorizontalStrut(5));
		outputAddBox1.add(new JLabel("类型:"));
		outputAddBox1.add(outputType);
		outputAddBox1.add(Box.createHorizontalStrut(5));
		outputAddBox1.add(new JLabel("值:"));
		outputAddBox1.add(outputValue);
		
		Box outputAddBox2 = Box.createHorizontalBox();
		outputAddBox2.add(new JLabel("说明:"));
		outputAddBox2.add(outputDiscription);
		outputAddBox2.add(Box.createHorizontalStrut(5));
		outputAddBox2.add(outputAddButton);
		outputAddBox2.add(Box.createHorizontalStrut(5));
		outputAddBox2.add(outputModifyButton);
		outputAddBox2.add(Box.createHorizontalStrut(5));
		outputAddBox2.add(outputDeleteButton);
		
		//JPanel outputDeletePanel = new JPanel(new FlowLayout());
		//outputDeletePanel.add(outputDeleteButton);
		
		Box outputLayoutBox = Box.createVerticalBox();
		outputLayoutBox.add(outputAddBox1);
		//outputLayoutBox.add(Box.createVerticalStrut(1));
		outputLayoutBox.add(outputAddBox2);
		//outputLayoutBox.add(Box.createVerticalStrut(1));
		outputLayoutBox.add(new JScrollPane(outputTable));
		//outputLayoutBox.add(Box.createVerticalStrut(1));
		//outputLayoutBox.add(outputDeletePanel);
		outputTitledPanel.add(outputLayoutBox, BorderLayout.CENTER);
		////////////////////////////////////////////////////////////
		
		actionArea = new JHightLightLineTextPane();
		JPanel actionPanel = new JPanel(new BorderLayout());
		actionPanel.setPreferredSize(new Dimension(10, 150));
		actionPanel.setBorder(new TitledBorder("代码"));
		//actionPanel.add(new JScrollPane(actionArea), BorderLayout.CENTER);
		actionPanel.add(actionArea, BorderLayout.WEST);
		actionPanel.add(actionArea.scrollPane, BorderLayout.CENTER);
		
		JButton exitButton = new JButton("关  闭");
		exitButton.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				saveData();
			}			
		});
		JPanel exitPanel = new JPanel(new FlowLayout());
		exitPanel.add(exitButton);
		
		///////////////////////////////////////////////////////////
		//初始化actionArea
		if(FlowGraphConstants.getActionTemplate(cell.getAttributes()) != null){
			ActionTemplate action = (ActionTemplate)FlowGraphConstants.getActionTemplate(cell.getAttributes());
			//actionArea.setText(action.getAction().length()<=0?TemplateConstants.ACTION_TEMPLATE:action.getAction());
			actionArea.setText(action.getAction());
		}
		
		////////////////////////////////////////////////////////////
		inputAddButton.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				if(inputName.getText().length() <= 0){
					JOptionPane.showConfirmDialog(FlowManager.getInstance(),
							"变量名称不能为空!",
							"工作流操作提示",
							JOptionPane.CLOSED_OPTION);
					inputName.requestFocus();
					return;
				}
				if(inputType.getSelectedIndex() == 0){
					JOptionPane.showConfirmDialog(FlowManager.getInstance(),
							"请选择数据类型!",
							"工作流操作提示",
							JOptionPane.CLOSED_OPTION);
					inputType.requestFocus();
					return;
				}
				
				//////////////////////////
				//判断变量名是否已经存在
				/*
				if(FlowGraphConstants.getInputTemplate(cell.getAttributes()) != null){
					if(((Parameters)FlowGraphConstants.getInputTemplate(cell.getAttributes())).exitsParameter(inputName.getText())){
						JOptionPane.showConfirmDialog(FlowManager.getInstance(),
								"变量"+inputName.getText()+"已经存在!",
								"工作流操作提示",
								JOptionPane.CLOSED_OPTION);
						inputName.requestFocus();
						return;
					}
				}*/
				for(int i=0;i<((ParameterTableModel)inputTable.getModel()).getRowCount();i++){
					if(((ParameterTableModel)inputTable.getModel()).getValueAt(i, 0).toString().equalsIgnoreCase(inputName.getText())){
						JOptionPane.showConfirmDialog(FlowManager.getInstance(),
								"变量"+inputName.getText()+" 已经存在!",
								"工作流操作提示",
								JOptionPane.CLOSED_OPTION);
						return;
					}
				}
				
				((ParameterTableModel)inputTable.getModel()).addRow(inputName.getText(), inputType.getSelectedItem().toString(), inputValue.getText(), inputDiscription.getText());
				Parameter p = new Parameter(inputName.getText(), inputType.getSelectedItem().toString(), inputValue.getText(), inputDiscription.getText());
				((Parameters)FlowGraphConstants.getInputTemplate(cell.getAttributes())).addParameter(p);
				inputName.setText("");
				inputType.setSelectedIndex(0);
				inputValue.setText("");
				inputDiscription.setText("");
			}});
		
		inputTable.addMouseListener(new MouseListener(){

			public void mouseClicked(MouseEvent e) {
				// TODO Auto-generated method stub
				inputRowID = inputTable.rowAtPoint(e.getPoint());
				int columnID = inputTable.columnAtPoint(e.getPoint());
				inputName.setText(((ParameterTableModel)inputTable.getModel()).getValueAt(inputRowID, 0).toString());
				inputType.setSelectedItem(((ParameterTableModel)inputTable.getModel()).getValueAt(inputRowID, 1).toString());
				inputValue.setText(((ParameterTableModel)inputTable.getModel()).getValueAt(inputRowID, 2).toString());
				inputDiscription.setText(((ParameterTableModel)inputTable.getModel()).getValueAt(inputRowID, 3).toString());
			}

			public void mousePressed(MouseEvent e) {
				// TODO Auto-generated method stub
				
			}

			public void mouseReleased(MouseEvent e) {
				// TODO Auto-generated method stub
				
			}

			public void mouseEntered(MouseEvent e) {
				// TODO Auto-generated method stub
				
			}

			public void mouseExited(MouseEvent e) {
				// TODO Auto-generated method stub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -