import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.net.URL; import java.net.*; import java.io.*; import org.cups.*; public class GLPprinterDetail { private CupsPrinter printer = null; private JScrollPane scrollPane = null; private JPanel mainPanel = null; // Constructor public GLPprinterDetail( CupsPrinter cp ) { printer = cp; load(); } public void load() { mainPanel = new JPanel(); mainPanel = printerInfoPanel( printer ); } // ----------------------------------------------------------- // // Build an info panel for an individual printer. // private JPanel printerInfoPanel( CupsPrinter cp ) { JPanel printerPanel = new JPanel(); BoxLayout printerBox; JPanel leftHeader = new JPanel(); JPanel rightHeader = new JPanel(); JPanel leftPane = new JPanel(); JPanel rightPane = new JPanel(); GridBagLayout leftLayout = new GridBagLayout(); GridBagLayout rightLayout = new GridBagLayout(); GridBagConstraints leftConst = new GridBagConstraints(); GridBagConstraints rightConst = new GridBagConstraints(); JLabel printerIconLabel = null; JLabel printerInfoLabel = null; JLabel printerNameLabel = null; JLabel printerMakeLabel = null; JTable printerStatusTable = null; printerBox = new BoxLayout(printerPanel, BoxLayout.X_AXIS); printerPanel.setLayout(printerBox); printerPanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); printerPanel.setBackground(GLPcolors.backgroundColor); // Add border around the panel. // ------------------------------------------------------------ // Left pane // ------------------------------------------------------------ leftPane.setLayout(leftLayout); leftPane.setBackground(GLPcolors.backgroundColor); leftHeader.setLayout(new BorderLayout()); leftHeader.setBackground(GLPcolors.highlightColor); leftHeader.setBorder(BorderFactory.createEmptyBorder(3,3,3,3)); printerNameLabel = new JLabel(cp.getPrinterName()); printerNameLabel.setForeground(Color.black); leftHeader.add( printerNameLabel, BorderLayout.WEST); leftConst.gridwidth = GridBagConstraints.RELATIVE; leftConst.gridx = 0; leftConst.gridy = 0; leftConst.fill = GridBagConstraints.HORIZONTAL; leftConst.weightx = 0.0; leftConst.weighty = 0.0; leftConst.ipady = 4; leftLayout.setConstraints( leftHeader, leftConst ); leftPane.add(leftHeader); String imageName = "./images/printer-" + cp.getStateText() + ".gif"; JButton printerButton; try { URL iconURL = ClassLoader.getSystemResource(imageName); ImageIcon icon = new ImageIcon(iconURL); printerButton = new JButton( "
" + cp.getPrinterName() + "
", icon ); } catch (NullPointerException e) { printerButton = new JButton( "
" + cp.getPrinterName() + "
"); } printerButton.setBorder(BorderFactory.createEmptyBorder(3,3,3,3)); printerButton.setBackground(GLPcolors.backgroundColor); printerButton.setActionCommand( cp.getPrinterName() ); // printerButton.addActionListener(this); printerButton.setToolTipText("Click to go to " + cp.getPrinterName() + "'s extended informtion page."); leftConst.gridwidth = GridBagConstraints.REMAINDER; leftConst.gridx = 0; leftConst.gridy = 1; leftConst.fill = GridBagConstraints.BOTH; leftConst.weightx = 1.0; leftConst.weighty = 1.0; leftConst.ipady = 4; leftLayout.setConstraints( printerButton, leftConst ); leftPane.add(printerButton); // ------------------------------------------------------------ // Right pane // ------------------------------------------------------------ rightPane.setLayout(rightLayout); rightPane.setBackground(GLPcolors.backgroundColor); rightHeader.setLayout(new BorderLayout()); rightHeader.setBackground(GLPcolors.highlightColor); rightHeader.setBorder(BorderFactory.createEmptyBorder(3,3,3,3)); printerMakeLabel = new JLabel(cp.getMakeAndModel()); printerMakeLabel.setForeground(Color.black); rightHeader.add( printerMakeLabel, BorderLayout.WEST); rightConst.gridwidth = GridBagConstraints.RELATIVE; rightConst.gridx = 0; rightConst.gridy = 0; rightConst.fill = GridBagConstraints.HORIZONTAL; rightConst.weightx = 0.0; rightConst.weighty = 0.0; rightConst.ipady = 4; rightLayout.setConstraints( rightHeader, rightConst ); rightPane.add(rightHeader); Font labelFont = new Font("Serif",Font.BOLD, 12 ); // Font textFont = new Font("Serif", Font.NORMAL, 12 ); Font messageFont = new Font("Serif", Font.ITALIC, 12 ); JLabel pdServerLabel = new JLabel("Server"); JLabel pdNameLabel = new JLabel("Name"); JLabel pdLocationLabel = new JLabel("Location"); JLabel pdStatusLabel = new JLabel("Status"); JLabel pdMessageLabel = new JLabel("Message"); JLabel pdServerText = new JLabel(GLPvars.cupsServerName); JLabel pdNameText = new JLabel(cp.getPrinterName()); JLabel pdLocationText = new JLabel(cp.getLocation()); JLabel pdStatusText = new JLabel(cp.getStateText()); JLabel pdMessageText = new JLabel(cp.getStateReasons()); pdServerLabel.setFont(labelFont); pdNameLabel.setFont(labelFont); pdLocationLabel.setFont(labelFont); pdStatusLabel.setFont(labelFont); pdMessageLabel.setFont(labelFont); pdMessageText.setFont(messageFont); pdServerLabel.setForeground(Color.black); pdNameLabel.setForeground(Color.black); pdLocationLabel.setForeground(Color.black); pdStatusLabel.setForeground(Color.black); pdMessageLabel.setForeground(Color.black); JPanel tablePane; if ((cp.getStateReasons().length() > 0) && (!cp.getStateReasons().equals("none"))) { tablePane = new JPanel(new GridLayout(5,2,2,2)); tablePane.add(pdServerLabel); tablePane.add(pdServerText); tablePane.add(pdNameLabel); tablePane.add(pdNameText); tablePane.add(pdLocationLabel); tablePane.add(pdLocationText); tablePane.add(pdStatusLabel); tablePane.add(pdStatusText); tablePane.add(pdMessageLabel); tablePane.add(pdMessageText); } else { tablePane = new JPanel(new GridLayout(4,2,2,2)); tablePane.add(pdServerLabel); tablePane.add(pdServerText); tablePane.add(pdNameLabel); tablePane.add(pdNameText); tablePane.add(pdLocationLabel); tablePane.add(pdLocationText); tablePane.add(pdStatusLabel); tablePane.add(pdStatusText); } tablePane.setBackground(GLPcolors.backgroundColor); // printerStatusTable.setShowGrid(false); rightConst.gridwidth = GridBagConstraints.REMAINDER; rightConst.gridx = 0; rightConst.gridy = 1; rightConst.fill = GridBagConstraints.BOTH; rightConst.weightx = 1.0; rightConst.weighty = 1.0; rightConst.ipady = 4; rightLayout.setConstraints( tablePane, rightConst ); rightPane.add(tablePane); printerPanel.add(leftPane); printerPanel.add(rightPane); return(printerPanel); } public JPanel getPanel() { return(mainPanel); } }