⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queuepanel.java

📁 打印管理程序,测试完全通过.windows开发环境.
💻 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 + -