package com.vci.client.portal.UI.v3.comptdesign.compt.popupcompt; import java.awt.BorderLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.LinkedList; import java.util.List; import com.vci.client.oq.QTClient; import com.vci.client.ui.swing.VCISwingUtil; import com.vci.client.ui.swing.components.VCIJButton; import com.vci.client.ui.swing.components.VCIJPanel; 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.common.VCIError; import com.vci.corba.omd.qtm.QTInfo; public class QTPopupTablePanel extends VCIJPanel{ /** * */ private static final long serialVersionUID = -718487619680889638L; private final String COLUMN_NAME = "名称"; private final String COLUMN_TYPE = "类型"; private VCIJButton btnSearch = VCISwingUtil.createVCIJButton("search", "查询", "查询", "search.gif", new ActionListener() { @Override public void actionPerformed(ActionEvent e) { btnSearch_actionPerformed(e); } }); private VCIJButton btnClear = VCISwingUtil.createVCIJButton("clear", "清空", "清空查询条件", "clear.gif", new ActionListener() { @Override public void actionPerformed(ActionEvent e) { btnClear_actionPerformed(e); } }); private VCIJPanel searchInfoPanel = null; private VCIJTableDataProvider dataProvider = null; private VCIJTablePanel tablePanel = null; private QTPopupDialog popupDialog = null; public QTPopupTablePanel(QTPopupDialog popupDialog){ this.popupDialog = popupDialog; } public void buildTablePanel(){ setLayout(new BorderLayout()); dataProvider = new AbstractVCIJTableDataProvider() { @Override public String[] getSpecialColumns() { return new String[]{COLUMN_NAME, COLUMN_TYPE}; } @Override public int getTotal() { return super.total; } @Override public VCIJTableNode getNewRowNode(QTInfo obj) { VCIJTableNode res = new VCIJTableNode(obj); res.setPropertyValue(COLUMN_NAME, obj.qtName); res.setPropertyValue(COLUMN_TYPE, obj.btmName); return res; } @Override public QTInfo[] getDatas(int pageIndex, int pageSize) { QTInfo[] datas = new QTInfo[0]; try { ResData res = getDatasByPageInfo(pageIndex, pageSize); datas = res.getDatas(); super.total = res.getTotal(); } catch (VCIError e) { // TODO Auto-generated catch block e.printStackTrace(); } return datas; } }; tablePanel = new VCIJTablePanel(dataProvider); tablePanel.setShowExport(false); tablePanel.setColumnDefaultWidth(250); tablePanel.setPageSizeList(new int[]{10,20,30,40,50,100, 10}); tablePanel.buildTablePanel(); searchInfoPanel = getNorthSearchPanel(); add(searchInfoPanel, BorderLayout.NORTH); add(tablePanel, BorderLayout.CENTER); } private VCIJPanel getNorthSearchPanel(){ VCIJPanel pal = new VCIJPanel(new GridBagLayout()); pal.add(btnSearch, getGBC(1, 0, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, 1)); pal.add(btnClear, getGBC(2, 0, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, 1)); searchInfoPanel = pal; return pal; } private GridBagConstraints getGBC(int gridx, int gridy, int gridwidth, int gridheight, double weightx, double weighty, int anchor, int fill, int padxy) { return new GridBagConstraints(gridx, gridy, gridwidth, gridheight, weightx, weighty, anchor, fill, new Insets(padxy, padxy, padxy, padxy), padxy, padxy); } private ResData getDatasByPageInfo(int pageIndex, int pageSize) throws VCIError{ QTInfo[] datas = null; int start = pageIndex <= 1 ? 1 : (pageIndex - 1) * pageSize + 1; int end = pageIndex <= 1 ? pageSize : (pageIndex * pageSize); String where = " 1=1 "; String text = ""; if(getPopupDialog() != null){ if(getPopupDialog().getBtmLinKTypeTxt() != null){ text = getPopupDialog().getBtmLinKTypeTxt().getText().trim(); where += String.format(" and qt.btmname = '%s' ", text); } if(!getPopupDialog().isIgnoreTxtInputValue()){ text = getPopupDialog().getSearchInputTxt().getText().trim(); where += String.format(" and (qt.qtname like '%%%s%%') ", text, text); } } String fromWhere = String.format(" from PL_QTEMPLATE qt where %s ", where); String fromWhereOrderBy = String.format(" %s order by qt.qtname ", fromWhere); String sql = String.format("select * from(" + " select row_.*,rownum rownum_ from( " + " select qt.qtname,qt.btmname %s" + " ) row_ " + ") where rownum_ >= %d and rownum_ <= %d ", fromWhereOrderBy, start, end); List list = new LinkedList(); String[][] kvss = QTClient.getService().queryBySqlWithoutKey(sql); for(String[] kvs : kvss){ QTInfo bi = new QTInfo(); bi.qtName = kvs[0]; bi.btmName = kvs[1]; list.add(bi); } datas = list.toArray(new QTInfo[]{}); sql = String.format("select count(1) count_ %s", fromWhere); kvss = QTClient.getService().queryBySqlWithoutKey(sql); int total = Integer.valueOf(kvss[0][0]); ResData res = new ResData(); res.setDatas(datas); res.setTotal(total); return res; } private void btnSearch_actionPerformed(ActionEvent e){ tablePanel.setPageIndex(1); tablePanel.refreshTableData(); } private void btnClear_actionPerformed(ActionEvent e){ tablePanel.setPageIndex(1); if(getPopupDialog() != null && getPopupDialog().getSearchInputTxt() != null){ getPopupDialog().getSearchInputTxt().setText(""); } tablePanel.refreshTableData(); } public VCIJTablePanel getTablePanel() { return tablePanel; } public QTPopupDialog getPopupDialog() { return popupDialog; } public void setPopupDialog(QTPopupDialog popupDialog) { this.popupDialog = popupDialog; } }