package com.vci.client.omd.btm.toOutside; import java.awt.Dimension; import java.util.ArrayList; import java.util.List; import javax.swing.JCheckBox; import javax.swing.table.JTableHeader; import javax.swing.table.TableColumn; import org.jdesktop.swingx.JXTable; import org.jdesktop.swingx.decorator.HighlighterFactory; import com.vci.corba.omd.btm.BtmItem; import com.vci.client.omd.attribpool.ui.BtmSelectDialog; import com.vci.client.omd.btm.ui.BtmClient; import com.vci.client.ui.table.CheckBoxEditor; import com.vci.client.ui.table.CheckBoxRenderer; import com.vci.corba.common.VCIError; public class BtmTableForOut extends JXTable{ /** * */ private static final long serialVersionUID = -483194770273076948L; private BtmItem[] btmArray = null; private final int TABLE_HEADER_HEIGHT = 25; private final int ROW_HEIGHT = 30; private BtmTableModelForOut model = new BtmTableModelForOut(); private List btNameList; //add by caill 为BtmTableForOut构造方法增加一个textValue参数,用来传递查询框中的内容 public BtmTableForOut(List btNameList, String filter){ this.btNameList = btNameList; this.setHorizontalScrollEnabled(true); this.setAutoscrolls(true); this.setSortable(false); this.setHighlighters(HighlighterFactory.createAlternateStriping()); this.setRowHeight(ROW_HEIGHT); //设置表头高度 JTableHeader tableHeader = this.getTableHeader(); Dimension size = tableHeader.getPreferredSize(); size.height = TABLE_HEADER_HEIGHT; tableHeader.setPreferredSize(size); this.setModel(model); TableColumn column = this.getColumn(0); column.setCellEditor(new CheckBoxEditor(new JCheckBox())); column.setCellRenderer(new CheckBoxRenderer()); //initBtmTable(""); //add by caill 为initBtmTable方法添加textValue参数, initBtmTable(filter); } public void initBtmTable(String filter){ BtmItem btmItem; try { this.removeAll(); btmArray = BtmClient.getService().getAllBtmItem(filter); BtmItem[] bts = getRemainedBts(btmArray); model.setRowCount(bts.length); //重新设置table的Cell的可编辑性 model.setInitFlag(false); for(int i = 0; i < bts.length; i++){ btmItem = bts[i]; this.setValueAt(new JCheckBox(), i, 0); this.setValueAt(btmItem.name, i, 1); this.setValueAt(btmItem.label, i, 2); this.setValueAt(btmItem.fName, i, 3); this.setValueAt(btmItem.revRuleName, i, 4); this.setValueAt(btmItem.lifeCycle, i, 5); } //重新设置table的Cell的可编辑性 model.setInitFlag(true); this.updateUI(); } catch (VCIError e) { e.printStackTrace(); } } /** * 获取剩余(btNameList以外的)bts * @param btmArray * @return */ private BtmItem[] getRemainedBts(BtmItem[] btmArray){ List list = new ArrayList(); if(btmArray == null || btmArray.length == 0){ return list.toArray(new BtmItem[0]); } if(btNameList == null || btNameList.size() == 0){ return btmArray; } for(BtmItem bt : btmArray){ if(!btNameList.contains(bt.name)){ list.add(bt); } } return list.toArray(new BtmItem[0]); } }