package com.vci.client.portal.NewNewUI.buttonmng; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Set; import javax.swing.Box; import javax.swing.JPanel; import javax.swing.JTable; import com.vci.client.ui.swing.VCISwingUtil; import com.vci.client.ui.swing.components.VCIJButton; import com.vci.client.ui.swing.components.table.AbstractVCIJTableDataProvider; import com.vci.client.ui.swing.components.table.VCIJTableDataProvider; import com.vci.client.ui.swing.components.table.VCIJTableNode; import com.vci.client.ui.swing.components.table.VCIJTablePanel; import com.vci.corba.portal.data.PLCommandParameter; public class ButtonParamTableCompt extends JPanel{ /** * */ private static final long serialVersionUID = -711576258892869037L; private VCIJTableDataProvider dataProvider = null; private VCIJTablePanel tablePanel = null; private List buttonParams = null; private JPanel btnPanel = null; public ButtonParamTableCompt(List buttonParams){ this.buttonParams = buttonParams; initCenterTablePanel(); } /** * 初始化所有控件 */ private void initCenterTablePanel(){ initDataProvider(); initTable(); initButton(); initTopPanel(); } /** * 初始化顶层面板 */ private void initTopPanel() { setLayout(new BorderLayout()); add(btnPanel, BorderLayout.NORTH); add(tablePanel, BorderLayout.CENTER); } /** * 初始化按钮 */ private void initButton() { btnPanel = new JPanel(); btnPanel.setVisible(false); VCIJButton btnAdd = VCISwingUtil.createVCIJButton("add", "", "add", "add.gif", new ActionListener() { @Override public void actionPerformed(ActionEvent e) { tablePanel.addTableData(new PLCommandParameter[]{new PLCommandParameter()}); } }); VCIJButton btnDel = VCISwingUtil.createVCIJButton("remove", "", "remve", "remove.gif", new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int[] sels = tablePanel.getSelectedRowIndexs(); Arrays.sort(sels); for(int i = sels.length - 1; i >= 0; i--){ int rowIndex = sels[i]; tablePanel.getTableModel().getList().remove(rowIndex); tablePanel.getTableModel().fireTableDataChanged(); } } }); Box box = Box.createHorizontalBox(); box.add(btnAdd); box.add(btnDel); btnPanel.add(box); } /** * 初始化数据 */ private void initDataProvider(){ dataProvider = new AbstractVCIJTableDataProvider() { private String[] header = new String[]{"名称", "值"}; @Override public String[] getSpecialColumns() { return header; } @Override public int getTotal() { return buttonParams.size(); } @Override public VCIJTableNode getNewRowNode(PLCommandParameter param) { VCIJTableNode dataNode = new VCIJTableNode(param); dataNode.setPropertyValue(header[0], param.plKey); dataNode.setPropertyValue(header[1], param.plValue); return dataNode; } @Override public PLCommandParameter[] getDatas(int page, int count) { return buttonParams.toArray(new PLCommandParameter[0]); } }; } /** * 初始化Table */ private void initTable(){ tablePanel = new VCIJTablePanel(dataProvider); tablePanel.setShowRowNumber(true); HashMap columnWidthMaps = new HashMap(); columnWidthMaps.put(1, 50); columnWidthMaps.put(2, 150); columnWidthMaps.put(3, 260); tablePanel.setColumnWidthMaps(columnWidthMaps); tablePanel.setShowExport(false); tablePanel.setShowPaging(false); tablePanel.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); tablePanel.setColumnDefaultWidth(new Integer(150)); tablePanel.setCellEditable(false); tablePanel.setEdiableColumnList(Arrays.asList(new Integer[]{2,3})); tablePanel.buildTablePanel(); tablePanel.refreshTableData(); tablePanel.setResizingAllowed(true); } /** * 获取最外层Panel * @return */ public VCIJTablePanel getTablePanel(){ return this.tablePanel; } /** * 获取列表中所有参数 * @return */ public LinkedHashMap getButtonParams(){ LinkedHashMap map = new LinkedHashMap(); int rowCount = tablePanel.getTableModel().getRowCount(); for(int i = 0; i < rowCount; i++){ String attrName = (String)tablePanel.getTableModel().getValueAt(i, 2); String attrValue = (String)tablePanel.getTableModel().getValueAt(i, 3); map.put(attrName, attrValue); } return map; } /** * 验证按钮参数 * @return */ public String geCheckRes(){ Set repeat = new HashSet(); int rowCount = tablePanel.getTableModel().getRowCount(); for(int i = 0; i < rowCount; i++){ String attrName = (String)tablePanel.getTableModel().getValueAt(i, 2); if(attrName == null || attrName.trim().length() == 0){ return "参数名称不允许为空"; } if(repeat.contains(attrName)){ return "您输入的参数[" + attrName + "]有重复!"; } repeat.add(attrName); } return ""; } /** * 设置列表可编辑状态 * @param editable */ public void setEditable(boolean editable){ tablePanel.setCellEditable(editable); } /** * 设置是否显示添加删除按钮 * @param visible */ public void setShowButton(boolean visible){ btnPanel.setVisible(visible); } public void setButtonParams(List buttonParams) { this.buttonParams = buttonParams; } }