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<PLCommandParameter> dataProvider = null;
|
private VCIJTablePanel<PLCommandParameter> tablePanel = null;
|
private List<PLCommandParameter> buttonParams = null;
|
private JPanel btnPanel = null;
|
|
public ButtonParamTableCompt(List<PLCommandParameter> 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<PLCommandParameter>() {
|
private String[] header = new String[]{"名称", "值"};
|
@Override
|
public String[] getSpecialColumns() {
|
return header;
|
}
|
@Override
|
public int getTotal() {
|
return buttonParams.size();
|
}
|
@Override
|
public VCIJTableNode<PLCommandParameter> getNewRowNode(PLCommandParameter param) {
|
VCIJTableNode<PLCommandParameter> dataNode = new VCIJTableNode<PLCommandParameter>(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<PLCommandParameter>(dataProvider);
|
tablePanel.setShowRowNumber(true);
|
HashMap<Integer, Integer> columnWidthMaps = new HashMap<Integer, Integer>();
|
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<PLCommandParameter> getTablePanel(){
|
return this.tablePanel;
|
}
|
/**
|
* 获取列表中所有参数
|
* @return
|
*/
|
public LinkedHashMap<String, String> getButtonParams(){
|
LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();
|
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<String> repeat = new HashSet<String>();
|
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<PLCommandParameter> buttonParams) {
|
this.buttonParams = buttonParams;
|
}
|
|
}
|