package com.vci.client.auth2.view;
|
|
import java.awt.BorderLayout;
|
import java.awt.Component;
|
import java.awt.Dimension;
|
import java.awt.Toolkit;
|
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseListener;
|
import java.util.List;
|
|
import javax.swing.JDialog;
|
import javax.swing.JOptionPane;
|
import javax.swing.JPanel;
|
import javax.swing.JScrollPane;
|
import javax.swing.JTable;
|
import javax.swing.table.DefaultTableModel;
|
import javax.swing.table.JTableHeader;
|
import javax.swing.table.TableCellRenderer;
|
import javax.swing.table.TableColumn;
|
import javax.swing.table.TableColumnModel;
|
|
import org.jdesktop.swingx.JXTable;
|
import org.jdesktop.swingx.decorator.HighlighterFactory;
|
|
import com.vci.client.omd.provider.BtmProvider;
|
import com.vci.client.oq.ui.QResultTableModel;
|
import com.vci.corba.omd.data.AttributeValue;
|
import com.vci.corba.omd.data.BusinessObject;
|
import com.vci.corba.omd.data.LinkObject;
|
|
public class QueryDialog extends JDialog {
|
|
/**
|
*
|
*/
|
private static final long serialVersionUID = 9126978154035466868L;
|
|
private JXTable qrTable;
|
private DefaultTableModel 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<String> clauseList;
|
private final int TABLE_HEADER_HEIGHT = 25;
|
private final int ROW_HEIGHT = 30;
|
|
public QueryDialog(BusinessObject[] boResult, List<String> clauseList) {
|
this.boResult = boResult;
|
this.boFlag = true;
|
if (boResult == null || boResult.length == 0) {
|
JOptionPane.showMessageDialog(
|
com.vci.client.LogonApplication.frame, "没有业务对象",
|
"提示", JOptionPane.INFORMATION_MESSAGE);
|
return;
|
}
|
String btmName = boResult[0].btName;
|
// List columns =
|
// if (clauseList.contains("*")) {
|
// clauseList = new ArrayList<String>();
|
// clauseList.add("OID");
|
// clauseList.add("REVISIONOID");
|
// clauseList.add("NAMEOID");
|
// clauseList.add("BTMNAME");
|
// clauseList.add("Creator");
|
// }
|
this.clauseList = BtmProvider.getInstance().getAllAbNames(btmName);
|
;
|
initUI();
|
initTable();
|
initListener();
|
}
|
|
public QueryDialog(LinkObject[] ltResult, List<String> clauseList) {
|
this.loResult = ltResult;
|
this.loFlag = true;
|
this.clauseList = clauseList;
|
initUI();
|
initTable();
|
initListener();
|
}
|
|
private void initUI() {
|
this.setTitle("业务对象列表");
|
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
|
this.setSize(screenSize.width, screenSize.height / 2);
|
this.setModal(true);
|
this.setLocationRelativeTo(null);
|
this.setResizable(true);
|
|
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.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
|
|
setMaxTableHeader();
|
|
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 < attList.length; j++) {
|
qrTable.setValueAt(attList[j], i, j);
|
}
|
}
|
qrTable.setEditable(false);
|
}
|
qrTable.updateUI();
|
}
|
|
private void setMaxTableHeader() {
|
TableColumnModel columnModel = qrTable.getColumnModel();
|
double maxWidth = 0;
|
for (int i = 0; i < columnModel.getColumnCount(); i++) {
|
TableColumn column = columnModel.getColumn(i);
|
TableCellRenderer cellRenderer = column.getHeaderRenderer();
|
if (cellRenderer == null)
|
cellRenderer = qrTable.getDefaultRenderer(columnModel
|
.getColumn(i).getClass());
|
Object headerValue = column.getHeaderValue();
|
Component columnComp = cellRenderer.getTableCellRendererComponent(
|
(JTable) qrTable, headerValue, false, false, 0, i);
|
|
maxWidth = Math.max(maxWidth, columnComp.getPreferredSize()
|
.getWidth());
|
}
|
|
JTableHeader jtableHeader = qrTable.getTableHeader();
|
Dimension size = jtableHeader.getPreferredSize();
|
size.width = (int) maxWidth + 20;
|
jtableHeader.setPreferredSize(size);
|
}
|
|
private QueryDialog getDialog() {
|
return this;
|
}
|
|
private CheckRightResultView uiContainer;
|
|
public CheckRightResultView getUiContainer() {
|
return uiContainer;
|
}
|
|
public void setUiContainer(CheckRightResultView uiContainer) {
|
this.uiContainer = uiContainer;
|
}
|
|
private void initListener() {
|
qrTable.addMouseListener(new MouseListener() {
|
|
@Override
|
public void mouseReleased(MouseEvent e) {
|
}
|
|
@Override
|
public void mousePressed(MouseEvent e) {
|
}
|
|
@Override
|
public void mouseExited(MouseEvent e) {
|
}
|
|
@Override
|
public void mouseEntered(MouseEvent e) {
|
}
|
|
@Override
|
public void mouseClicked(MouseEvent e) {
|
JTable source = (JTable) e.getSource();
|
int row = source.getSelectedRow();
|
if (row == -1)
|
return;
|
DefaultTableModel queryModel = (DefaultTableModel) source
|
.getModel();
|
String value = (String) queryModel.getValueAt(row,
|
queryModel.findColumn("OID"));
|
getUiContainer().getObjectTextField().setText(value);
|
getDialog().dispose();
|
}
|
});
|
}
|
}
|