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

📄 assigndetailform.java

📁 JGraph扩展应用。自定义Renderer,自定义视图View实现自定义工作流控件
💻 JAVA
字号:
/**
 * 
 */
package flow.graph.gui.graph.cell.ui;

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.MouseEvent;
import java.awt.event.MouseListener;

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.cell.bpel.Message;
import flow.graph.gui.graph.cell.bpel.Messages;
import flow.graph.gui.graph.cell.bpel.Part;
import flow.graph.gui.graph.cell.ui.table.AssignDetailTable;
import flow.graph.gui.graph.cell.ui.table.MessageDetailTable;
import flow.graph.gui.graph.cell.ui.table.MessageDetailTableModel;
import flow.graph.gui.graph.cell.ui.table.MessageTableModel;

/**
 * @author Administrator
 *
 */
public class AssignDetailForm {
	private DefaultGraphCell cell;
	private JGraph graph;
	private JDialog dialog;
	private String name;
	
	private JTextField variableName;
	private JComboBox variableType;
	private JButton addButton;
	private JButton modifyButton;
	private JButton deleteButton;
	private JButton closeButton;
	private MessageDetailTable messageDetailTable;
	private int rowID = -1;

	public AssignDetailForm(final DefaultGraphCell cell, JGraph graph, final String name){
		this.cell = cell;
		this.graph = graph;
		this.name = name;
		dialog = new JDialog(FlowManager.getInstance(), "数据变量定义窗口", true);
		
		variableName = new JTextField(20);
		variableType = new JComboBox(Message.DataType);
		messageDetailTable = new MessageDetailTable(cell, name);
		addButton = new JButton("增  加");
		addButton.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				if(variableName.getText().length() <= 0){
					//提示不能为空
					JOptionPane.showConfirmDialog(FlowManager.getInstance(),
							"变量名不能为空!",
							"工作流操作提示",
							JOptionPane.CLOSED_OPTION);
					//variableName.setFocusable(true);
					return;
				}
				if(variableType.getSelectedIndex() <= 0){
					JOptionPane.showConfirmDialog(FlowManager.getInstance(),
							"请选择数据类型!",
							"工作流操作提示",
							JOptionPane.CLOSED_OPTION);
					return;
				}
				//Messages messages = (Messages)graph.get
				for(int i=0;i<((MessageDetailTableModel)messageDetailTable.getModel()).getRowCount();i++){
					if(((MessageDetailTableModel)messageDetailTable.getModel()).getValueAt(i, 0).toString().equalsIgnoreCase(variableName.getText())){
						JOptionPane.showConfirmDialog(FlowManager.getInstance(),
								"变量名 "+variableName.getText()+" 已经存在!",
								"工作流操作提示",
								JOptionPane.CLOSED_OPTION);
						return;
					}
				}
				((MessageDetailTableModel)messageDetailTable.getModel()).addRow(variableName.getText(), variableType.getSelectedItem().toString());
				Part part = new Part(variableName.getText(), variableType.getSelectedItem().toString());
				if(FlowGraphConstants.getBpelMessages(cell.getAttributes()) != null){
					Messages messages = (Messages)FlowGraphConstants.getBpelMessages(cell.getAttributes());
					for(int i=0;i<messages.getMessages().size();i++){
						Message message = (Message)messages.getMessages().get(i);
						if(message.getName().equals(name)){
							((Message)((Messages)FlowGraphConstants.getBpelMessages(cell.getAttributes())).getMessages().get(i)).addPart(part);
						}
					}
				}
				
				variableName.setText("");
				variableType.setSelectedIndex(0);
			}
		});
		modifyButton = new JButton("修  改");
		modifyButton.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				if(rowID != -1){
					if(variableName.getText().length() <= 0){
						//提示不能为空
						JOptionPane.showConfirmDialog(FlowManager.getInstance(),
								"变量名不能为空!",
								"工作流操作提示",
								JOptionPane.CLOSED_OPTION);
						//variableName.setFocusable(true);
						return;
					}
					if(variableType.getSelectedIndex() <= 0){
						JOptionPane.showConfirmDialog(FlowManager.getInstance(),
								"请选择数据类型!",
								"工作流操作提示",
								JOptionPane.CLOSED_OPTION);
						return;
					}
					//Messages messages = (Messages)graph.get
					for(int i=0;i<((MessageDetailTableModel)messageDetailTable.getModel()).getRowCount();i++){
						if(i == rowID)
							continue;
						if(((MessageDetailTableModel)messageDetailTable.getModel()).getValueAt(i, 0).toString().equalsIgnoreCase(variableName.getText())){
							JOptionPane.showConfirmDialog(FlowManager.getInstance(),
									"变量名 "+variableName.getText()+" 已经存在!",
									"工作流操作提示",
									JOptionPane.CLOSED_OPTION);
							return;
						}
					}
					if(FlowGraphConstants.getBpelMessages(cell.getAttributes()) != null){
						Messages messages = (Messages)FlowGraphConstants.getBpelMessages(cell.getAttributes());
						for(int i=0;i<messages.getMessages().size();i++){
							Message message = (Message)messages.getMessages().get(i);
							if(message.getName().equals(name)){
								for(int j=0;j<message.getParts().size();j++){
									Part part = (Part)message.getParts().get(j);
									if(part.getName().equals(((MessageDetailTableModel)messageDetailTable.getModel()).getValueAt(rowID, 0))){
										((Part)((Message)((Messages)FlowGraphConstants.getBpelMessages(cell.getAttributes())).getMessages().get(i)).getParts().get(j)).setName(variableName.getText());
										((Part)((Message)((Messages)FlowGraphConstants.getBpelMessages(cell.getAttributes())).getMessages().get(i)).getParts().get(j)).setType(variableType.getSelectedItem().toString());
									}
								}
							}
						}
					}
					((MessageDetailTableModel)messageDetailTable.getModel()).setValueAt(variableName.getText(), rowID, 0);
					((MessageDetailTableModel)messageDetailTable.getModel()).setValueAt(variableType.getSelectedItem().toString(), rowID, 1);
					variableName.setText("");
					variableType.setSelectedIndex(0);
				}
				rowID = -1;
			}			
		});
		deleteButton = new JButton("删  除");
		deleteButton.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				if(rowID != -1){
					if(FlowGraphConstants.getBpelMessages(cell.getAttributes()) != null){
						Messages messages = (Messages)FlowGraphConstants.getBpelMessages(cell.getAttributes());
						for(int i=0;i<messages.getMessages().size();i++){
							Message message = (Message)messages.getMessages().get(i);
							if(message.getName().equals(name)){
								for(int j=0;j<message.getParts().size();j++){
									Part part = (Part)message.getParts().get(j);
									if(part.getName().equals(((MessageDetailTableModel)messageDetailTable.getModel()).getValueAt(rowID, 0))){
										((Message)((Messages)FlowGraphConstants.getBpelMessages(cell.getAttributes())).getMessages().get(i)).getParts().remove(j);
									}
								}
							}
						}
					}
					((MessageDetailTableModel)messageDetailTable.getModel()).removeRow(rowID);
					variableName.setText("");
					variableType.setSelectedIndex(0);
				}
				rowID = -1;
			}			
		});
		closeButton = new JButton("关  闭");
		messageDetailTable.addMouseListener(new MouseListener(){

			public void mouseClicked(MouseEvent e) {
				// TODO Auto-generated method stub
				rowID = messageDetailTable.rowAtPoint(e.getPoint());
				//System.out.println("rowID="+rowID);
				int columnID = messageDetailTable.columnAtPoint(e.getPoint());
				variableName.setText(((MessageDetailTableModel)messageDetailTable.getModel()).getValueAt(rowID, 0).toString());
				variableType.setSelectedItem(((MessageDetailTableModel)messageDetailTable.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
				
			}
			
		});

		Box addBox = Box.createHorizontalBox();
		addBox.add(new JLabel("变量名:"));
		addBox.add(variableName);
		addBox.add(Box.createHorizontalStrut(10));
		addBox.add(new JLabel("数据类型"));
		addBox.add(variableType);
		addBox.add(Box.createHorizontalStrut(10));
		addBox.add(addButton);
		addBox.add(modifyButton);
		
		JPanel controlPanel = new JPanel(new FlowLayout());
		controlPanel.add(deleteButton);
		controlPanel.add(closeButton);
		closeButton.addActionListener(new ActionListener(){

			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				dialog.dispose();
			}
			
		});
		
		JPanel panel = new JPanel(new BorderLayout());
		panel.setBorder(new TitledBorder(""));
		dialog.getContentPane().setLayout(new BorderLayout());
		Box controlBox = Box.createVerticalBox();
		controlBox.add(Box.createVerticalStrut(10));
		controlBox.add(addBox);
		controlBox.add(Box.createVerticalStrut(10));
		controlBox.add(new JScrollPane(messageDetailTable));
		panel.add(controlBox, BorderLayout.CENTER);
		
		dialog.getContentPane().add(panel, BorderLayout.CENTER);
		dialog.getContentPane().add(controlPanel, BorderLayout.SOUTH);
		dialog.setSize(400, 300);
		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		dialog.setLocation((screenSize.width-400)/2, (screenSize.height-300)/2);
		dialog.setResizable(true);
		dialog.show();
	}
	
	public static void main(String[] args){
		AssignForm.configureUI();
		AssignDetailForm form = new AssignDetailForm(new DefaultGraphCell("哈哈"), null, "");
	}
}

⌨️ 快捷键说明

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