📄 whileform.java
字号:
/**
*
*/
package flow.graph.gui.graph.lua.gui;
import java.awt.BorderLayout;
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 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.code.LuaWhileParse;
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.CaseTemplate;
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;
/**
* @author Administrator
*
*/
public class WhileForm {
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;
private JTextField condictionField;
public WhileForm(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.getCaseTemplate(cell.getAttributes()) == null){
FlowGraphConstants.setCaseTemplate(cell.getAttributes(), new CaseTemplate());
}
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);
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(5));
inputLayoutBox.add(inputAddBox2);
inputLayoutBox.add(inputAddBox3);
//inputLayoutBox.add(Box.createVerticalStrut(5));
inputLayoutBox.add(new JScrollPane(inputTable));
//inputLayoutBox.add(Box.createVerticalStrut(5));
//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(5));
outputLayoutBox.add(outputAddBox2);
//outputLayoutBox.add(Box.createVerticalStrut(5));
outputLayoutBox.add(new JScrollPane(outputTable));
//outputLayoutBox.add(Box.createVerticalStrut(5));
//outputLayoutBox.add(outputDeletePanel);
outputTitledPanel.add(outputLayoutBox, BorderLayout.CENTER);
////////////////////////////////////////////////////////////
condictionField = new JTextField();
JPanel condictionTitledPanel = new JPanel(new BorderLayout());
Box condictionBox = Box.createHorizontalBox();
condictionBox.add(new JLabel("判断条件:"));
condictionBox.add(condictionField);
condictionTitledPanel.add(condictionBox, BorderLayout.CENTER);
actionArea = new JHightLightLineTextPane();
JPanel actionPanel = new JPanel(new BorderLayout());
actionPanel.setPreferredSize(new Dimension(250, 110));
//actionPanel.setBorder(new TitledBorder("执行代码"));
actionPanel.add(condictionBox, BorderLayout.NORTH);
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());
}
if(FlowGraphConstants.getCaseTemplate(cell.getAttributes()) != null){
CaseTemplate c = (CaseTemplate)FlowGraphConstants.getCaseTemplate(cell.getAttributes());
condictionField.setText(c.getCondiction());
}
////////////////////////////////////////////////////////////
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
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -