?? queuepanel.java
字號:
package jp.co.ntl.swing.ext.spooler;
import java.awt.BorderLayout;
///import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;
import javax.swing.BoxLayout;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JOptionPane;
import javax.swing.JMenuItem;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.TableColumn;
import jp.co.ntl.Net;
import jp.co.ntl.NetworkException;
import jp.co.ntl.Page;
import jp.co.ntl.SpoolerException;
import jp.co.ntl.Util;
import jp.co.ntl.ServerException;
import jp.co.ntl.TimeOutException;
import jp.co.ntl.ActionEventConstants;
import jp.co.ntl.preference.PreferenceInfo;
import jp.co.ntl.spkey.SPKeyInfo;
import jp.co.ntl.user.UserInfo2;
import jp.co.ntl.spooler.SpoolerInfo;
import jp.co.ntl.swing.BasePanel;
import jp.co.ntl.swing.TableSorter;
import jp.co.ntl.swing.ext.DialogManager;
public abstract class QueuePanel extends BasePanel implements ActionListener, ListSelectionListener {
/**
*
*/
private static final long serialVersionUID = 1L;
protected JTable tblSpooler;
protected SpoolerTableModel mdlSpooler;
protected ListSelectionModel mdlSpoolerSelect;
protected JScrollPane scrSpooler;
protected JButton btnPrint;
/// protected JButton btnCancel; // Cancel儃僞儞偼嶍彍 2007/06/27
protected JButton btnDelete;
protected JButton btnDetail;
protected JButton btnRefresh;
protected JMenuItem menuPrint;
protected JMenuItem menuCancel;
protected JMenuItem menuDelete;
protected JMenuItem menuDetail;
protected Vector vcSpoolerInfo;
protected SpoolerInvoker invoker;
protected Object keyInfo;
protected TableSorter sorter;
protected boolean admin;
protected SpoolerUtil su;
protected int que;
protected SpoolerPanel spl;
public QueuePanel(JFrame parent, SpoolerPanel spl, Net net, boolean admin, Object keyInfo, int que) {
this.parent = parent;
commonConstractor(spl, net, admin, keyInfo, que);
}
public QueuePanel(JApplet appl, SpoolerPanel spl, Net net, boolean admin, Object keyInfo, int que) {
this.app = appl;
commonConstractor(spl, net, admin, keyInfo, que);
}
private void commonConstractor(SpoolerPanel spl, Net net, boolean admin, Object keyInfo, int que) {
this.net = net;
this.keyInfo = keyInfo;
this.admin = admin;
this.que = que;
this.spl = spl;
buildComponents();
}
protected abstract void createButtonObject();
protected abstract Vector getQueType();
protected abstract void createPopupMenu();
public boolean getSpoolerInfo() throws NetworkException, ServerException, TimeOutException {
Vector vcSpoolerInfo = new Vector();
try {
Vector queTypes = getQueType();
vcSpoolerInfo = invoker.getJobList(queTypes, keyInfo, "ALL");
int[] rows = tblSpooler.getSelectedRows();
// lium add start
Vector vecSelJobIds = new Vector();
Vector vecSelRows = new Vector();
for (int i = 0; i < rows.length; i++) {
int selRow = sorter.modelIndex(rows[i]);
// int selRow = rows[i];
if (selRow >= 0) {
SpoolerInfo splInfo = (SpoolerInfo)mdlSpooler.getSelectedInfo(selRow);
if (!vecSelJobIds.contains(splInfo.getJobID())) {
vecSelJobIds.add(splInfo.getJobID());
Util.debugPrint("Refresh慜曐懚偟偨Job=" + splInfo.getJob() + " JobId=" + splInfo.getJobID() + " selRow=" + selRow);
}
}
}
// lium add end
mdlSpooler.refreshInfos(vcSpoolerInfo);
/* if (rows != null) {
if (rows.length > 0) {
mdlSpoolerSelect.addSelectionInterval(rows[0], rows[rows.length - 1]);
}
}*/
// lium add start
int nCount = mdlSpooler.getRowCount();
for (int j = 0; j < nCount; j++) {
SpoolerInfo splInfo = (SpoolerInfo)mdlSpooler.getSelectedInfo(j);
if (vecSelJobIds.contains(splInfo.getJobID())) {
int idxSorted = sorter.viewIndex(j);
Util.debugPrint("Refresh屻曐懚偟偨Job=" + splInfo.getJob() + " JobId=" + splInfo.getJobID() + " curRow=" + idxSorted);
vecSelRows.add(new Integer(idxSorted));
}
}
if (vecSelRows.size() > 0) {
Util.debugPrint(" SpoolerUserPanel addSelectionInterval");
Object[] selRows = vecSelRows.toArray();
// 僜乕僩昁梫丠
mdlSpoolerSelect.addSelectionInterval(((Integer)selRows[0]).intValue(),
((Integer)selRows[selRows.length - 1]).intValue());
}
// lium add end
} catch (SpoolerException e) {
throw new NetworkException(e.getMessage());
}
return true;
}
protected void buildComponents() {
Page.initialize(net);
invoker = SpoolerInvoker.getInstance(net);
createPopupMenu();
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
vcSpoolerInfo = new Vector();
mdlSpooler = new SpoolerTableModel(admin, vcSpoolerInfo, loc.getLanguage());
sorter = new TableSorter(mdlSpooler);
tblSpooler = new JTable(sorter);
sorter.setTableHeader(tblSpooler.getTableHeader());
scrSpooler = new JScrollPane(tblSpooler);
tblSpooler.getTableHeader().setReorderingAllowed(false);
TableColumn column;
column = tblSpooler.getColumn(SpoolerTableModel.columnSIZE);
column.setPreferredWidth(30);
column = tblSpooler.getColumn(SpoolerTableModel.columnCOPY);
column.setPreferredWidth(30);
column = tblSpooler.getColumn(SpoolerTableModel.columnPAGE);
column.setPreferredWidth(30);
panel.add(scrSpooler);
add(panel, BorderLayout.CENTER);
createButtonObject();
btnPrint.addActionListener(this);
/// btnCancel.addActionListener(this);
btnDelete.addActionListener(this);
btnDetail.addActionListener(this);
btnRefresh.addActionListener(this);
mdlSpoolerSelect = tblSpooler.getSelectionModel();
mdlSpoolerSelect.addListSelectionListener(this);
mdlSpoolerSelect.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
setButtonState();
tblSpooler.setColumnSelectionAllowed(false);
tblSpooler.addMouseListener(this);
su = new SpoolerUtil(this, tblSpooler, sorter, mdlSpooler, invoker);
}
public void beginPanel() throws NetworkException, ServerException, TimeOutException {
if (Util.getPreferenceInfo().getAuthType() != PreferenceInfo.AUTH_LOGIN) {
beginPanel(new SPKeyInfo());
} else {
beginPanel(new UserInfo2());
}
}
public void beginPanel(Object keyInfo) throws NetworkException, ServerException, TimeOutException {
this.keyInfo = keyInfo;
/// doRefresh();
}
public void finalize() {
try {
super.finalize();
} catch (Throwable e) {
;
}
}
private void setButtonState() {
if (tblSpooler.getSelectedRowCount() == 0) {
btnPrint.setEnabled(false);
/// btnCancel.setEnabled(false);
btnDelete.setEnabled(false);
btnDetail.setEnabled(false);
} else {
boolean bPrint = false/*, bCancel = false*/;
boolean[] ret = su.checkJobStatus();
bPrint = ret[SpoolerUtil.CHECKJOBSTATUS_IDX_RET_PRINT];
/// bCancel = ret[SpoolerUtil.CHECKJOBSTATUS_IDX_RET_CANCEL];
/// btnPrint.setEnabled(bPrint);
/// btnCancel.setEnabled(bCancel);
btnDelete.setEnabled(true);
if (tblSpooler.getSelectedRowCount() > 1) {
btnPrint.setEnabled(false);
btnDetail.setEnabled(false);
} else {
btnPrint.setEnabled(bPrint);
btnDetail.setEnabled(true);
}
}
}
protected void setPopupMenuState() {
boolean bPrint = false, bCancel = false;
boolean[] ret = su.checkJobStatus();
bPrint = ret[SpoolerUtil.CHECKJOBSTATUS_IDX_RET_PRINT];
bCancel = ret[SpoolerUtil.CHECKJOBSTATUS_IDX_RET_CANCEL];
menuCancel.setEnabled(bCancel);
menuDelete.setEnabled(true);
if (tblSpooler.getSelectedRowCount() > 1) {
menuPrint.setEnabled(false);
menuDetail.setEnabled(false);
} else {
menuPrint.setEnabled(bPrint);
menuDetail.setEnabled(true);
}
}
protected boolean doRegister() throws NetworkException, ServerException, TimeOutException {
return true;
}
protected boolean doModify() throws NetworkException, ServerException, TimeOutException {
return true;
}
protected boolean doDelete() throws NetworkException, ServerException, TimeOutException {
return true;
}
public boolean doRefresh() {
/// sendActionEvent(ACTCMD_REFRESH_SPOOLER);
spl.doRefresh();
return true;
}
public void doDetail() {
SpoolerInfo spoolerInfo;
int selRow = sorter.modelIndex(tblSpooler.getSelectedRow());
if (selRow >= 0) {
spoolerInfo = (SpoolerInfo)mdlSpooler.getSelectedInfo(selRow);
JobDetailPanel detailPanel = new JobDetailPanel(spoolerInfo, loc.getLanguage());
DialogManager.showCustomDialog(parent, Resource.getString(Resource.TITLE_JOB_DETAIL), detailPanel);
}
}
public int getInfosFromServer() {
return GET_INFO_RESULT_NORMAL;
}
/* public void paint(Graphics g) {
sendActionEvent(ACTCMD_REFRESH_SCREEN);
super.paint(g);
}*/
public void actionPerformed(ActionEvent ae) {
Object obj = ae.getSource();
try {
Vector queTypes = su.getQueTypes(que);
if (obj == btnPrint || obj == menuPrint) {
sendActionEvent(ActionEventConstants.ACTCMD_RESET_SESSION_TIMER);
spl.setIgnoreGetSpoolerInfo();
if (!su.doPrint(queTypes)) {
DialogManager.showMessage(this, DialogManager.ERROR_PRINTING);
} else {
doRefresh();
}
spl.setExecGetSpoolerInfo();
/* } else if (obj == btnCancel || obj == menuCancel) {
spoolerThread.setSendEvent(false);
if (!su.doCancel(queTypes)) {
DialogManager.showMessage(this, DialogManager.ERROR_NETWORK);
} else {
doRefresh();
}
spoolerThread.setSendEvent(true);*/
} else if (obj == btnDelete || obj == menuDelete) {
sendActionEvent(ActionEventConstants.ACTCMD_RESET_SESSION_TIMER);
if (DialogManager.showConfirmMessage(
this,
DialogManager.CONFIRM_DELETE,
JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
spl.setIgnoreGetSpoolerInfo();
if (!su.doDelete(queTypes)) {
DialogManager.showMessage(this, DialogManager.ERROR_NETWORK);
} else {
doRefresh();
}
spl.setExecGetSpoolerInfo();
}
} else if (obj == btnDetail || obj == menuDetail) {
sendActionEvent(ActionEventConstants.ACTCMD_RESET_SESSION_TIMER);
doDetail();
} else if (obj == btnRefresh) {
sendActionEvent(ActionEventConstants.ACTCMD_RESET_SESSION_TIMER);
spl.setIgnoreGetSpoolerInfo();
doRefresh();
spl.setExecGetSpoolerInfo();
}
} catch (NetworkException e) {
DialogManager.showMessage(this, DialogManager.ERROR_NETWORK);
} catch (ServerException e) {
DialogManager.showMessage(this, DialogManager.ERROR_SERVER);
} catch (TimeOutException e) {
}
}
public void valueChanged(ListSelectionEvent e) {
Object obj = e.getSource();
if (obj == mdlSpoolerSelect) {
sendActionEvent(ActionEventConstants.ACTCMD_RESET_SESSION_TIMER);
setButtonState();
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -