home *** CD-ROM | disk | FTP | other *** search
/ The Net: Ultimate Internet Guide / WWLCD1.ISO / pc / java / pr8adpl7 / printrequestor.java < prev    next >
Encoding:
Java Source  |  1996-08-14  |  3.4 KB  |  130 lines

  1. // PrintRequestor
  2. // A general purpose requestor for choosing a printer.
  3. import java.awt.*;
  4. import java.util.Vector;
  5.  
  6. public class PrintRequestor extends FixedFrame
  7. {
  8.     JFScomponent parent;
  9.     Vector pabbr = new Vector();    // known printer abbreviations
  10.     Vector ptype = new Vector();    // printer types
  11.     Vector pdesc = new Vector();    // printer descriptions
  12.     Vector pcomm = new Vector();    // print commands
  13.     DoubleListPanel list;
  14.     Button print, cancel;
  15.  
  16.     PrintRequestor(JFScomponent p, JFSclient client)
  17.     {
  18.     super(new Dimension(300,200));
  19.     parent = p;
  20.  
  21.     // create interface
  22.     setLayout(new BorderLayout());
  23.     add("North",new Label("Server printers"));
  24.     list = new DoubleListPanel("Printer","Type");
  25.     add("Center",list);
  26.     Panel bot = new Panel();
  27.     bot.setLayout(new FlowLayout(FlowLayout.RIGHT));
  28.     bot.add(print = new Button("Print"));
  29.     bot.add(cancel = new Button("Cancel"));
  30.     add("South",bot);
  31.     setTitle("Select a printer");
  32.  
  33.     // fill list with known printers
  34.     try client.getprinters(pabbr, ptype, pdesc, pcomm);
  35.     catch(RequestException e) {
  36.         new ErrorWindow("Could not read printers file");
  37.         return;
  38.         }
  39.     if (pabbr.size() == 0) {
  40.         new ErrorWindow("No printers are defined");
  41.         return;
  42.         }
  43.     for(int i=0; i<pabbr.size(); i++)
  44.         list.addItem((String)pabbr.elementAt(i),
  45.                  (String)ptype.elementAt(i));
  46.     list.select(0);
  47.     pack();
  48.     show();
  49.     }
  50.  
  51.     public boolean handleEvent(Event evt)
  52.     {
  53.     if (evt.id == Event.WINDOW_DESTROY ||
  54.         evt.id == Event.ACTION_EVENT && evt.target == cancel)
  55.         dispose();
  56.     else if (evt.id == Event.ACTION_EVENT && evt.target == print) {
  57.         // Call the parent JFScomponent's print method
  58.         int sel = list.selected();
  59.         try {
  60.             String abbr = (String)pabbr.elementAt(sel),
  61.                    type = (String)ptype.elementAt(sel),
  62.                    desc = (String)pdesc.elementAt(sel);
  63.             parent.print(abbr, type);
  64.             new MessageWindow("Print status","Printing to "+abbr+
  65.                       " ("+desc+") complete");
  66.             }
  67.         catch(RequestException e)
  68.             new ErrorWindow(parent.getClass().getName()+" : "+
  69.                     e.getMessage());
  70.         dispose();
  71.         }
  72.     else if (evt.id == Event.ACTION_EVENT && evt.target == list &&
  73.          ((String)evt.arg).equals("Double")) {
  74.         // Display info about a printer
  75.         int sel = list.selected();
  76.         new PrinterInfo((String)pabbr.elementAt(sel),
  77.                 (String)ptype.elementAt(sel),
  78.                 (String)pdesc.elementAt(sel),
  79.                 (String)pcomm.elementAt(sel));
  80.         }
  81.     return super.handleEvent(evt);
  82.     }
  83. }
  84.  
  85. // PrinterInfo
  86. // A window displaying the details of a printer
  87. class PrinterInfo extends FixedFrame
  88. {
  89.     Button close;
  90.  
  91.     PrinterInfo(String abbr, String type, String desc, String comm)
  92.     {
  93.     super(new Dimension(300,200));
  94.  
  95.     // create user interface
  96.     setLayout(new BorderLayout());
  97.     Panel left = new Panel();
  98.     left.setLayout(new GridLayout(4,1));
  99.     left.add(new Label("Name"));
  100.     left.add(new Label("Type"));
  101.     left.add(new Label("Description"));
  102.     left.add(new Label("Command"));
  103.     add("West",left);
  104.     Panel right = new Panel();
  105.     right.setLayout(new GridLayout(4,1));
  106.     right.add(new StaticTextField(abbr));
  107.     right.add(new StaticTextField(type));
  108.     right.add(new StaticTextField(desc));
  109.     right.add(new StaticTextField(comm));
  110.     add("Center",right);
  111.     Panel bot = new Panel();
  112.     bot.setLayout(new FlowLayout(FlowLayout.RIGHT));
  113.     bot.add(close = new Button("Close"));
  114.     add("South",bot);
  115.  
  116.     setTitle("Printer details");
  117.     pack();
  118.     show();
  119.     }
  120.  
  121.     public boolean handleEvent(Event evt)
  122.     {
  123.     if (evt.id == Event.WINDOW_DESTROY ||
  124.         evt.id == Event.ACTION_EVENT && evt.target == close)
  125.         dispose();
  126.     return super.handleEvent(evt);
  127.     }
  128. }
  129.  
  130.