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.client.workflow.editor.FlowNode; import com.vci.corba.common.VCIError; import com.vci.corba.workflow.data.PropertyInfo; public class StartEndPanel extends JPanel implements IProcessProperty { private static final long serialVersionUID = 1724948299848339422L; private JTextField nameField; private mxGraph graph; private FlowNode node; private EventPanel transitionInitEventPropertyPanel; private EventPanel transitionEndEventPropertyPanel; public static PropertyInfo[] transmTrainsitionInfo; public static String transTrainsitionEnevtType_Start; public static String transTrainsitionEnevtType_End; public StartEndPanel(mxGraph graph, FlowNode node) { this.graph = graph; this.node = node; GridBagLayout gridBagLayout = new GridBagLayout(); gridBagLayout.columnWidths = new int[]{0, 0, 0}; gridBagLayout.rowHeights = new int[]{0, 0}; gridBagLayout.columnWeights = new double[]{0.0, 1.0, Double.MIN_VALUE}; gridBagLayout.rowWeights = new double[]{0.0, Double.MIN_VALUE}; setLayout(gridBagLayout); JLabel lblNewLabel = new JLabel("名称:"); GridBagConstraints gbc_lblNewLabel = new GridBagConstraints(); gbc_lblNewLabel.insets = new Insets(0, 0, 0, 5); gbc_lblNewLabel.anchor = GridBagConstraints.EAST; gbc_lblNewLabel.gridx = 0; gbc_lblNewLabel.gridy = 0; add(lblNewLabel, gbc_lblNewLabel); nameField = new JTextField(); nameField.setText(node.getName()); GridBagConstraints gbc_textField = new GridBagConstraints(); gbc_textField.fill = GridBagConstraints.HORIZONTAL; gbc_textField.gridx = 1; gbc_textField.gridy = 0; add(nameField, gbc_textField); // //2013-4-27 添加自定义路由事件 // if(node.getName().equals("") // ||node.getName().equals("斜线") // ||node.getName().equals("水平折线") // ||node.getName().equals("垂直折线")){ // GridBagConstraints gbc_eventPanel = new GridBagConstraints(); // gbc_eventPanel.fill = GridBagConstraints.HORIZONTAL; // gbc_eventPanel.gridx = 0; // gbc_eventPanel.gridy = 1; // gbc_eventPanel.weightx = 2; // gbc_eventPanel.gridwidth = 2; // add(getEventPanel(), gbc_eventPanel); // } 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); } protected void updateFlow() { graph.refresh(); } @Override public String toString() { return nameField.getText().trim(); } public String getNodeType() { return node.getType(); } public void createAttribute(Element owner) { Attribute attributeName = DocumentHelper.createAttribute(owner, FlowConstants.XMLNAME, nameField.getText()); owner.add(attributeName); } public void setValue(String text) { nameField.setText(text); } /** * 2013-4-27 添加自定义路由事件 * @return */ 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 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()); } /** * 保存路由设置的值 * @param owner * @param eventPanel * @param eventType */ private void getTrainsitionXml(Element owner, EventPanel eventPanel, String eventType) { PropertyInfo[] customClassInfo = eventPanel.getCustomInfos(); if (customClassInfo.length > 0) { if(FlowConstants.XMLSTART.equals(eventType)){ transTrainsitionEnevtType_Start = eventType; } if(FlowConstants.XMLEND.equals(eventType)){ transTrainsitionEnevtType_End = eventType; } transmTrainsitionInfo = customClassInfo; } } }