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.FocusEvent; import java.awt.event.FocusListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.ArrayList; import java.util.HashMap; 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 PropertyEditPanel extends JPanel { private static final long serialVersionUID = 1300418480939892949L; private JTable propertyTable; private JButton addBtn; private JButton deleteBtn; private String paramKey; private TaskCustomClassEditPanel customClassEditpanel; private TaskEventPanel eventPanel; /** * 记录上一次点击的事件名称 */ private String oldValue =""; /** * 保存事件和参数的关系 */ private Map> propertyMap = new HashMap>(); public PropertyEditPanel(String paramKey,TaskCustomClassEditPanel customClassEditpanel,TaskEventPanel eventPanel) { this.paramKey = paramKey; this.customClassEditpanel = customClassEditpanel; this.eventPanel = eventPanel; initUI(); addListener(); } private void addListener() { addBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { PropertyTableModel model = (PropertyTableModel)propertyTable.getModel(); model.addRow(); } }); deleteBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int[] selectedRows = propertyTable.getSelectedRows(); PropertyTableModel model = (PropertyTableModel)propertyTable.getModel(); model.deleteRow(selectedRows); if(customClassEditpanel ==null){ return; } JTable customTable = customClassEditpanel.getCustomTable(); int selectedRow = customTable.getSelectedRow(); String valueAt = (String) customTable.getValueAt(selectedRow, 0); PropertyObject[] eventTypes = getEventTypes(eventPanel.getEventType()); String value = ""; for(int i=0;i result = new ArrayList(); ArrayList data = (ArrayList) model.getData(); for (PropertyInfo propertyInfo : data) { if(propertyInfo.property.trim().length() > 0 && propertyInfo.value.trim().length() > 0){ result.add(propertyInfo); } } eventPanel.getTaskeventMap().put(value,result); } }); } private void initUI() { setLayout(new BorderLayout()); add(new JScrollPane(getPropertyTable()), 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 getPropertyTable() { if(propertyTable == null) { propertyTable = new JTable(new PropertyTableModel()); propertyTable.setRowHeight(20); Dimension size = propertyTable.getTableHeader().getPreferredSize(); size.height = 22; propertyTable.getTableHeader().setPreferredSize(size); JComboBox c = new JComboBox(getParamTypes(paramKey));//在下拉列表中选择phase propertyTable.getColumnModel().getColumn(0).setCellEditor(new DblclickCellEditor(c,propertyTable)); propertyTable.getColumnModel().getColumn(1).addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent arg0) { if(customClassEditpanel ==null){ return; } JTable customTable = customClassEditpanel.getCustomTable(); int selectedRow = customTable.getSelectedRow(); int rowCount = customTable.getRowCount(); // for(int k=0;k taskeventPropertylist = new ArrayList(); if(length>0){ for(int i =0;i taskTypes = new ArrayList(); taskTypes.add(""); for (int i = 0; i < types.length; i++) { // taskTypes.add(new PropertyObject(types[i], // getI18nForEvent("workflow.event.type." + types[i]+".field"))); taskTypes.add(types[i]); } if (param != null && !"".equals(param)) { System.out.println("+++++流程事件下选中事件为:" + param); for (int i = 0; i < taskTypes.size(); i++) { System.out.println("=====流程事件下选中事件" + param + "的第" + i + "个参数名称为" +taskTypes.get(i)); } } return taskTypes.toArray(new String[0]); } private String getI18nForEvent(String key) { return LocaleDisplay.getI18nString(key, "RMIPWorkflow", getLocale()); } public PropertyInfo[] getPropertyInfos(){ List result = new ArrayList(); PropertyTableModel model = (PropertyTableModel)propertyTable.getModel(); List data = model.getData(); if(data != null && data.size() > 0){ for (PropertyInfo propertyInfo : data) { if(propertyInfo.property.trim().length() > 0 && propertyInfo.value.trim().length() > 0){ result.add(propertyInfo); } } } return result.toArray(new PropertyInfo[0]); } public void setData(List data){ PropertyTableModel model = (PropertyTableModel)propertyTable.getModel(); model.setData(data); } private String getI18nString(String spCode) { return ClientHelper.getI18nStringForWorkflow(this.getClass().getName() + "." + spCode, this.getLocale()); } /** * 直接取得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 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]); } }