📄 assignform.java
字号:
/**
*
*/
package flow.graph.gui.graph.cell.ui;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.ByteArrayOutputStream;
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.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.LookAndFeel;
import javax.swing.UIManager;
import javax.swing.border.TitledBorder;
import javax.swing.plaf.metal.DefaultMetalTheme;
import javax.swing.plaf.metal.MetalLookAndFeel;
import org.jgraph.JGraph;
import org.jgraph.graph.DefaultGraphCell;
import com.jgoodies.looks.Options;
import com.jgoodies.looks.demo.Settings;
import com.jgoodies.looks.plastic.PlasticLookAndFeel;
import flow.graph.app.FlowManager;
import flow.graph.gui.graph.FlowGraphConstants;
import flow.graph.gui.graph.GraphExtends;
import flow.graph.gui.graph.cell.bpel.Message;
import flow.graph.gui.graph.cell.bpel.Messages;
import flow.graph.gui.graph.cell.ui.table.AssignDetailTable;
import flow.graph.gui.graph.cell.ui.table.MessageTable;
import flow.graph.gui.graph.cell.ui.table.MessageTableModel;
import flow.graph.gui.graph.encoder.XMLEncoder;
/**
* @author Administrator
*
*/
public class AssignForm{
private DefaultGraphCell cell;
private JGraph graph;
private JDialog dialog;
//数据类型名称
private JTextField messageName;
//数据请求类型
private JComboBox messageType;
//数据类型增加按钮
private JButton messageAddButton;
//数据类型表格
private MessageTable messageTable;
//数据类型删除按钮
private JButton messageDeleteButton;
//数据类型修改按钮
private JButton messageModifyButton;
private int messageRowID = -1;
//数据类型增加数据项按钮
private JButton messageDetailButton;
private JButton assignButton;
public AssignForm(final DefaultGraphCell cell, final JGraph graph){
this.cell = cell;
this.graph = graph;
dialog = new JDialog(FlowManager.getInstance(), "Assign数据编辑窗口", true);
//数据类型定义
messageName = new JTextField(20);
messageType = new JComboBox(Message.MessageType);
messageAddButton = new JButton("增 加");
messageAddButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(FlowGraphConstants.getBpelMessages(cell.getAttributes()) == null){
FlowGraphConstants.setBpelMessages(cell.getAttributes(), new Messages());
}
// TODO Auto-generated method stub
if(messageName.getText().length() <= 0){
//提示不能为空
JOptionPane.showConfirmDialog(FlowManager.getInstance(),
"数据类型名称不能为空!",
"工作流操作提示",
JOptionPane.CLOSED_OPTION);
messageName.setFocusable(true);
return;
}
if(messageType.getSelectedIndex() <= 0){
JOptionPane.showConfirmDialog(FlowManager.getInstance(),
"请选择数据类型!",
"工作流操作提示",
JOptionPane.CLOSED_OPTION);
return;
}
//Messages messages = (Messages)graph.get
for(int i=0;i<((MessageTableModel)messageTable.getModel()).getRowCount();i++){
if(((MessageTableModel)messageTable.getModel()).getValueAt(i, 0).toString().equalsIgnoreCase(messageName.getText())){
JOptionPane.showConfirmDialog(FlowManager.getInstance(),
"数据类型 "+messageName.getText()+" 已经存在!",
"工作流操作提示",
JOptionPane.CLOSED_OPTION);
return;
}
}
((MessageTableModel)messageTable.getModel()).addRow(messageName.getText(), messageType.getSelectedItem().toString());
Message message = new Message(messageName.getText(), messageType.getSelectedItem().toString());
((Messages)FlowGraphConstants.getBpelMessages(cell.getAttributes())).addMessage(message);
messageName.setText("");
messageType.setSelectedIndex(0);
}
});
messageModifyButton = new JButton("修 改");
messageModifyButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(messageRowID != -1){
if(messageName.getText().length() <= 0){
//提示不能为空
JOptionPane.showConfirmDialog(FlowManager.getInstance(),
"数据类型名称不能为空!",
"工作流操作提示",
JOptionPane.CLOSED_OPTION);
messageName.setFocusable(true);
return;
}
if(messageType.getSelectedIndex() <= 0){
JOptionPane.showConfirmDialog(FlowManager.getInstance(),
"请选择数据类型!",
"工作流操作提示",
JOptionPane.CLOSED_OPTION);
return;
}
//Messages messages = (Messages)graph.get
for(int i=0;i<((MessageTableModel)messageTable.getModel()).getRowCount();i++){
if(i == messageRowID)
continue;
if(((MessageTableModel)messageTable.getModel()).getValueAt(i, 0).toString().equalsIgnoreCase(messageName.getText())){
JOptionPane.showConfirmDialog(FlowManager.getInstance(),
"数据类型 "+messageName.getText()+" 已经存在!",
"工作流操作提示",
JOptionPane.CLOSED_OPTION);
return;
}
}
if(FlowGraphConstants.getBpelMessages(cell.getAttributes()) != null){
for(int i=0;i<((Messages)FlowGraphConstants.getBpelMessages(cell.getAttributes())).getMessages().size();i++){
Message message = ((Message)((Messages)FlowGraphConstants.getBpelMessages(cell.getAttributes())).getMessages().get(i));
if(message.getName().equals(((MessageTableModel)messageTable.getModel()).getValueAt(messageRowID, 0))){
((Message)((Messages)FlowGraphConstants.getBpelMessages(cell.getAttributes())).getMessages().get(i)).setName(messageName.getText());
((Message)((Messages)FlowGraphConstants.getBpelMessages(cell.getAttributes())).getMessages().get(i)).setType(messageType.getSelectedItem().toString());
}
}
}
((MessageTableModel)messageTable.getModel()).setValueAt(messageName.getText(), messageRowID, 0);
((MessageTableModel)messageTable.getModel()).setValueAt(messageType.getSelectedItem().toString(), messageRowID, 1);
messageName.setText("");
messageType.setSelectedIndex(0);
}
messageRowID = -1;
}
});
messageTable = new MessageTable(cell);
messageTable.setDragEnabled(false);
messageTable.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
int rowID = messageTable.rowAtPoint(e.getPoint());
messageRowID = rowID;
System.out.println("rowID="+rowID);
int columnID = messageTable.columnAtPoint(e.getPoint());
messageName.setText(((MessageTableModel)messageTable.getModel()).getValueAt(rowID, 0).toString());
messageType.setSelectedItem(((MessageTableModel)messageTable.getModel()).getValueAt(rowID, 1).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
}
});
messageDeleteButton = new JButton("删 除");
messageDeleteButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(messageRowID != -1){
if(FlowGraphConstants.getBpelMessages(cell.getAttributes()) != null){
for(int i=0;i<((Messages)FlowGraphConstants.getBpelMessages(cell.getAttributes())).getMessages().size();i++){
Message message = ((Message)((Messages)FlowGraphConstants.getBpelMessages(cell.getAttributes())).getMessages().get(i));
if(message.getName().equals(((MessageTableModel)messageTable.getModel()).getValueAt(messageRowID, 0))){
((Messages)FlowGraphConstants.getBpelMessages(cell.getAttributes())).getMessages().remove(i);
}
}
}
((MessageTableModel)messageTable.getModel()).removeRow(messageRowID);
messageName.setText("");
messageType.setSelectedIndex(0);
}
messageRowID = -1;
}
});
messageDetailButton = new JButton("定义变量");
messageDetailButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(messageRowID != -1)
new AssignDetailForm(cell, graph, ((MessageTableModel)messageTable.getModel()).getValueAt(messageRowID, 0).toString());
}
});
assignButton = new JButton("赋值定义");
assignButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
new AssignValueForm(cell, graph);
}
});
JPanel messageTitlePanel = new JPanel(new BorderLayout());
messageTitlePanel.setBorder(new TitledBorder(""));
Box layoutBox = Box.createVerticalBox();
Box addBox = Box.createHorizontalBox();
addBox.add(new JLabel("类型名称:"));
addBox.add(messageName);
addBox.add(Box.createHorizontalStrut(5));
addBox.add(new JLabel("数据类型:"));
addBox.add(messageType);
addBox.add(Box.createHorizontalStrut(5));
addBox.add(messageAddButton);
addBox.add(Box.createHorizontalStrut(5));
addBox.add(messageModifyButton);
layoutBox.add(addBox);
layoutBox.add(Box.createVerticalStrut(10));
layoutBox.add(new JScrollPane(messageTable));
layoutBox.add(Box.createVerticalStrut(10));
JButton exitButton = new JButton("关闭");
exitButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
dialog.dispose();
}
//
});
JPanel controlPanel = new JPanel(new FlowLayout());
controlPanel.add(messageDeleteButton);
controlPanel.add(Box.createHorizontalStrut(10));
controlPanel.add(messageDetailButton);
controlPanel.add(Box.createHorizontalStrut(10));
controlPanel.add(assignButton);
controlPanel.add(Box.createHorizontalStrut(10));
controlPanel.add(exitButton);
layoutBox.add(controlPanel);
messageTitlePanel.add(layoutBox, BorderLayout.CENTER);
dialog.getContentPane().setLayout(new BorderLayout());
Box rootLayout = Box.createVerticalBox();
rootLayout.add(messageTitlePanel);
//rootLayout.add(assignTitlePanel);
dialog.setSize(450, 350);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
dialog.setLocation((screenSize.width-450)/2, (screenSize.height-350)/2);
dialog.setResizable(true);
dialog.add(rootLayout, BorderLayout.CENTER);
dialog.addWindowListener(new WindowListener(){
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub
}
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
System.out.println("....");
dialog.dispose();
}
public void windowClosed(WindowEvent e) {
// TODO Auto-generated method stub
}
public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub
}
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub
}
public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub
}
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub
}
});
dialog.show();
}
public static void configureUI(){
Settings settings = Settings.createDefault();
Options.setDefaultIconSize(new Dimension(18, 18));
Options.setUseNarrowButtons(settings.isUseNarrowButtons());
// Global options
Options.setTabIconsEnabled(settings.isTabIconsEnabled());
UIManager.put(Options.POPUP_DROP_SHADOW_ENABLED_KEY,
settings.isPopupDropShadowEnabled());
// Swing Settings
LookAndFeel selectedLaf = settings.getSelectedLookAndFeel();
if (selectedLaf instanceof PlasticLookAndFeel) {
PlasticLookAndFeel.setPlasticTheme(settings.getSelectedTheme());
PlasticLookAndFeel.setTabStyle(settings.getPlasticTabStyle());
PlasticLookAndFeel.setHighContrastFocusColorsEnabled(
settings.isPlasticHighContrastFocusEnabled());
} else if (selectedLaf.getClass() == MetalLookAndFeel.class) {
MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
}
// Work around caching in MetalRadioButtonUI
JRadioButton radio = new JRadioButton();
radio.getUI().uninstallUI(radio);
JCheckBox checkBox = new JCheckBox();
checkBox.getUI().uninstallUI(checkBox);
try {
UIManager.setLookAndFeel(selectedLaf);
} catch (Exception e) {
System.out.println("Can't change L&F: " + e);
}
}
public static void main(String[] args){
AssignForm.configureUI();
AssignForm form = new AssignForm(new DefaultGraphCell("哈哈"), null);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -