package com.vci.client.oq.ui; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Toolkit; import java.util.ArrayList; import java.util.List; import javax.swing.JDialog; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.table.JTableHeader; import org.jdesktop.swingx.JXTable; import org.jdesktop.swingx.decorator.HighlighterFactory; import com.vci.corba.omd.data.AttributeValue; import com.vci.corba.omd.data.BusinessObject; import com.vci.corba.omd.data.LinkObject; public class QueryResultDialog extends JDialog{ /** * */ private static final long serialVersionUID = 9126978154035466868L; private JXTable qrTable ; private QResultTableModel tableModel; private JPanel northPanel; private JPanel centerPanel; private JPanel southPanel; private JScrollPane scrollPane; private BusinessObject[] boResult; private boolean boFlag = false; private LinkObject[] loResult; private boolean loFlag = false; private List clauseList; private final int TABLE_HEADER_HEIGHT = 25; private final int ROW_HEIGHT = 30; public QueryResultDialog(BusinessObject[] boResult, List clauseList){ this.boResult = boResult; this.boFlag = true; if(clauseList.contains("*")){ clauseList = new ArrayList(); clauseList.add("OID"); clauseList.add("REVISIONOID"); clauseList.add("NAMEOID"); clauseList.add("BTMNAME"); } this.clauseList = clauseList; initUI(); initTable(); } public QueryResultDialog(LinkObject[] ltResult, List clauseList){ this.loResult = ltResult; this.loFlag = true; if(clauseList.contains("*")){ clauseList = new ArrayList(); clauseList.add("OID"); clauseList.add("CREATOR"); clauseList.add("CREATETIME"); } this.clauseList = clauseList; initUI(); initTable(); } private void initUI(){ this.setTitle("查询结果"); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); this.setSize(screenSize.width/2, screenSize.height/2); this.setModal(true); this.setLocationRelativeTo(null); this.setResizable(false); this.setLayout(new BorderLayout(0, 0)); northPanel = new JPanel(); centerPanel = new JPanel(); southPanel = new JPanel(); this.add(northPanel, BorderLayout.NORTH); this.add(centerPanel, BorderLayout.CENTER); this.add(southPanel, BorderLayout.SOUTH); centerPanel.setLayout(new BorderLayout(5, 5)); scrollPane = new JScrollPane(); centerPanel.add(scrollPane, BorderLayout.CENTER); tableModel = new QResultTableModel(); qrTable = new JXTable(tableModel); qrTable.setRowHeight(ROW_HEIGHT); qrTable.setHorizontalScrollEnabled(true); qrTable.setHighlighters(HighlighterFactory.createAlternateStriping()); //排序后,引起其他页面的数据不显示 qrTable.setSortable(true); //设置表头高度 JTableHeader tableHeader = qrTable.getTableHeader(); Dimension size = tableHeader.getPreferredSize(); size.height = TABLE_HEADER_HEIGHT; tableHeader.setPreferredSize(size); scrollPane.setViewportView(qrTable); } private void initTable(){ qrTable.removeAll(); tableModel.setColumnCount(clauseList.size()); tableModel.setColumnIdentifiers(clauseList.toArray(new String[0])); if(boFlag){ tableModel.setRowCount(boResult.length); qrTable.setEditable(true); for(int i = 0; i < boResult.length; i++){ BusinessObject bo = boResult[i]; AttributeValue[] attList = bo.hisAttrValList; for(int j = 0; j < clauseList.size(); j++){ qrTable.setValueAt(attList[j].attrVal, i, j); } } qrTable.setEditable(false); }else if(loFlag){ tableModel.setRowCount(loResult.length); qrTable.setEditable(true); for(int i = 0; i < loResult.length; i++){ LinkObject lo = loResult[i]; AttributeValue[] attList = lo.hisAttrValList; for(int j = 0; j < clauseList.size(); j++){ qrTable.setValueAt(attList[j].attrVal, i, j); } } qrTable.setEditable(false); } qrTable.updateUI(); } }