?? workfloweditor.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 + -