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

📄 workfloweditor.java

📁 一个很好实用的工作流OSWORKFLOW开发例子.有着非常优秀的灵活性.
💻 JAVA
字号:
package com.opensymphony.workflow.designer.editor;import javax.swing.*;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import com.jgoodies.forms.layout.FormLayout;import com.jgoodies.forms.layout.CellConstraints;import com.jgoodies.forms.builder.PanelBuilder;import com.opensymphony.workflow.designer.dialogs.AttributeDialog;import com.opensymphony.workflow.designer.WorkflowDesigner;import com.opensymphony.workflow.designer.UIFactory;import com.opensymphony.workflow.designer.Utils; import com.opensymphony.workflow.designer.ResourceManager;import com.opensymphony.workflow.designer.beanutils.BeanConnector;import com.opensymphony.workflow.designer.model.AttributesTableModel;import com.opensymphony.workflow.designer.model.RegistersTableModel;import com.opensymphony.workflow.designer.model.TriggersTableModel;import com.opensymphony.workflow.loader.WorkflowDescriptor;import com.opensymphony.workflow.loader.RegisterDescriptor;import com.opensymphony.workflow.loader.FunctionDescriptor;public class WorkflowEditor extends DetailPanel implements ActionListener{	private static final String[] BUTTONS = new String[]{"add", "remove", "edit"};	private JTextField name = new JTextField();		private AttributesTableModel attributesModel = new AttributesTableModel();	private JTable attributesTable;	private RegistersTableModel registersModel = new RegistersTableModel();	private JTable registersTable;	private TriggersTableModel triggersModel = new TriggersTableModel();	private JTable triggersTable;	private BeanConnector connector = new BeanConnector();	  public WorkflowEditor()  {  }  protected void initComponents()  {		String colLayout = "2dlu, max(32dlu;pref), 2dlu, pref:grow, 4dlu";		String rowLayout = "4dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref";				JTabbedPane tabbedPane = new JTabbedPane();		CellConstraints cc = new CellConstraints();        FormLayout layout = new FormLayout("2dlu, 50dlu:grow, 2dlu", "2dlu, pref, 2dlu");    PanelBuilder builder = new PanelBuilder(this, layout);    		/////////////////////////////		// Tab1 (Info)		/////////////////////////////		FormLayout layoutInfo = new FormLayout(colLayout, rowLayout);		JPanel panelInfo = new JPanel();		PanelBuilder builderInfo = new PanelBuilder(panelInfo, layoutInfo);    		builderInfo.addLabel(ResourceManager.getString("name"), cc.xy(2, 4));		connector.connect(name, "name");		builderInfo.add(name, cc.xy(4, 4));		tabbedPane.add(ResourceManager.getString("info"), panelInfo);				///////////////////////////		// Tab2 (meta attributes)		///////////////////////////		FormLayout layoutAttrib = new FormLayout(colLayout, rowLayout);		JPanel panelAttrib = new JPanel();		PanelBuilder builderAttrib = new PanelBuilder(panelAttrib, layoutAttrib);				attributesTable = new JTable(attributesModel);		attributesTable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 				//attributesModel.setGraphModel(getModel());		builderAttrib.add(UIFactory.createTablePanel(attributesTable), cc.xywh(2, 2, 3, 1));		// 2, 15, 3, 1		builderAttrib.add(UIFactory.getAddRemovePropertiesBar(this, "attribute", BUTTONS), cc.xywh(2, 4, 3, 1));	// 2, 16, 3, 1				tabbedPane.add(ResourceManager.getString("attributes"), panelAttrib);				//////////////////////////		// Tab3 (registers)		//////////////////////////		FormLayout layoutRegisters = new FormLayout(colLayout, rowLayout);		JPanel panelRegisters = new JPanel();		PanelBuilder builderRegisters = new PanelBuilder(panelRegisters, layoutRegisters);				registersTable = new JTable(registersModel);		registersTable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);		registersModel.setGraphModel(getModel());		builderRegisters.add(UIFactory.createTablePanel(registersTable), cc.xywh(2, 2, 3, 1));		// 2, 20, 3, 1		builderRegisters.add(UIFactory.getAddRemovePropertiesBar(this, "register", BUTTONS), cc.xywh(2, 4, 3, 1));	// 2, 21, 3, 1				tabbedPane.add(ResourceManager.getString("registers"), panelRegisters);				//////////////////////////		// Tab4 (trigger-functions)		//////////////////////////		FormLayout layoutTriggers = new FormLayout(colLayout, rowLayout);		JPanel panelTriggers = new JPanel();		PanelBuilder builderTriggers = new PanelBuilder(panelTriggers, layoutTriggers);				triggersTable = new JTable(triggersModel);		triggersTable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);		triggersModel.setGraphModel(getModel());		builderTriggers.add(UIFactory.createTablePanel(triggersTable), cc.xywh(2, 2, 3, 1));		builderTriggers.add(UIFactory.getAddRemovePropertiesBar(this, "trigger", BUTTONS), cc.xywh(2, 4, 3, 1));				tabbedPane.add(ResourceManager.getString("triggerfunctions"), panelTriggers);				builder.add(tabbedPane, cc.xy(2,2));      }		public void actionPerformed(ActionEvent e)	{		String command = e.getActionCommand().toLowerCase();		if(command.equals("attributeadd"))		{			attributeadd();		}		else if(command.equals("attributeremove"))		{			attributeremove();		}		else if(command.equals("attributeedit"))		{			attributemodify();		}		else if(command.equals("registeradd"))		{			registeradd();		}		else if(command.equals("registerremove"))		{			registerremove();		}		else if(command.equals("registeredit"))		{			registermodify();		}		else if(command.equals("triggeradd"))		{			triggeradd();		}		else if(command.equals("triggerremove"))		{			triggerremove();		}		else if(command.equals("triggeredit"))		{			triggermodify();		}	}	public String getTitle()	{		return ResourceManager.getString("title.workflow", new Object[]{((WorkflowDescriptor)getDescriptor()).getName()});	}	protected void viewClosed()	{		if (registersTable.isEditing())		{			registersTable.getCellEditor().stopCellEditing();		}		else if (attributesTable.isEditing())		{			attributesTable.getCellEditor().stopCellEditing();		}		else if (triggersTable.isEditing())		{			triggersTable.getCellEditor().stopCellEditing();		}	}		protected void updateView()	{		WorkflowDescriptor workflowDescriptor = (WorkflowDescriptor)getDescriptor();				attributesModel.setMap(workflowDescriptor.getMetaAttributes());		attributesTable.getSelectionModel().clearSelection();					registersModel.setList(workflowDescriptor.getRegisters());		registersTable.getSelectionModel().clearSelection(); 				triggersModel.setMap(workflowDescriptor.getTriggerFunctions());		triggersTable.getSelectionModel().clearSelection(); 				connector.setSource(workflowDescriptor);		connector.setPanel(this);	}		private void attributeadd()	{		AttributeDialog dlg = new AttributeDialog(WorkflowDesigner.INSTANCE, "", "", true);		if (dlg.ask(WorkflowDesigner.INSTANCE))		{			String sKey = dlg.keyField.getText();			String sValue = dlg.valueField.getText();			if (sKey.length()>0)			{				attributesModel.add(sKey, sValue);			}		}	}	private void attributeremove()	{		int[] rows = attributesTable.getSelectedRows();		for(int i = 0; i < rows.length; i++)		{			String sKey = (String)attributesModel.getValueAt(rows[i], 0);			attributesModel.remove(sKey);		}			}	private void attributemodify()	{		int[] rows = attributesTable.getSelectedRows();		for(int i = 0; i < rows.length; i++)		{			attributemodify(rows[i]);		}	}	private void attributemodify(int selected)	{		String sKey = (String)attributesModel.getValueAt(selected, 0);		String sValue = (String)attributesModel.getValueAt(selected, 1);		if ((sKey!=null)&&(sKey.length()>0))		{			AttributeDialog dlg = new AttributeDialog(WorkflowDesigner.INSTANCE, sKey, sValue, false);			if (dlg.ask(WorkflowDesigner.INSTANCE))			{				sValue = dlg.valueField.getText();				attributesModel.add(sKey, sValue);			}		}	}	private void registeradd()	{		RegisterEditor editor = new RegisterEditor(getDescriptor());		editor.setModel(getModel());		RegisterDescriptor reg = editor.add();		if (reg!=null)		{			registersModel.add(reg);		}	}	private void registerremove()	{		int[] rows = registersTable.getSelectedRows();		for(int i = 0; i < rows.length; i++)		{			registersModel.remove(rows[i]);		}	}	private void registermodify()	{		int[] rows = registersTable.getSelectedRows();		for(int i = 0; i < rows.length; i++)		{			registermodify(rows[i]);		}	}	private void registermodify(int selected)	{		RegisterDescriptor reg = (RegisterDescriptor)registersModel.get(selected);		RegisterEditor editor = new RegisterEditor(getDescriptor());		editor.setModel(getModel());		editor.modify(reg);		registersModel.fireTableDataChanged();	}	private void triggeradd()	{		TriggerFunctionEditor editor = new TriggerFunctionEditor((WorkflowDescriptor)getDescriptor());		editor.setModel(getModel());		FunctionDescriptor func = editor.add();		if (func!=null)		{			//Utils.checkId(getModel().getContext(), func);					func.setId(Utils.getNextId(getModel().getContext()));			Utils.checkId(getModel().getContext(), func);			triggersModel.add(new Integer(func.getId()), func);		}	}	private void triggerremove()	{		int[] rows = triggersTable.getSelectedRows();		for(int i = 0; i < rows.length; i++)		{			Integer idKey = new Integer(Integer.parseInt((String)triggersModel.getValueAt(rows[i], 0)));			triggersModel.remove(idKey);		}		}	private void triggermodify()	{		int[] rows = triggersTable.getSelectedRows();		for(int i = 0; i < rows.length; i++)		{			triggermodify(rows[i]);		}			}	private void triggermodify(int selected)	{		Integer idKey = new Integer(Integer.parseInt((String)triggersModel.getValueAt(selected, 0)));		FunctionDescriptor func = (FunctionDescriptor)triggersModel.get(idKey);		if (func!=null)		{			TriggerFunctionEditor editor = new TriggerFunctionEditor((WorkflowDescriptor)getDescriptor());			editor.setModel(getModel());			editor.modify(func);			triggersModel.fireTableDataChanged();		}			}}

⌨️ 快捷键说明

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