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.util.ArrayList; import java.util.List; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import com.vci.client.ui.locale.LocaleDisplay; import com.vci.client.workflow.commom.ClientHelper; import com.vci.client.workflow.delegate.EventConfClientDelegate; import com.vci.corba.common.VCIError; import com.vci.corba.workflow.data.PropertyInfo; public class TypePropertyEditPanel extends JPanel { private static final long serialVersionUID = 1300418480939892949L; private JTable propertyTable; private JButton addBtn; private JButton deleteBtn; public TypePropertyEditPanel() { 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); } }); } 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(getI18nString("add")); BtnPanel.add(addBtn); deleteBtn = new JButton(getI18nString("delete")); 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(""));//在下拉列表中选择phase // propertyTable.getColumnModel().getColumn(0).setCellEditor(new DblclickCellEditor(c,propertyTable)); // JComboBox cType = new JComboBox();//在下拉列表中选择类型 // cType.addItem(""); // cType.addItem("String"); // cType.addItem("Map"); // propertyTable.getColumnModel().getColumn(1).setCellEditor(new DblclickCellEditor(cType,propertyTable)); } return propertyTable; } /** * 参数列表 * @param param * @return */ private PropertyObject[] getParamTypes(String param) { /*String[] types = EventProperties.getStringProperty("workflow.event.type").split(",");*/ //add by caill start 2016.4.8 通过corba连接服务端 String[] types = null; try { types = new EventConfClientDelegate().getStringProperty("workflow.event.type").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]+".field")));*/ //add by caill start 2016.4.8 通过corba连接服务端 try { taskTypes.add(new PropertyObject(types[i], new EventConfClientDelegate().getStringProperty("workflow.event.type." + types[i]+".field"))); } 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()); } 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(); } } }