home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD 12 / 12_pcplus_supercd.iso / Pcplus / JAVA / VECTORS / VECTORFRAME.JAVA < prev   
Encoding:
Java Source  |  1997-05-08  |  7.6 KB  |  271 lines

  1. /*
  2.     PC Plus Java program. Using Vectors.
  3.     
  4.  */
  5.  
  6. import java.awt.*;
  7. import java.util.*; // !! Remember to import this 
  8.  
  9. public class VectorFrame extends Frame {
  10.  
  11.     // At startup: 
  12.     // Create a new Vector
  13.     Vector Vec = new Vector();
  14.  
  15.     void CreateBtn_Clicked(Event event) {
  16.         // generate and add some records automatically
  17.         Vec.addElement(new MP( "Roger Dog", "Minister of Happiness" ));
  18.         Vec.addElement(new MP( "Tessie O'Gritpipe", "Minister of Weather" ));
  19.         Vec.addElement(new MP( "Fiona Tarradiddle", "Minister of Sympathy" ));
  20.         Vec.addElement(new MP( "Dennis Arktripe", "Minister of Lies" ));
  21.         Vec.addElement(new MP( "Ratford Snivell", "Under-secretary of Folly" ));
  22.         showMPs(list1, Vec);
  23.     }
  24.  
  25.     void ClearBtn_Clicked(Event event) {
  26.         // deletes all objects in Vector
  27.         // !! uses methods:
  28.         // !! isEmpty()
  29.         // !! removeAllElements()
  30.         if (Vec.isEmpty())
  31.            MsgDlg( "Error", "Vector is already empty!" );
  32.         else
  33.         {
  34.             Vec.removeAllElements();    
  35.             showMPs(list1, Vec);
  36.         }          
  37.     }
  38.  
  39.     void FirstBtn_Clicked(Event event) {
  40.         // show first item in Vector
  41.         // !! uses methods: 
  42.         // !! isEmpty()
  43.         // !! firstElement()
  44.         
  45.         if (Vec.isEmpty())
  46.            MsgDlg( "Error", "Vector is empty!" );
  47.         else
  48.            MsgDlg( "First item in the Vector", nameAndPos((MP)Vec.firstElement()));
  49.     }
  50.  
  51.     void LastBtn_Clicked(Event event) {
  52.         // show last item in Vector
  53.         // !! uses methods: 
  54.         // !! isEmpty()
  55.         // !! lastElement()
  56.         if (Vec.isEmpty())
  57.            MsgDlg( "Error", "Vector is empty!" );
  58.         else
  59.            MsgDlg( "Last item in the Vector", nameAndPos((MP)Vec.lastElement()));
  60.     }
  61.  
  62.     void AddBtn_Clicked(Event event) {
  63.         // Create and add a new record
  64.         // !! uses method:
  65.         // !! addElement( Object )
  66.         if (textFieldsOK())
  67.             Vec.addElement( new MP( NameTF.getText(), PosTF.getText() ) );
  68.             showMPs(list1, Vec);
  69.     }
  70.  
  71.         
  72.     void DelBtn_Clicked(Event event) {
  73.         // !! uses method: 
  74.         // !! removeElementAt( index )
  75.         // to delete object from index in Vector
  76.         
  77.         // the selected item in the list box provides an index 
  78.         int i = list1.getSelectedIndex();
  79.         if (i < 0)
  80.           MsgDlg( "Error", "No item was selected!" ); 
  81.         else
  82.         {
  83.           Vec.removeElementAt(i);
  84.           showMPs(list1, Vec);
  85.           // after deletion select item at index of deleted item
  86.           // or at 1 index lower if the final item was deleted
  87.           if (i == (list1.countItems()) ) 
  88.             list1.select(i-1); 
  89.           else
  90.             list1.select(i);
  91.         }
  92.     }
  93.  
  94.     String nameAndPos( MP anMP ) {
  95.         // return a string to display in list box
  96.          return anMP.name + ", " + anMP.position;
  97.     }
  98.     
  99.     void MsgDlg( String title, String msg ) {
  100.         // generic error message: emsg is the string displayed
  101. // NOTE: Ideally this should display a modal dialog box using this code:               
  102. // MsgDlg md = new MsgDlg(this, true);
  103. // However, there is a bug in Sun's JDK 1.0.2 which can make it
  104. // impossible for a modal dialog to shut down again!
  105. // This problem will not occur if you are using JDK 1.1
  106. // Nor does it occur in the shipping version of Visual Cafe 1.0 
  107. // However, to avoid potential probems, we have used a non-modal
  108. // dialog (the false parameter)
  109.  
  110.         MsgDlg md = new MsgDlg(this, false);
  111.         md.setTitle( title );
  112.         md.label1.setText(msg);
  113.         md.show(); 
  114.     }
  115.     
  116.     boolean textFieldsOK() {
  117.         // check user has entered data to create a new record
  118.         // if OK return true, if not display error message and return false
  119.         if ( ( "".equals(NameTF.getText()) ) ||
  120.              ( "".equals(PosTF.getText())  )  ) 
  121.              {
  122.                 MsgDlg( "Error", "You must enter a name and a position!" );
  123.                 return false;
  124.              }
  125.         else return true;        
  126.     }
  127.     
  128.  
  129.     
  130.     void showMPs( List l, Vector v) {
  131.         MP anMP;
  132.         // Enumerate through the elements in Vector v and add them,
  133.         // as strings, to the List l
  134.         l.clear();
  135.         for (Enumeration e = v.elements(); e.hasMoreElements(); ) {
  136.             // Cast element to MP to retrieve name and position fields
  137.             anMP = (MP)e.nextElement();
  138.             l.addItem(nameAndPos(anMP));
  139.         }
  140.     }
  141.  
  142.  
  143.  
  144.     public VectorFrame() {
  145.  
  146.         //{{INIT_CONTROLS
  147.         setLayout(null);
  148.         addNotify();
  149.         resize(insets().left + insets().right + 472,insets().top + insets().bottom + 305);
  150.         list1 = new java.awt.List(0,false);
  151.         add(list1);
  152.         list1.reshape(insets().left + 36,insets().top + 24,242,58);
  153.         NameTF = new java.awt.TextField();
  154.         NameTF.reshape(insets().left + 132,insets().top + 180,143,22);
  155.         add(NameTF);
  156.         PosTF = new java.awt.TextField();
  157.         PosTF.reshape(insets().left + 132,insets().top + 216,145,20);
  158.         add(PosTF);
  159.         label1 = new java.awt.Label("Name:");
  160.         label1.reshape(insets().left + 36,insets().top + 180,48,24);
  161.         add(label1);
  162.         label2 = new java.awt.Label("Position:");
  163.         label2.reshape(insets().left + 24,insets().top + 216,60,24);
  164.         add(label2);
  165.         AddBtn = new java.awt.Button("&Add New Record");
  166.         AddBtn.reshape(insets().left + 132,insets().top + 252,149,23);
  167.         add(AddBtn);
  168.         CreateBtn = new java.awt.Button("&Create some Records");
  169.         CreateBtn.reshape(insets().left + 132,insets().top + 276,149,20);
  170.         add(CreateBtn);
  171.         DelBtn = new java.awt.Button("&Delete");
  172.         DelBtn.reshape(insets().left + 300,insets().top + 24,104,17);
  173.         add(DelBtn);
  174.         FirstBtn = new java.awt.Button("Show &First");
  175.         FirstBtn.reshape(insets().left + 300,insets().top + 48,103,15);
  176.         add(FirstBtn);
  177.         LastBtn = new java.awt.Button("Show &Last");
  178.         LastBtn.reshape(insets().left + 300,insets().top + 72,103,15);
  179.         add(LastBtn);
  180.         ClearBtn = new java.awt.Button("Clear &Vector");
  181.         ClearBtn.reshape(insets().left + 300,insets().top + 96,104,15);
  182.         add(ClearBtn);
  183.         setTitle("A Parliamentary Java Application");
  184.         //}}
  185.  
  186.         //{{INIT_MENUS
  187.         //}}
  188.     }
  189.  
  190.     public VectorFrame(String title) {
  191.         this();
  192.         setTitle(title);
  193.     }
  194.  
  195.     public synchronized void show() {
  196.         move(50, 50);
  197.         super.show();
  198.     }
  199.  
  200.     public boolean handleEvent(Event event) {
  201.         if (event.id == Event.WINDOW_DESTROY) {
  202.             hide();         // hide the Frame
  203.             dispose();      // free the system resources
  204.             System.exit(0); // close the application
  205.             return true;
  206.         }
  207.         if (event.target == CreateBtn && event.id == Event.ACTION_EVENT) {
  208.             CreateBtn_Clicked(event);
  209.             return true;
  210.         }
  211.         if (event.target == AddBtn && event.id == Event.ACTION_EVENT) {
  212.             AddBtn_Clicked(event);
  213.             return true;
  214.         }
  215.         if (event.target == DelBtn && event.id == Event.ACTION_EVENT) {
  216.             DelBtn_Clicked(event);
  217.             return true;
  218.         }
  219.         if (event.target == FirstBtn && event.id == Event.ACTION_EVENT) {
  220.             FirstBtn_Clicked(event);
  221.             return true;
  222.         }
  223.         if (event.target == LastBtn && event.id == Event.ACTION_EVENT) {
  224.             LastBtn_Clicked(event);
  225.             return true;
  226.         }
  227.         if (event.target == ClearBtn && event.id == Event.ACTION_EVENT) {
  228.             ClearBtn_Clicked(event);
  229.             return true;
  230.         }
  231.         return super.handleEvent(event);
  232.     }
  233.  
  234.     public boolean action(Event event, Object arg) {
  235.         if (event.target instanceof MenuItem) {
  236.         }
  237.         return super.action(event, arg);
  238.     }
  239.  
  240.     static public void main(String args[]) {
  241.         (new VectorFrame()).show();
  242.     }
  243.  
  244.     //{{DECLARE_CONTROLS
  245.     java.awt.List list1;
  246.     java.awt.TextField NameTF;
  247.     java.awt.TextField PosTF;
  248.     java.awt.Label label1;
  249.     java.awt.Label label2;
  250.     java.awt.Button AddBtn;
  251.     java.awt.Button CreateBtn;
  252.     java.awt.Button DelBtn;
  253.     java.awt.Button FirstBtn;
  254.     java.awt.Button LastBtn;
  255.     java.awt.Button ClearBtn;
  256.     //}}
  257.  
  258.     //{{DECLARE_MENUS
  259.     //}}
  260. }
  261. // class MP 
  262. class MP {
  263.     String name;
  264.     String position;
  265.     
  266.     MP( String aName, String aPosition ){
  267.         this.name = aName;
  268.         this.position = aPosition;
  269.     }
  270. }
  271.