package com.vci.client.workflow.task; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.text.MessageFormat; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableColumnModel; import com.vci.client.LogonApplication; import com.vci.client.ui.exception.VCIException; import com.vci.client.ui.image.BundleImage; import com.vci.client.ui.swing.KJButton; import com.vci.client.workflow.commom.ClientHelper; import com.vci.client.workflow.delegate.ProcessCustomClientDelegate; import com.vci.corba.common.VCIError; import com.vci.corba.workflow.data.FlowTaskInfo; import com.vci.corba.workflow.data.ProcessTaskInfo; public class FlowSearchDialog extends JDialog { /** * */ private static final long serialVersionUID = -8012025583336084880L; private JTable doneTasksTable; private SearchTaskTableModel donetasksModel; private JPanel doneTasksPanle; String finishFlag = ""; //added by ligang 分页功能的实现 private JButton firstPageButton = null; private JButton prePageButton = null; private JButton nextPageButton = null; private JButton lastPageButton = null; private KJButton closeBtn = new KJButton("关闭", "cancel.gif"); int pagesize = getPageSize();//每页记录数 int pageCount = 0;//总页数 int rowCount = 0;//总记录数 int curPage = 1; int TABLE_PAGE = 1;//当前页数 private JLabel laber_pageinfo = new JLabel();//当前页/总页数 String[] values = new String[5]; String objectId = ""; public FlowSearchDialog(String objectId) { super(LogonApplication.frame); this.objectId = objectId; initUI(); initData(); this.setVisible(true); } private void initUI() { this.setTitle("流程历史查看"); setSize(820, 500); centerToScreen(); pagesize = getPageSize(); setLayout(new BorderLayout(0, 0)); donetasksModel = new SearchTaskTableModel(); doneTasksPanle = new JPanel(); add(doneTasksPanle, BorderLayout.CENTER); doneTasksPanle.setLayout(new BorderLayout(0, 0)); JPanel pane3 = new JPanel(); doneTasksPanle.add(pane3,BorderLayout.SOUTH); initPageerButtons(pane3); JPanel panel_1 = new JPanel(); doneTasksPanle.add(panel_1, BorderLayout.CENTER); panel_1.setLayout(new BorderLayout(0, 0)); JScrollPane scrollPane_1 = new JScrollPane(); panel_1.add(scrollPane_1, BorderLayout.CENTER); doneTasksTable = new JTable(); doneTasksTable.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN); doneTasksTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); doneTasksTable.setModel(donetasksModel); doneTasksTable.setRowHeight(25); doneTasksTable.addMouseListener(new MouseAdapter(){ public void mouseClicked(MouseEvent e) { if(e.getClickCount()==2){ viewFlowInfo(); } } }); Dimension size = doneTasksTable.getTableHeader().getPreferredSize(); size.height = 22; doneTasksTable.getTableHeader().setPreferredSize(size); scrollPane_1.setViewportView(doneTasksTable); DefaultTableCellRenderer r = new DefaultTableCellRenderer(); r.setHorizontalAlignment(JLabel.CENTER); TableColumnModel doneModel = doneTasksTable.getColumnModel(); doneModel.getColumn(0).setPreferredWidth(28); doneModel.getColumn(0).setMaxWidth(28); doneModel.getColumn(2).setPreferredWidth(150); doneModel.getColumn(3).setPreferredWidth(150); doneModel.getColumn(0).setCellRenderer(r); } private void initData() { ProcessCustomClientDelegate del = new ProcessCustomClientDelegate(LogonApplication.getUserEntityObject()); try { for(int i=0;i 1){ curPage--; } initData(); updateBtnStatus(); } }); nextPageButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(curPage < getPageCount()){ curPage++; } initData(); updateBtnStatus(); } }); lastPageButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { curPage = getPageCount(); initData(); updateBtnStatus(); } }); pal.add(Box.createHorizontalStrut(30)); pal.add(laber_pageinfo); } private void viewFlowInfo() { int selectedRow = doneTasksTable.getSelectedRow(); if (selectedRow == -1) { JOptionPane.showMessageDialog(doneTasksPanle, "请选择需要查看的已办任务!", "提示信息", JOptionPane.INFORMATION_MESSAGE); return; } FlowTaskInfo flowHistoryTaskInfo = donetasksModel.getValue(selectedRow); if (flowHistoryTaskInfo == null) { return; } // 查出阶段名称 ProcessCustomClientDelegate processCustomClientDelegate = new ProcessCustomClientDelegate(LogonApplication.getUserEntityObject()); String jbpmDeploymentId; try { jbpmDeploymentId = processCustomClientDelegate.getDeploymentIdByExecutionId(flowHistoryTaskInfo.executionId); if("".equals(jbpmDeploymentId)){ // JOptionPane.showMessageDialog(doneTaskPanel, "该流程不存在或已经执行完成!","提示信息", JOptionPane.INFORMATION_MESSAGE); jbpmDeploymentId = processCustomClientDelegate.getDepolymentID(flowHistoryTaskInfo.executionId); ProcessTaskInfo frocessTaskInfo = processCustomClientDelegate.findById(jbpmDeploymentId, flowHistoryTaskInfo.name); finishFlag="完成"; DoneTaskDialog todoTaskDialog = new DoneTaskDialog(flowHistoryTaskInfo, frocessTaskInfo,finishFlag); todoTaskDialog.setVisible(true); // initData(); // return; }else{ ProcessTaskInfo frocessTaskInfo = processCustomClientDelegate.findById(jbpmDeploymentId, flowHistoryTaskInfo.name); DoneTaskDialog todoTaskDialog = new DoneTaskDialog(flowHistoryTaskInfo, frocessTaskInfo,finishFlag); todoTaskDialog.setVisible(true); } } catch (VCIError e) { e.printStackTrace(); } } private int getPageSize() { if(this.pagesize == 0){ String pageSize = "40"; // try { // pageSize = new SystemCfgClientDelegate().getConfigValue("log.query.pagesize"); // } catch (VCIException e) { // e.printStackTrace(); // } int pageSizeGet = Integer.parseInt(pageSize); this.pagesize = pageSizeGet; } return pagesize; } private int getRowCount(){ try { return new ProcessCustomClientDelegate(LogonApplication.getUserEntityObject()).queryFlowTaskCount(values,objectId,false); } catch (VCIException e) { e.printStackTrace(); return 1; } } private int getPageCount(){ int dataRowCount = getRowCount(); int pageSize = getPageSize(); int pageCount = dataRowCount / pageSize; if (dataRowCount % pageSize > 0) { pageCount++; } return pageCount; } private void updateBtnStatus() { int rowCount = this.getRowCount(); int pageSize = getPageSize(); int pageCount = rowCount / pageSize; if (rowCount % pageSize > 0) { pageCount++; } if (pageCount <= 1) { firstPageButton.setEnabled(false); prePageButton.setEnabled(false); lastPageButton.setEnabled(false); nextPageButton.setEnabled(false); } else { if (curPage == 1) { firstPageButton.setEnabled(false); prePageButton.setEnabled(false); lastPageButton.setEnabled(true); nextPageButton.setEnabled(true); } else if (curPage >= pageCount) { firstPageButton.setEnabled(true); prePageButton.setEnabled(true); lastPageButton.setEnabled(false); nextPageButton.setEnabled(false); } else { firstPageButton.setEnabled(true); prePageButton.setEnabled(true); lastPageButton.setEnabled(true); nextPageButton.setEnabled(true); } } laber_pageinfo.setText(MessageFormat.format(getI18nString("pageInfo"), rowCount, pageCount, curPage)); } /** * 居中屏幕 */ private void centerToScreen() { Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension componentSize = getSize(); if (componentSize.height > screenSize.height) { componentSize.height = screenSize.height; } if (componentSize.width > screenSize.width) { componentSize.width = screenSize.width; } setLocation((screenSize.width - componentSize.width) / 2, (screenSize.height - componentSize.height) / 2); } private String getI18nString(String spCode) { return ClientHelper.getI18nStringForWorkflow(this.getClass().getName() + "." + spCode, this.getLocale()); } }