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<values.length;i++) {
|
values[i] = "";
|
}
|
FlowTaskInfo[] dataObjs = del.getTaskByCondition(values, curPage, pagesize,objectId);
|
donetasksModel.setData(dataObjs);
|
doneTasksTable.removeAll();
|
doneTasksTable.setModel(donetasksModel);
|
} catch (VCIError e) {
|
e.printStackTrace();
|
}
|
updateBtnStatus();
|
}
|
|
private void initPageerButtons(JPanel pal){
|
|
pal.add(closeBtn);
|
closeBtn.addActionListener(new ActionListener() {
|
|
public void actionPerformed(ActionEvent arg0) {
|
dispose();
|
}
|
});
|
|
firstPageButton = new JButton("");
|
pal.add(firstPageButton);
|
firstPageButton.setIcon(new BundleImage().createImageIcon("resultset_first.png"));
|
|
prePageButton = new JButton("");
|
pal.add(prePageButton);
|
prePageButton.setIcon(new BundleImage().createImageIcon("resultset_previous.png"));
|
|
nextPageButton = new JButton("");
|
pal.add(nextPageButton);
|
nextPageButton.setIcon(new BundleImage().createImageIcon("resultset_next.png"));
|
|
lastPageButton = new JButton("");
|
pal.add(lastPageButton);
|
lastPageButton.setIcon(new BundleImage().createImageIcon("resultset_last.png"));
|
|
firstPageButton.setEnabled(false);
|
prePageButton.setEnabled(false);
|
nextPageButton.setEnabled(false);
|
lastPageButton.setEnabled(false);
|
|
firstPageButton.addActionListener(new ActionListener() {
|
public void actionPerformed(ActionEvent e) {
|
curPage = 1;
|
initData();
|
updateBtnStatus();
|
}
|
});
|
prePageButton.addActionListener(new ActionListener() {
|
public void actionPerformed(ActionEvent e) {
|
if(curPage > 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());
|
}
|
}
|