package com.vci.client.workflow.editor.ui; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.util.ArrayList; import java.util.List; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTabbedPane; import javax.swing.JTextField; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import org.dom4j.Attribute; import org.dom4j.DocumentHelper; import org.dom4j.Element; import com.mxgraph.view.mxGraph; import com.vci.client.ui.locale.LocaleDisplay; import com.vci.client.workflow.delegate.EventConfClientDelegate; import com.vci.client.workflow.editor.FlowConstants; import com.vci.corba.common.VCIError; import com.vci.corba.workflow.data.ProcessTaskInfo; import com.vci.corba.workflow.data.PropertyInfo; /** * This code was edited or generated using CloudGarden's Jigloo * SWT/Swing GUI Builder, which is free for non-commercial * use. If Jigloo is being used commercially (ie, by a corporation, * company or business for any purpose whatever) then you * should purchase a license for each developer using Jigloo. * Please visit www.cloudgarden.com for details. * Use of Jigloo implies acceptance of these licensing terms. * A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR * THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED * LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE. */ public class FlowInfoPanel extends JPanel implements IProcessProperty { private static final long serialVersionUID = 2861859622276207719L; private mxGraph graph; private JTextField nameField; private JTextField keyField; // private JTextField versionField; private EventPanel transitionInitEventPropertyPanel; private EventPanel transitionEndEventPropertyPanel; private ProcessPropertyEditPanel propertyEditPanel; public FlowInfoPanel(mxGraph graph) { this.graph = graph; GridBagLayout gridBagLayout = new GridBagLayout(); gridBagLayout.columnWidths = new int[] {48, 0, 48}; gridBagLayout.rowHeights = new int[]{0, 0, 0, 0}; gridBagLayout.columnWeights = new double[] {0.0, 1.0, 0.0}; gridBagLayout.rowWeights = new double[]{0.0, 0.0, 0.0, Double.MIN_VALUE}; this.setLayout(gridBagLayout); JLabel lblName = new JLabel("name:"); GridBagConstraints gbc_lblName = new GridBagConstraints(); gbc_lblName.insets = new Insets(0, 0, 5, 5); gbc_lblName.anchor = GridBagConstraints.EAST; gbc_lblName.gridx = 0; gbc_lblName.gridy = 0; add(lblName, gbc_lblName); nameField = new JTextField(); GridBagConstraints gbc_textField = new GridBagConstraints(); gbc_textField.insets = new Insets(0, 0, 5, 0); gbc_textField.fill = GridBagConstraints.HORIZONTAL; gbc_textField.gridx = 1; gbc_textField.gridy = 0; add(nameField, gbc_textField); JLabel lblKey = new JLabel("key:"); GridBagConstraints gbc_lblKey = new GridBagConstraints(); gbc_lblKey.anchor = GridBagConstraints.EAST; gbc_lblKey.insets = new Insets(0, 0, 5, 5); gbc_lblKey.gridx = 2; gbc_lblKey.gridy = 0; // this.add(lblKey, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0, GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0, 0, 5, 5), 0, 0)); keyField = new JTextField(); GridBagConstraints gbc_textField_1 = new GridBagConstraints(); gbc_textField_1.insets = new Insets(0, 0, 5, 0); gbc_textField_1.fill = GridBagConstraints.HORIZONTAL; gbc_textField_1.gridx = 3; gbc_textField_1.gridy = 0; // add(keyField, gbc_textField_1); GridBagConstraints gbc_eventPanel = new GridBagConstraints(); gbc_eventPanel.fill = GridBagConstraints.HORIZONTAL; gbc_eventPanel.gridx = 0; gbc_eventPanel.gridy = 1; gbc_eventPanel.weightx = 1; gbc_eventPanel.weighty = 3; gbc_eventPanel.gridwidth = 2; gbc_eventPanel.gridheight =3; this.add(getEventPanel(), new GridBagConstraints(0, 1, 2, 3, 1.0, 3.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); GridBagConstraints gbc_propertyPanel = new GridBagConstraints(); gbc_propertyPanel.fill = GridBagConstraints.BOTH; gbc_propertyPanel.gridx = 2; gbc_propertyPanel.gridy = 1; gbc_propertyPanel.weightx = 1; gbc_propertyPanel.weighty = 3; gbc_propertyPanel.gridwidth = 2; gbc_propertyPanel.gridheight =3; this.add(getPropertyEditPanel(), new GridBagConstraints(2, 2, 2, 3, 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); /* JLabel lblVersion = new JLabel("version:"); GridBagConstraints gbc_lblVersion = new GridBagConstraints(); gbc_lblVersion.anchor = GridBagConstraints.EAST; gbc_lblVersion.insets = new Insets(0, 0, 0, 5); gbc_lblVersion.gridx = 0; gbc_lblVersion.gridy = 2; add(lblVersion, gbc_lblVersion); versionField = new JTextField(); GridBagConstraints gbc_textField_2 = new GridBagConstraints(); gbc_textField_2.fill = GridBagConstraints.HORIZONTAL; gbc_textField_2.gridx = 1; gbc_textField_2.gridy = 2; add(versionField, gbc_textField_2); versionField.setColumns(10);*/ DocumentListener documentListener = new DocumentListener() { public void removeUpdate(DocumentEvent e) { updateFlow(); } public void insertUpdate(DocumentEvent e) { updateFlow(); } public void changedUpdate(DocumentEvent e) { updateFlow(); } }; nameField.getDocument().addDocumentListener(documentListener); } public void createAttribute(Element owner) { Attribute attributeName = DocumentHelper.createAttribute(owner, FlowConstants.XMLNAME, nameField.getText().trim()); owner.add(attributeName); // String key = keyField.getText().trim(); String key = nameField.getText().trim(); if(key.trim().length() > 0){ Attribute attributeKey = DocumentHelper.createAttribute(owner, FlowConstants.XMLKEY, key); owner.add(attributeKey); } Element onElement = owner.addElement(FlowConstants.GLOBAL); PropertyInfo[] propertyInfos = propertyEditPanel.getPropertyInfos(); if(propertyInfos.length > 0){ for (int k = 0; k < propertyInfos.length; k++) { Element fieldElement = onElement.addElement(FlowConstants.EVENT_FIELD); Attribute nameAttribute = DocumentHelper.createAttribute(owner, FlowConstants.XMLNAME, propertyInfos[k].property); fieldElement.add(nameAttribute); Element stringElement = fieldElement.addElement(FlowConstants.EVENT_STRING); Attribute valueAttribute = DocumentHelper.createAttribute(owner, FlowConstants.EVENT_VALUE, propertyInfos[k].value); stringElement.add(valueAttribute); } } //添加属性值到global中 getTrainsitionXml(owner, transitionInitEventPropertyPanel, FlowConstants.XMLSTART, propertyInfos); getTrainsitionXml(owner, transitionEndEventPropertyPanel, FlowConstants.XMLEND, propertyInfos); /* String version = versionField.getText().trim(); if(version.trim().length() > 0){ Attribute attributeVersion = DocumentHelper.createAttribute(owner, FlowConstants.XMLVERSION, version); owner.add(attributeVersion); }*/ } public void setValue(String text) { nameField.setText(text); } public void setKey(String text) { // keyField.setText(text); nameField.setText(text); } public String getNodeType() { return "root"; } protected void updateFlow() { graph.refresh(); } @Override public String toString() { return nameField.getText().trim()+","+keyField.getText(); } private JComponent getEventPanel() { JTabbedPane eventPanel = new JTabbedPane(); transitionInitEventPropertyPanel = new EventPanel("事件", getEventTypes(FlowConstants.XMLSTART),FlowConstants.XMLSTART); transitionEndEventPropertyPanel = new EventPanel("事件", getEventTypes(FlowConstants.XMLEND),FlowConstants.XMLEND); eventPanel.add("初始事件", transitionInitEventPropertyPanel); eventPanel.add("完成事件", transitionEndEventPropertyPanel); return eventPanel; } private JComponent getPropertyEditPanel() { propertyEditPanel = new ProcessPropertyEditPanel(); return propertyEditPanel; } private PropertyObject[] getEventTypes(String eventType) { /*String[] types = EventProperties.getStringProperty("workflow.event.type."+eventType).split(",");*/ //add by caill start 2016.4.8 通过corba连接服务端 String[] types = null; try { types = new EventConfClientDelegate().getStringProperty("workflow.event.type."+eventType).split(","); } catch (VCIError e) { // TODO Auto-generated catch block e.printStackTrace(); } //add by caill end List taskTypes = new ArrayList(); taskTypes.add(new PropertyObject("", "")); for (int i = 0; i < types.length; i++) { /*taskTypes.add(new PropertyObject(types[i], EventProperties.getStringProperty("workflow.event.type." + types[i])));*/ //add by caill start 2016.4.8 通过corba连接服务端 try { taskTypes.add(new PropertyObject(types[i], new EventConfClientDelegate().getStringProperty("workflow.event.type." + types[i]))); } catch (VCIError e) { // TODO Auto-generated catch block e.printStackTrace(); } //add by caill end } return taskTypes.toArray(new PropertyObject[0]); } private String getI18nForEvent(String key){ return LocaleDisplay.getI18nString(key, "RMIPWorkflow", getLocale()); } private void getTrainsitionXml(Element owner, EventPanel eventPanel, String eventType, PropertyInfo[] propertyInfos) { PropertyInfo[] customClassInfo = eventPanel.getCustomInfos(); if (customClassInfo.length > 0) { Element onElement = owner.addElement(FlowConstants.EVENT_ON); Attribute startAttribute = DocumentHelper.createAttribute(owner, FlowConstants.EVENT, eventType); onElement.add(startAttribute); if(customClassInfo.length>0){ String result = ""; for (int i = 0; i < customClassInfo.length; i++) { for(int j =0;j 0){ for (int k = 0; k < propertyInfos.length; k++) { Element fieldElement = listenerElement.addElement(FlowConstants.EVENT_FIELD); Attribute nameAttribute = DocumentHelper.createAttribute(owner, FlowConstants.XMLNAME, propertyInfos[k].property); fieldElement.add(nameAttribute); Element stringElement = fieldElement.addElement(FlowConstants.EVENT_STRING); Attribute valueAttribute = DocumentHelper.createAttribute(owner, FlowConstants.EVENT_VALUE, propertyInfos[k].value); stringElement.add(valueAttribute); } } } } } } } } public void setEventInfo(ProcessTaskInfo processTaskInfo, String eventType) { updateTransitionType(processTaskInfo); if(eventType.equals("start")) { transitionInitEventPropertyPanel.setProcessTaskInfo(processTaskInfo); } else if(eventType.equals("end")) { transitionEndEventPropertyPanel.setProcessTaskInfo(processTaskInfo); } } public void setCustomClassInfo( String eventType,PropertyInfo[] customInfos){ int length = getEventTypes(eventType).length; PropertyInfo[] res = new PropertyInfo[customInfos.length]; for(int j = 0;j data = new ArrayList(); for(int i =0;i