?? spooleruserpanel.java
字號:
package jp.co.ntl.swing.ext.spooler;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JApplet;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JSeparator;
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.ServerException;
import jp.co.ntl.SpoolerException;
import jp.co.ntl.TimeOutException;
import jp.co.ntl.Util;
import jp.co.ntl.ext.ButtonSelectionEvent;
import jp.co.ntl.ext.ButtonSelectionListener;
import jp.co.ntl.ext.ButtonStateEvent;
import jp.co.ntl.ext.ButtonStateListener;
import jp.co.ntl.spooler.SpoolerInfo;
import jp.co.ntl.preference.PreferenceInfo;
import jp.co.ntl.swing.TableSorter;
import jp.co.ntl.swing.ext.MsgUtil;
import jp.co.ntl.swing.ext.PrinterButtonUtil;
import jp.co.ntl.swing.ext.SimpleButton;
import jp.co.ntl.swing.ext.ImageInfo;
import jp.co.ntl.swing.ext.MultiLineLabel;
public class SpoolerUserPanel extends AbstractSpoolerPanel implements ActionListener, ListSelectionListener, ButtonSelectionListener {
//private static Logger log = Logger.getLogger(SpoolerUserPanel.class);
public static final String COM_REPAINTFRAME = "RepaintFrame";
private static final String PANEL_JOB_LIST = "JobList";
private static final String PANEL_DETAIL_INFO = "DetailInfo";
private static final String PANEL_CONFIRM_DELETE = "ConfirmDelete";
private static final long serialVersionUID = 1L;
private JTable tblSpooler;
private SpoolerTableModel mdlSpooler;
private ListSelectionModel mdlSpoolerSelect;
private JScrollPane scrSpooler;
private JLabel lblStatus;
private JTable tblDetail;
private JScrollPane scrDetail;
// private JobDetailTableModel mdlDetail;
private JobDetailTableModelBase mdlDetail;
private SimpleButton btnClose;
private JPanel cardPanel;
private MultiLineLabel lblDelete;
private SimpleButton btnYes;
private SimpleButton btnNo;
private Vector vcSpoolerInfo;
private SpoolerInvoker invoker;
private TableSorter sorter;
private int queType;
private List lstBtnStateListener;
private boolean accessible;
private SpoolerUtil su;
private CardLayout layout = null;
private SpoolerInfo detailSpoolerInfo;
private JPanel panelJobList;
private JPanel panelConfirm;
private JPanel panelDetail;
// 2007.10.22 lium 暋悢僾儕儞僞懳墳 mod start
private PrinterButtonUtil prtBtnUtil;
public SpoolerUserPanel(Container parent, Net net, Object keyInfo, int queType, PrinterButtonUtil prtBtnUtil) {
this.parent = (JFrame)parent;
commonConstractor(net, false, keyInfo, queType, prtBtnUtil);
}
public SpoolerUserPanel(JApplet appl, Net net, Object keyInfo, int queType, PrinterButtonUtil prtBtnUtil) {
this.app = appl;
commonConstractor(net, false, keyInfo, queType, prtBtnUtil);
}
private void commonConstractor(Net net, boolean admin, Object keyInfo, int queType, PrinterButtonUtil prtBtnUtil) {
lstBtnStateListener = new ArrayList();
this.prtBtnUtil = prtBtnUtil;
this.queType = queType;
super.commonConstractor(net, admin, keyInfo);
}
// 2007.10.22 lium 暋悢僾儕儞僞懳墳 mod end
protected void buildComponents() {
Resource.load(loc);
setOpaque(false);
Page.initialize(net);
invoker = SpoolerInvoker.getInstance(net);
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
JPanel panelStatus = new JPanel();
panelStatus.setOpaque(false);
panelStatus.setLayout(new BoxLayout(panelStatus, BoxLayout.X_AXIS));
panelStatus.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
lblStatus = new JLabel(Resource.getString(Resource.STATUS));
lblStatus.setFont(new Font(null, Font.BOLD, 18));
panelStatus.add(lblStatus);
panelStatus.add(Box.createHorizontalGlue());
add(panelStatus);
setStatus(Resource.getString(Resource.STATUS_IDLE));
JSeparator separator = new JSeparator();
add(separator);
cardPanel = new JPanel();
layout = new CardLayout();
cardPanel.setLayout(layout);
cardPanel.setOpaque(false);
panelJobList = new JPanel();
panelJobList.setLayout(new BoxLayout(panelJobList, BoxLayout.Y_AXIS));
panelJobList.setOpaque(false);
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.setRowHeight(50);
tblSpooler.getTableHeader().setReorderingAllowed(false);
tblSpooler.setOpaque(false);
scrSpooler.setOpaque(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);
panelJobList.add(scrSpooler);
cardPanel.add(PANEL_JOB_LIST, panelJobList);
panelDetail = new JPanel();
panelDetail.setLayout(new BoxLayout(panelDetail, BoxLayout.Y_AXIS));
panelDetail.setOpaque(false);
// vcPaperInfo = new Vector();
// mdlDetail = new JobDetailTableModel(detailSpoolerInfo, /*vcPaperInfo,*/ loc.getLanguage());
detailSpoolerInfo = new SpoolerInfo();
if (Util.getPreferenceInfo().getAuthType() == PreferenceInfo.AUTH_LOGIN) {
mdlDetail = new JobDetailLoginTableModel(detailSpoolerInfo, loc.getLanguage());
} else {
mdlDetail = new JobDetailTableModel(detailSpoolerInfo, loc.getLanguage());
}
tblDetail = new JTable(mdlDetail);
scrDetail = new JScrollPane(tblDetail);
tblDetail.getTableHeader().setReorderingAllowed(false);
tblDetail.setColumnSelectionAllowed(false);
tblDetail.setOpaque(false);
scrDetail.setOpaque(false);
tblDetail.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
column = tblDetail.getColumnModel().getColumn(1);
column.setPreferredWidth(300);
panelDetail.add(scrDetail);
JPanel panelButton = new JPanel();
panelButton.setOpaque(false);
panelButton.setLayout(new BoxLayout(panelButton, BoxLayout.X_AXIS));
panelButton.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
panelButton.add(Box.createHorizontalGlue());
Image[] img = new Image[] {
ImageInfo.getImage(ImageInfo.BTN_CLOSE_UP),
ImageInfo.getImage(ImageInfo.BTN_CLOSE_DOWN),
ImageInfo.getImage(ImageInfo.BTN_CLOSE_UP)
};
btnClose = new SimpleButton(img[0], img[1], img[2]);
btnClose.setOpaque(false);
panelButton.add(btnClose);
panelDetail.add(panelButton);
btnClose.addActionListener(this);
cardPanel.add(PANEL_DETAIL_INFO, panelDetail);
panelConfirm = new JPanel();
panelConfirm.setLayout(new BoxLayout(panelConfirm, BoxLayout.Y_AXIS));
panelConfirm.setOpaque(false);
panelConfirm.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
JPanel panelDeleteLabel = new JPanel();
panelDeleteLabel.setLayout(new BorderLayout());
panelDeleteLabel.setOpaque(false);
lblDelete = new MultiLineLabel("", new Font(null, Font.BOLD, 18), getForeground(), getBackground(), MultiLineLabel.CENTER);
panelDeleteLabel.add(lblDelete, BorderLayout.CENTER);
panelConfirm.add(panelDeleteLabel);
panelConfirm.add(Box.createVerticalGlue());
JPanel panelConfirmButton = new JPanel();
panelConfirmButton.setOpaque(false);
panelConfirmButton.setLayout(new BoxLayout(panelConfirmButton, BoxLayout.X_AXIS));
panelConfirmButton.add(Box.createHorizontalGlue());
img = new Image[] {
ImageInfo.getImage(ImageInfo.BTN_YES_UP),
ImageInfo.getImage(ImageInfo.BTN_YES_DOWN),
ImageInfo.getImage(ImageInfo.BTN_YES_UP),
};
btnYes = new SimpleButton(img[0], img[1], img[2]);
btnYes.setOpaque(false);
btnYes.addActionListener(this);
img = new Image[] {
ImageInfo.getImage(ImageInfo.BTN_NO_UP),
ImageInfo.getImage(ImageInfo.BTN_NO_DOWN),
ImageInfo.getImage(ImageInfo.BTN_NO_UP)
};
btnNo = new SimpleButton(img[0], img[1], img[2]);
btnNo.setOpaque(false);
btnNo.addActionListener(this);
// if (GlobalContext.getInstance().getPreferenceInfo().getClientKind() == PreferenceInfo.CLIENT_MAC) {
if (Util.getPreferenceInfo().getClientKind() == PreferenceInfo.CLIENT_MAC) {
panelConfirmButton.add(btnNo);
panelConfirmButton.add(Box.createRigidArea(new Dimension(10, 0)));
panelConfirmButton.add(btnYes);
} else {
panelConfirmButton.add(btnYes);
panelConfirmButton.add(Box.createRigidArea(new Dimension(10, 0)));
panelConfirmButton.add(btnNo);
}
panelConfirm.add(panelConfirmButton);
cardPanel.add(PANEL_CONFIRM_DELETE, panelConfirm);
layout.show(cardPanel, PANEL_JOB_LIST);
add(cardPanel);
mdlSpoolerSelect = tblSpooler.getSelectionModel();
mdlSpoolerSelect.addListSelectionListener(this);
mdlSpoolerSelect.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
// 2007.10.19 lium 堦妵報(bào)嶞儃僞儞捛壛 mod start
tblSpooler.setColumnSelectionAllowed(false);
su = new SpoolerUtil(this, tblSpooler, sorter, mdlSpooler, invoker);
setButtonState();
// spoolerThread.setSendEvent(false);
// spoolerThread.start();
// spoolerThread.addActionListener(this);
startGetSpoolerInfoTimer(true, SPOOLERTHREAD_PERIOD);
//su = new SpoolerUtil(this, tblSpooler, sorter, mdlSpooler, invoker);
// 2007.10.19 lium 堦妵報(bào)嶞儃僞儞捛壛 mod end
}
public void beginPanel(Object info, boolean bInit, String targetPrinterName) throws NetworkException, ServerException, TimeOutException {
this.targetPrinterName = targetPrinterName;
this.keyInfo = info;
if (bInit) {
this.bInit[queType] = false;
mdlSpooler.deleteAllInfos();
}
start();
}
public void finalize() throws Throwable {
// if (spoolerThread != null) {
// if (spoolerThread.isAlive()) {
// spoolerThread.setEndThreadFlag(true);
// spoolerThread.interrupt();
// }
// spoolerThread = null;
// }
cancelGetSpoolerInfoTimer();
stop();
super.finalize();
}
public boolean start() {
// if (spoolerThread != null) {
// spoolerThread.setSendEvent(true);
if (isGetSpoolerInfoTimerStarted()) {
setExecGetSpoolerInfo();
if (!bInit[queType]) {
setStatus(MsgUtil.getMessage(MsgUtil.MSG_GETTING_SPOOL_INFO, null));
super.doRefresh();
}
} else {
// setStatus(MsgUtil.getMessage(MsgUtil.MSG_GETTING_SPOOL_INFO, null));
// spoolerThread = new SPSToolThread(SPOOLERTHREAD_PERIOD);
// spoolerThread.setSendEvent(true);
// spoolerThread.start();
// spoolerThread.addActionListener(this);
startGetSpoolerInfoTimer(false, SPOOLERTHREAD_PERIOD);
}
setAccessible(true);
setButtonState();
return true;
}
public void stop() {
// if (spoolerThread != null) {
// spoolerThread.setSendEvent(false);
// }
setIgnoreGetSpoolerInfo();
if (panelDetail.isShowing() || panelConfirm.isShowing()) {
closeDialog();
}
setAccessible(false);
}
public void endPanel() {
try {
finalize();
} catch (Throwable e) {
}
}
// 2007.10.19 lium 堦妵報(bào)嶞儃僞儞捛壛 mod start
// private void setButtonState() {
// if (panelConfirm.isShowing() || panelDetail.isShowing()) {
// buttonStateChanged(
// new int[] {ButtonStateEvent.BTN_PRINT, /*ButtonStateEvent.BTN_CANCEL,*/ ButtonStateEvent.BTN_DELETE, ButtonStateEvent.BTN_DETAIL, ButtonStateEvent.BTN_REFRESH},
// new boolean[] {false, /*false,*/ panelConfirm.isShowing(), panelDetail.isShowing(), false});
// } else {
// if (tblSpooler.getSelectedRowCount() == 0) {
// buttonStateChanged(
// new int[] {ButtonStateEvent.BTN_PRINT, /*ButtonStateEvent.BTN_CANCEL,*/ ButtonStateEvent.BTN_DELETE, ButtonStateEvent.BTN_DETAIL, ButtonStateEvent.BTN_REFRESH},
// new boolean[] {false, /*false,*/ false, false, true});
// } else {
// boolean bPrint = false/*, bCancel = false*/;
//
// boolean[] ret = su.checkJobStatus();
// bPrint = ret[SpoolerUtil.CHECKJOBSTATUS_IDX_RET_PRINT];
///// bCancel = ret[SpoolerUtil.CHECKJOBSTATUS_IDX_RET_CANCEL];
//
// if (tblSpooler.getSelectedRowCount() > 1) {
// buttonStateChanged(
// new int[] {ButtonStateEvent.BTN_PRINT, /*ButtonStateEvent.BTN_CANCEL,*/ ButtonStateEvent.BTN_DELETE, ButtonStateEvent.BTN_DETAIL, ButtonStateEvent.BTN_REFRESH},
// new boolean[] {false, /*bCancel,*/ true, false, true});
// } else {
// buttonStateChanged(
// new int[] {ButtonStateEvent.BTN_PRINT, /*ButtonStateEvent.BTN_CANCEL,*/ ButtonStateEvent.BTN_DELETE, ButtonStateEvent.BTN_DETAIL, ButtonStateEvent.BTN_REFRESH},
// new boolean[] {bPrint, /*bCancel,*/ true, true, true});
// }
// }
// }
// }
private void setButtonState() {
if (panelConfirm.isShowing() || panelDetail.isShowing()) {
buttonStateChanged(
new int[] {ButtonStateEvent.BTN_PRINT,
ButtonStateEvent.BTN_PRINTALL,
ButtonStateEvent.BTN_DELETE,
ButtonStateEvent.BTN_DETAIL,
ButtonStateEvent.BTN_REFRESH,
ButtonStateEvent.BTN_HEAD_1,
ButtonStateEvent.BTN_HEAD_2,
ButtonStateEvent.BTN_HEAD_3,
ButtonStateEvent.BTN_HEAD_4,
ButtonStateEvent.BTN_HEAD_5
},
new boolean[] {false,
false,
panelConfirm.isShowing(),
panelDetail.isShowing(),
false
,false, false, false, false, false
});
} else {
// 報(bào)嶞壜偺僕儑僽偑偁傞応崌丄true傪栠傞
boolean bPrintAll = su.hasPrintableJob();
if (tblSpooler.getSelectedRowCount() == 0) {
buttonStateChanged(
new int[] {ButtonStateEvent.BTN_PRINT,
ButtonStateEvent.BTN_PRINTALL,
ButtonStateEvent.BTN_DELETE,
ButtonStateEvent.BTN_DETAIL,
ButtonStateEvent.BTN_REFRESH,
ButtonStateEvent.BTN_HEAD_1,
ButtonStateEvent.BTN_HEAD_2,
ButtonStateEvent.BTN_HEAD_3,
ButtonStateEvent.BTN_HEAD_4,
ButtonStateEvent.BTN_HEAD_5
},
new boolean[] {false, bPrintAll, false, false, true
,true, true, true, true, true
});
} else {
boolean bPrint = false;
boolean[] ret = su.checkJobStatus();
bPrint = ret[SpoolerUtil.CHECKJOBSTATUS_IDX_RET_PRINT];
if (tblSpooler.getSelectedRowCount() > 1) {
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -