+++ /dev/null
-
-import java.awt.*;
-import java.awt.event.*;
-import javax.swing.*;
-import java.net.URL;
-import java.net.*;
-import java.io.*;
-import com.easysw.cups.*;
-
-public class GLPprinters implements ActionListener
-{
-
- private Cups cups = null;
- public String cupsServerName = "";
-
- private JScrollPane scrollPane = null;
- private JPanel mainPanel = null;
- private JPanel serverPanel = null;
- private JPanel maskPanel = null;
-
- private GridBagLayout mainLayout = null;
- private GridBagConstraints mainConst = null;
- private GridBagLayout maskLayout = null;
- private GridBagConstraints maskConst = null;
-
- private JLabel serverLabel = null;
-
- JTextField nameTextField = null;
- protected static final String maskFieldString = "Printer Name:";
- protected static final String maskButtonString = "Apply";
-
- private String currentMask = "";
-
-
- // Constructor
- public GLPprinters()
- {
- cupsServerName = GLPvars.getServerName();
- load();
- }
-
- public void load()
- {
- String[] printer_names;
- String default_printer;
- int num_printers = 0;
- int y = 0, i = 0;
- URL u;
- CupsPrinter cp;
-
-
- // -----------------------------------------------------------
- //
- // First get a list of printer names.
- //
- try
- {
- u = new URL("http://" + GLPvars.getServerName() + ":631/");
- cups = new Cups(u);
-
- // If authorization is required ....
- cups.setUser(GLPvars.cupsUser);
- cups.setPasswd(GLPvars.cupsPasswd);
-
- printer_names = cups.cupsGetPrinters();
- if (printer_names != null)
- num_printers = printer_names.length;
- else
- num_printers = 0;
- }
- catch (IOException e)
- {
- mainPanel = new JPanel();
- mainPanel.setLayout(new BorderLayout());
- mainPanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
- mainPanel.setBackground(GLPcolors.backgroundColor);
- JLabel errorLabel = new JLabel("Error loading printers from " +
- GLPvars.getServerName());
- errorLabel.setForeground(Color.red);
- mainPanel.add( errorLabel, BorderLayout.CENTER );
- scrollPane = new JScrollPane(mainPanel);
- return;
- }
-
- // -----------------------------------------------------------
- //
- // Now get the printer objects
- //
- CupsPrinter[] printers = new CupsPrinter[num_printers];
- for (i=0; i < num_printers; i++)
- {
- try
- {
- u = new URL("http://" + GLPvars.getServerName() +
- ":631/printers/" + printer_names[i] );
- cups = new Cups(u);
-
- // If authorization is required ....
- cups.setUser(GLPvars.cupsUser);
- cups.setPasswd(GLPvars.cupsPasswd);
-
- printers[i] = new CupsPrinter( cups, printer_names[i] );
- }
- catch (IOException e)
- {
- // System.out.println("GLPprinters: IOException");
- // return(null);
- }
- }
-
-
- //
- // Keep track in case it changes.
- //
- cupsServerName = GLPvars.getServerName();
-
- if (printer_names != null)
- num_printers = printer_names.length;
- else
- num_printers = 0;
-
- // default_printer = c.cupsGetDefault();
-
- // Create the main panel to contain the two sub panels.
- mainPanel = new JPanel();
- mainLayout = new GridBagLayout();
- mainConst = new GridBagConstraints();
-
- mainPanel.setLayout(mainLayout);
- mainPanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
- mainPanel.setBackground(GLPcolors.backgroundColor);
-
- // --------------------------------------------------------------
- //
- // Add the server name label
- //
- serverPanel = new JPanel();
- serverPanel.setLayout( new BorderLayout());
- serverPanel.setBackground(GLPcolors.backgroundColor);
- serverLabel = new JLabel("Printers on " + GLPvars.getServerName());
- serverLabel.setForeground(GLPcolors.foregroundColor);
- serverPanel.add(serverLabel, BorderLayout.NORTH );
-
- mainConst.gridwidth = GridBagConstraints.RELATIVE;
- mainConst.gridx = 0;
- mainConst.gridy = y++;
- mainConst.fill = GridBagConstraints.BOTH;
- mainConst.weightx = 0.0;
- mainConst.weighty = 0.0;
- mainConst.ipadx = 4;
- mainConst.ipady = 4;
- mainLayout.setConstraints( serverPanel, mainConst );
- mainPanel.add(serverPanel);
-
- // --------------------------------------------------------------
- //
- // Add the printer masking panel
- //
- maskPanel = new JPanel();
- maskLayout = new GridBagLayout();
- maskConst = new GridBagConstraints();
-
- maskPanel.setLayout(maskLayout);
- maskPanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
- maskPanel.setBackground(GLPcolors.backgroundColor);
-
- JPanel localMaskPanel = buildMaskPanel();
- maskConst.gridwidth = GridBagConstraints.RELATIVE;
- maskConst.gridx = 0;
- maskConst.gridy = 0;
- maskConst.fill = GridBagConstraints.NONE;
- maskConst.weightx = 0.0;
- maskConst.weighty = 0.0;
- maskConst.ipadx = 4;
- maskConst.ipady = 4;
- maskLayout.setConstraints( localMaskPanel, maskConst );
- maskPanel.add(localMaskPanel);
-
- //
- // Add the masking panel to the main panel.
- //
- mainConst.gridwidth = GridBagConstraints.RELATIVE;
- mainConst.gridx = 0;
- mainConst.gridy = y++;
- mainConst.fill = GridBagConstraints.BOTH;
- mainConst.weightx = 0.0;
- mainConst.weighty = 0.0;
- mainConst.ipadx = 4;
- mainConst.ipady = 4;
- mainLayout.setConstraints( maskPanel, mainConst );
- mainPanel.add(maskPanel);
-
-
-
- // --------------------------------------------------------------
- //
- // Add the printers
- //
- double weight = 1.0 / (double)printers.length;
- for (i=0; i < printers.length; i++)
- {
- JPanel subPanel = printerInfoPanel( printers[i] );
- mainConst.gridwidth = GridBagConstraints.RELATIVE;
- mainConst.gridx = 0;
- mainConst.gridy = y++;
- mainConst.fill = GridBagConstraints.BOTH;
- mainConst.weightx = 1.0;
- mainConst.weighty = weight;
- mainConst.ipady = 4;
- mainLayout.setConstraints( subPanel, mainConst );
- mainPanel.add(subPanel);
- }
-
- // ------------------------------------------------
- //
- // Put the whole thing into a scroll pane.
- //
- scrollPane = new JScrollPane(mainPanel);
- }
-
-
-
- // -----------------------------------------------------------
- //
- // 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";
- URL iconURL = ClassLoader.getSystemResource(imageName);
- ImageIcon icon = new ImageIcon(iconURL);
- JButton printerButton = new JButton( "<html><center><b>" +
- cp.getPrinterName() +
- "</b></center></html>",
- icon );
- 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 pdNameLabel = new JLabel("Name");
- JLabel pdLocationLabel = new JLabel("Location");
- JLabel pdStatusLabel = new JLabel("Status");
- JLabel pdMessageLabel = new JLabel("Message");
-
- JLabel pdNameText = new JLabel(cp.getPrinterName());
- JLabel pdLocationText = new JLabel(cp.getLocation());
- JLabel pdStatusText = new JLabel(cp.getStateText());
- JLabel pdMessageText = new JLabel(cp.getStateReasons());
-
- pdNameLabel.setFont(labelFont);
- pdLocationLabel.setFont(labelFont);
- pdStatusLabel.setFont(labelFont);
- pdMessageLabel.setFont(labelFont);
- pdMessageText.setFont(messageFont);
-
- 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(4,2,2,2));
- 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(3,2,2,2));
- 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 buildMaskPanel()
- {
-
- // Create the main panel to contain the two sub panels.
- JPanel namePanel = new JPanel();
- GridBagLayout nameLayout = new GridBagLayout();
- GridBagConstraints nameConst = new GridBagConstraints();
-
- namePanel.setLayout(nameLayout);
- namePanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
- namePanel.setBackground(GLPcolors.backgroundColor);
-
-
- //Create a regular text field.
- nameTextField = new JTextField(16);
- nameTextField.setActionCommand(maskFieldString);
- nameTextField.addActionListener(this);
- nameTextField.setText("");
-
- //Create some labels for the fields.
- JLabel nameFieldLabel = new JLabel(maskFieldString);
- nameFieldLabel.setForeground(GLPcolors.foregroundColor);
- nameFieldLabel.setLabelFor(nameTextField);
-
- // Text
- nameConst.gridwidth = GridBagConstraints.RELATIVE;
- nameConst.gridx = 0;
- nameConst.gridy = 0;
- nameConst.fill = GridBagConstraints.HORIZONTAL;
- nameConst.weightx = 0.0;
- nameConst.weighty = 0.0;
- nameConst.ipadx = 4;
- nameConst.ipady = 4;
- nameLayout.setConstraints( nameFieldLabel, nameConst );
- namePanel.add(nameFieldLabel);
-
- nameConst.gridwidth = GridBagConstraints.RELATIVE;
- nameConst.gridx = 1;
- nameConst.gridy = 0;
- nameConst.fill = GridBagConstraints.HORIZONTAL;
- nameConst.weightx = 0.0;
- nameConst.weighty = 0.0;
- nameConst.ipadx = 4;
- nameConst.ipady = 4;
- nameLayout.setConstraints( nameTextField, nameConst );
- namePanel.add(nameTextField);
-
- JButton applyButton = new JButton(maskButtonString);
- applyButton.setBorder(BorderFactory.createCompoundBorder(
- BorderFactory.createRaisedBevelBorder(),
- BorderFactory.createEmptyBorder(2,2,2,2)));
- applyButton.setActionCommand(maskButtonString);
- applyButton.addActionListener(this);
- nameConst.gridx = 2;
- nameConst.gridy = 0;
- nameConst.fill = GridBagConstraints.NONE;
- nameLayout.setConstraints( applyButton, nameConst );
- nameConst.weightx = 0.0;
- nameConst.weighty = 0.0;
- nameConst.ipadx = 4;
- nameConst.ipady = 4;
- namePanel.add(applyButton);
-
- return(namePanel);
- }
-
-
- public void actionPerformed(ActionEvent e)
- {
- if (e.getActionCommand().equals(maskFieldString))
- {
- String s = nameTextField.getText();
- if (s.length() > 1)
- {
- currentMask = s;
- }
- }
- else if (e.getActionCommand().equals(maskButtonString))
- {
- String s = nameTextField.getText();
- if (s.length() > 1)
- {
- currentMask = s;
- }
- }
- else
- {
- GLPvars.selectedPrinterName = e.getActionCommand();
- GLPvars.tabs.updateDetailPanel();
- GLPvars.tabs.tabPanel.setSelectedIndex(2);
- }
- }
-
-
- public JScrollPane getPanel()
- {
- return(scrollPane);
- }
-}