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

📄 invokeform.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 java.util.Iterator;
import java.util.Set;
import java.util.Vector;

import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JCheckBox;
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.border.TitledBorder;

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

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.GraphTemplateCell;
import flow.graph.gui.graph.lua.code.LuaInvokeParse;
import flow.graph.gui.graph.lua.gui.function.FunctionTree;
import flow.graph.gui.graph.lua.gui.table.InputParameterTable;
import flow.graph.gui.graph.lua.gui.table.InputParameterTableModel;
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.InputParameter;
import flow.graph.gui.graph.lua.xml.InputParameters;
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 InvokeForm {
	private DefaultGraphCell cell;
	private JGraph graph;
	private JDialog dialog;

	////////////////////////////////////
	//input control
	private JTextField inputName;
	private JComboBox inputType;
	private JCheckBox inputFlag;
	private JComboBox inputSource;
	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 InvokeForm(final DefaultGraphCell cell, JGraph graph){
		this.cell = cell;
		this.graph = graph;
		
		if(FlowGraphConstants.getInputTemplate(cell.getAttributes()) == null){
			FlowGraphConstants.setInputTemplate(cell.getAttributes(), new InputParameters());
		}
		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);
		//inputName.setPreferredSize(new Dimension(20, 20));
		inputType = new JComboBox(Parameter.ParameterType);
		//inputType.setPreferredSize(new Dimension(50, 20));
		inputFlag = new JCheckBox();
		Vector v = new Vector();
		v.add("");
		Hashtable ht = new Hashtable();
		Vector tv = GraphTemplateCell.getSourceParameter(cell);
		if(tv != null){
			for(int i=0;i<tv.size();i++){
				String tx = tv.get(i).toString();
				ht.put(tx,tx);
			}
		}
		if(ht.size()>0){
			Set set = ht.keySet();
			Iterator iter = set.iterator();
			while(iter.hasNext()){
				v.add(iter.next().toString());
			}
		}
		inputSource = new JComboBox(v.toArray());
		inputSource.setPreferredSize(new Dimension(40, 10));
		inputSource.setEditable(true);
		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(130, 80));
		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(inputFlag);
		inputAddBox1.add(Box.createHorizontalStrut(5));
		inputAddBox1.add(new JLabel("来源:"));
		inputAddBox1.add(inputSource);

		Box inputAddBox2 = Box.createHorizontalBox();
		inputAddBox2.add(new JLabel("    值:"));
		inputAddBox2.add(inputValue);
		
		Box inputAddBox3 = Box.createHorizontalBox();
		inputAddBox3.add(new JLabel("说明:"));
		inputAddBox3.add(inputDiscription);
		inputAddBox3.add(Box.createHorizontalStrut(5));
		inputAddBox3.add(inputAddButton);
		inputAddBox3.add(Box.createHorizontalStrut(5));
		inputAddBox3.add(inputModifyButton);
		inputAddBox3.add(Box.createHorizontalStrut(5));
		inputAddBox3.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(inputAddBox3);
		//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);
		//outputType.setPreferredSize(new Dimension(20, 10));
		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(250, 110));
		//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(inputFlag.isSelected() == true){
					if(inputSource.getSelectedIndex() <= 0){
						JOptionPane.showConfirmDialog(FlowManager.getInstance(),
								"请选择数据来源!",
								"工作流操作提示",
								JOptionPane.CLOSED_OPTION);
						inputSource.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<((InputParameterTableModel)inputTable.getModel()).getRowCount();i++){
					if(((InputParameterTableModel)inputTable.getModel()).getValueAt(i, 0).toString().equalsIgnoreCase(inputName.getText())){
						JOptionPane.showConfirmDialog(FlowManager.getInstance(),
								"变量"+inputName.getText()+" 已经存在!",
								"工作流操作提示",
								JOptionPane.CLOSED_OPTION);
						inputName.requestFocus();
						return;
					}
				}
				
				((InputParameterTableModel)inputTable.getModel()).addRow(inputName.getText(), inputType.getSelectedItem().toString(), inputFlag.isSelected(), inputSource.getSelectedItem()==null?"":inputSource.getSelectedItem().toString(), inputValue.getText(), inputDiscription.getText());
				InputParameter p = new InputParameter(inputName.getText(), inputType.getSelectedItem().toString(), inputFlag.isSelected(), inputSource.getSelectedItem()==null?"":inputSource.getSelectedItem().toString(), inputValue.getText(), inputDiscription.getText());
				((InputParameters)FlowGraphConstants.getInputTemplate(cell.getAttributes())).addParameter(p);
				inputName.setText("");
				inputType.setSelectedIndex(0);
				inputFlag.setSelected(false);
				inputSource.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(((InputParameterTableModel)inputTable.getModel()).getValueAt(inputRowID, 0).toString());
				inputType.setSelectedItem(((InputParameterTableModel)inputTable.getModel()).getValueAt(inputRowID, 1).toString());
				inputFlag.setSelected(((Boolean)((InputParameterTableModel)inputTable.getModel()).getValueAt(inputRowID, 2)).booleanValue());
				inputSource.setSelectedItem(((InputParameterTableModel)inputTable.getModel()).getValueAt(inputRowID, 3).toString());
				inputValue.setText(((InputParameterTableModel)inputTable.getModel()).getValueAt(inputRowID, 4).toString());
				inputDiscription.setText(((InputParameterTableModel)inputTable.getModel()).getValueAt(inputRowID, 5).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) {

⌨️ 快捷键说明

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