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<PropertyObject> taskTypes = new ArrayList<PropertyObject>();
|
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;
|
}
|
}
|
}
|