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

📄 assignform.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.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 + -