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> taskeventMap = eventPanel.getTaskeventMap(); ArrayList 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> 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 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 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 PropertyObject[] getEventTypes() { // String[] types = getI18nForEvent("workflow.event.type").split(","); // List taskTypes = new ArrayList(); // 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 result = new ArrayList(); CustomClassTableModel model = (CustomClassTableModel)customTable.getModel(); List 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 data){ CustomClassTableModel model = (CustomClassTableModel)customTable.getModel(); model.setData(data); setInitTaskEventTableValue(); if(customTable.getRowCount()>0){ customTable.setRowSelectionInterval(0,0) ; } } /** * 设置当模板有值后,任务事件中默认显示第一行的数据 */ private void setInitTaskEventTableValue() { Map> taskeventMap = eventPanel.getTaskeventMap(); String valueAt = ""; if(customTable.getRowCount()>0){ valueAt = (String) customTable.getValueAt(0, 0); } PropertyObject[] eventTypes = getEventTypes(eventPanel.getEventType()); String value = ""; ArrayList arrayList = null; if(eventTypes!=null){ for(int i=0;i