package com.vci.client.workflow.editor.ui;
|
|
import java.awt.BorderLayout;
|
import java.awt.Dimension;
|
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionListener;
|
import java.awt.event.MouseAdapter;
|
import java.awt.event.MouseEvent;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
|
import javax.swing.BoxLayout;
|
import javax.swing.JButton;
|
import javax.swing.JComboBox;
|
import javax.swing.JPanel;
|
import javax.swing.JScrollPane;
|
import javax.swing.JTable;
|
|
import com.vci.client.LogonApplication;
|
import com.vci.client.ui.locale.LocaleDisplay;
|
import com.vci.client.ui.swing.VCIOptionPane;
|
import com.vci.client.workflow.commom.ClientHelper;
|
import com.vci.client.workflow.delegate.EventConfClientDelegate;
|
import com.vci.client.workflow.editor.DblclickCellEditor;
|
import com.vci.corba.common.VCIError;
|
import com.vci.corba.workflow.data.PropertyInfo;
|
|
public class TaskCustomClassEditPanel extends JPanel {
|
private static final long serialVersionUID = 1300418480939892949L;
|
|
private JTable customTable;
|
|
private JButton addBtn;
|
private JButton deleteBtn;
|
|
private TaskEventPanel eventPanel;
|
private PropertyEditPanel propertyEditPanel;
|
private JPanel panel;
|
|
private String paramKey = "";
|
String clickValue = "";
|
public TaskCustomClassEditPanel(TaskEventPanel eventPanel,PropertyEditPanel propertyEditPanel,JPanel panel) {
|
this.eventPanel = eventPanel;
|
this.propertyEditPanel = propertyEditPanel;
|
this.panel = panel;
|
initUI();
|
addListener();
|
}
|
|
|
private void addListener() {
|
addBtn.addActionListener(new ActionListener() {
|
public void actionPerformed(ActionEvent e) {
|
CustomClassTableModel model = (CustomClassTableModel)customTable.getModel();
|
model.addRow();
|
}
|
});
|
|
deleteBtn.addActionListener(new ActionListener() {
|
public void actionPerformed(ActionEvent e) {
|
int[] selectedRows = customTable.getSelectedRows();
|
CustomClassTableModel model = (CustomClassTableModel)customTable.getModel();
|
for(int k=0;k<selectedRows.length;k++){
|
String valueAt = (String) customTable.getValueAt(selectedRows[k], 0);
|
PropertyObject[] eventTypes = getEventTypes(eventPanel.getEventType());
|
String value = "";
|
for(int i=0;i<eventTypes.length;i++){
|
if(valueAt.equals(eventTypes[i].getValue())){
|
/*value = EventProperties.getStringProperty("workflow.event.type." + eventTypes[i].getProperty()+".class");*/
|
//add by caill start 2016.4.8 通过corba连接服务端
|
try {
|
value = new EventConfClientDelegate().getStringProperty("workflow.event.type." + eventTypes[i].getProperty()+".class");
|
} catch (VCIError en) {
|
// TODO Auto-generated catch block
|
en.printStackTrace();
|
}
|
//add by caill endparamKey = eventTypes[i].getProperty();
|
}
|
}
|
Map<String, ArrayList<PropertyInfo>> taskeventMap = eventPanel.getTaskeventMap();
|
ArrayList<PropertyInfo> arrayList = taskeventMap.get(value);
|
if(arrayList != null&&arrayList.size()>0){
|
VCIOptionPane.showMessage(LogonApplication.frame, "请先删除关联的参数属性!");
|
return;
|
|
}
|
}
|
model.deleteRow(selectedRows);
|
}
|
});
|
}
|
/**
|
* 直接取得table中cell的值
|
* @param table
|
*/
|
public void cursorLeave(JTable table) {
|
try {
|
if (table == null) {
|
return;
|
}
|
if (table.isEditing()) {
|
table.getCellEditor(table.getEditingRow(), table.getEditingColumn()).stopCellEditing();
|
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
private void initUI() {
|
setLayout(new BorderLayout());
|
add(new JScrollPane(getCustomProperty()), BorderLayout.CENTER);
|
|
JPanel BtnPanel = new JPanel();
|
add(BtnPanel, BorderLayout.EAST);
|
BtnPanel.setLayout(new BoxLayout(BtnPanel, BoxLayout.Y_AXIS));
|
|
addBtn = new JButton("添加");
|
BtnPanel.add(addBtn);
|
|
deleteBtn = new JButton("删除");
|
BtnPanel.add(deleteBtn);
|
|
}
|
|
private JTable getCustomProperty() {
|
if(customTable == null) {
|
customTable = new JTable(new CustomClassTableModel());
|
customTable.setRowHeight(20);
|
|
Dimension size = customTable.getTableHeader().getPreferredSize();
|
size.height = 22;
|
customTable.getTableHeader().setPreferredSize(size);
|
// customTable.setPreferredScrollableViewportSize(new Dimension(300, 60));
|
final JComboBox c = new JComboBox(getEventTypes(eventPanel.getEventType()));
|
// customTable.getColumnModel().getColumn(0).setCellEditor(new DefaultCellEditor(c));
|
c.addActionListener(new ActionListener() {
|
|
public void actionPerformed(ActionEvent e) {
|
PropertyObject selectedItem = (PropertyObject) c.getSelectedItem();
|
paramKey = selectedItem.getProperty();
|
setEventAndParam();
|
}
|
});
|
customTable.getColumnModel().getColumn(0).setCellEditor(new DblclickCellEditor(c,customTable));
|
|
customTable.addMouseListener(new MouseAdapter() {
|
@Override
|
public void mouseClicked(MouseEvent e) {
|
super.mouseClicked(e);
|
setEventAndParam();
|
}
|
});
|
|
}
|
return customTable;
|
}
|
/**
|
* 设置事件和参数
|
*/
|
private void setEventAndParam() {
|
Map<String, ArrayList<PropertyInfo>> taskeventMap = eventPanel.getTaskeventMap();
|
int selectedRow = customTable.getSelectedRow();
|
String valueAt = (String) customTable.getValueAt(selectedRow, 0);
|
PropertyObject[] eventTypes = getEventTypes(eventPanel.getEventType());
|
String value = "";
|
for(int i=0;i<eventTypes.length;i++){
|
if(valueAt.equals(eventTypes[i].getValue())){
|
/*value = EventProperties.getStringProperty("workflow.event.type." + eventTypes[i].getProperty()+".class");*/
|
//add by caill start 2016.4.8 通过corba连接服务端
|
System.out.println("---获取时间的配置值--eventTypes.property:" + eventTypes[i].getProperty());
|
System.out.println("---获取时间的配置值--eventTypes.value:" + eventTypes[i].getValue());
|
try {
|
value = new EventConfClientDelegate().getStringProperty("workflow.event.type." + eventTypes[i].getProperty()+".class");
|
} catch (VCIError e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
//add by caill end
|
paramKey = eventTypes[i].getProperty();
|
}
|
}
|
ArrayList<PropertyInfo> arrayList = taskeventMap.get(value);
|
propertyEditPanel = new PropertyEditPanel(paramKey,this,eventPanel);
|
if(arrayList!=null){
|
propertyEditPanel.setData(arrayList);
|
}
|
|
panel.removeAll();
|
panel.add(propertyEditPanel);
|
panel.updateUI();
|
eventPanel.getResultMap().put(eventPanel.getEventType(), taskeventMap);
|
}
|
|
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 PropertyObject[] getEventTypes() {
|
// String[] types = getI18nForEvent("workflow.event.type").split(",");
|
// List<PropertyObject> taskTypes = new ArrayList<PropertyObject>();
|
// taskTypes.add(new PropertyObject("", ""));
|
// for (int i = 0; i < types.length; i++) {
|
// taskTypes.add(new PropertyObject(types[i],
|
// getI18nForEvent("workflow.event.type." + types[i])));
|
// }
|
// return taskTypes.toArray(new PropertyObject[0]);
|
// }
|
private String getI18nForEvent(String key) {
|
return LocaleDisplay.getI18nString(key, "RMIPWorkflow", getLocale());
|
}
|
public PropertyInfo[] getCustomUserInfos(){
|
List<PropertyInfo> result = new ArrayList<PropertyInfo>();
|
CustomClassTableModel model = (CustomClassTableModel)customTable.getModel();
|
List<PropertyInfo> data = model.getData();
|
if(data != null && data.size() > 0){
|
for (PropertyInfo customInfo : data) {
|
if(customInfo!=null){
|
if(customInfo.property.trim().length() > 0
|
// && customInfo.value.trim().length() > 0
|
){
|
result.add(customInfo);
|
}
|
}
|
}
|
}
|
return result.toArray(new PropertyInfo[0]);
|
}
|
|
public void setData(List<PropertyInfo> data){
|
CustomClassTableModel model = (CustomClassTableModel)customTable.getModel();
|
model.setData(data);
|
|
setInitTaskEventTableValue();
|
if(customTable.getRowCount()>0){
|
customTable.setRowSelectionInterval(0,0) ;
|
}
|
}
|
|
|
/**
|
* 设置当模板有值后,任务事件中默认显示第一行的数据
|
*/
|
private void setInitTaskEventTableValue() {
|
Map<String, ArrayList<PropertyInfo>> taskeventMap = eventPanel.getTaskeventMap();
|
String valueAt = "";
|
if(customTable.getRowCount()>0){
|
valueAt = (String) customTable.getValueAt(0, 0);
|
}
|
PropertyObject[] eventTypes = getEventTypes(eventPanel.getEventType());
|
String value = "";
|
ArrayList<PropertyInfo> arrayList = null;
|
if(eventTypes!=null){
|
for(int i=0;i<eventTypes.length;i++){
|
if(valueAt!=null&&!"".equals(valueAt)){
|
if(valueAt.equals(eventTypes[i].getValue())){
|
/*value = EventProperties.getStringProperty("workflow.event.type." + eventTypes[i].getProperty()+".class");*/
|
//add by caill start 2016.4.8 通过corba连接服务端
|
try {
|
value = new EventConfClientDelegate().getStringProperty("workflow.event.type." + eventTypes[i].getProperty()+".class");
|
} catch (VCIError e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
//add by caill end
|
paramKey = eventTypes[i].getProperty();
|
}
|
}
|
}
|
if(taskeventMap!=null){
|
arrayList = taskeventMap.get(value);
|
}
|
}
|
if(arrayList!=null){
|
propertyEditPanel.setData(arrayList);
|
}
|
// else{
|
// propertyEditPanel = new PropertyEditPanel(paramKey);
|
// }
|
customTable.setRowSelectionAllowed(true);
|
panel.removeAll();
|
panel.add(propertyEditPanel);
|
panel.updateUI();
|
eventPanel.getResultMap().put(eventPanel.getEventType(), taskeventMap);
|
}
|
|
private String getI18nString(String spCode) {
|
return ClientHelper.getI18nStringForWorkflow(this.getClass().getName() + "." + spCode, this.getLocale());
|
}
|
public JTable getCustomTable() {
|
return customTable;
|
}
|
|
|
public void setCustomTable(JTable customTable) {
|
this.customTable = customTable;
|
}
|
|
|
public PropertyEditPanel getPropertyEditPanel() {
|
return propertyEditPanel;
|
}
|
|
|
public void setPropertyEditPanel(PropertyEditPanel propertyEditPanel) {
|
this.propertyEditPanel = propertyEditPanel;
|
}
|
|
}
|