home *** CD-ROM | disk | FTP | other *** search
Java Source | 1997-05-08 | 7.6 KB | 271 lines |
- /*
- PC Plus Java program. Using Vectors.
-
- */
-
- import java.awt.*;
- import java.util.*; // !! Remember to import this
-
- public class VectorFrame extends Frame {
-
- // At startup:
- // Create a new Vector
- Vector Vec = new Vector();
-
- void CreateBtn_Clicked(Event event) {
- // generate and add some records automatically
- Vec.addElement(new MP( "Roger Dog", "Minister of Happiness" ));
- Vec.addElement(new MP( "Tessie O'Gritpipe", "Minister of Weather" ));
- Vec.addElement(new MP( "Fiona Tarradiddle", "Minister of Sympathy" ));
- Vec.addElement(new MP( "Dennis Arktripe", "Minister of Lies" ));
- Vec.addElement(new MP( "Ratford Snivell", "Under-secretary of Folly" ));
- showMPs(list1, Vec);
- }
-
- void ClearBtn_Clicked(Event event) {
- // deletes all objects in Vector
- // !! uses methods:
- // !! isEmpty()
- // !! removeAllElements()
- if (Vec.isEmpty())
- MsgDlg( "Error", "Vector is already empty!" );
- else
- {
- Vec.removeAllElements();
- showMPs(list1, Vec);
- }
- }
-
- void FirstBtn_Clicked(Event event) {
- // show first item in Vector
- // !! uses methods:
- // !! isEmpty()
- // !! firstElement()
-
- if (Vec.isEmpty())
- MsgDlg( "Error", "Vector is empty!" );
- else
- MsgDlg( "First item in the Vector", nameAndPos((MP)Vec.firstElement()));
- }
-
- void LastBtn_Clicked(Event event) {
- // show last item in Vector
- // !! uses methods:
- // !! isEmpty()
- // !! lastElement()
- if (Vec.isEmpty())
- MsgDlg( "Error", "Vector is empty!" );
- else
- MsgDlg( "Last item in the Vector", nameAndPos((MP)Vec.lastElement()));
- }
-
- void AddBtn_Clicked(Event event) {
- // Create and add a new record
- // !! uses method:
- // !! addElement( Object )
- if (textFieldsOK())
- Vec.addElement( new MP( NameTF.getText(), PosTF.getText() ) );
- showMPs(list1, Vec);
- }
-
-
- void DelBtn_Clicked(Event event) {
- // !! uses method:
- // !! removeElementAt( index )
- // to delete object from index in Vector
-
- // the selected item in the list box provides an index
- int i = list1.getSelectedIndex();
- if (i < 0)
- MsgDlg( "Error", "No item was selected!" );
- else
- {
- Vec.removeElementAt(i);
- showMPs(list1, Vec);
- // after deletion select item at index of deleted item
- // or at 1 index lower if the final item was deleted
- if (i == (list1.countItems()) )
- list1.select(i-1);
- else
- list1.select(i);
- }
- }
-
- String nameAndPos( MP anMP ) {
- // return a string to display in list box
- return anMP.name + ", " + anMP.position;
- }
-
- void MsgDlg( String title, String msg ) {
- // generic error message: emsg is the string displayed
- // NOTE: Ideally this should display a modal dialog box using this code:
- // MsgDlg md = new MsgDlg(this, true);
- // However, there is a bug in Sun's JDK 1.0.2 which can make it
- // impossible for a modal dialog to shut down again!
- // This problem will not occur if you are using JDK 1.1
- // Nor does it occur in the shipping version of Visual Cafe 1.0
- // However, to avoid potential probems, we have used a non-modal
- // dialog (the false parameter)
-
- MsgDlg md = new MsgDlg(this, false);
- md.setTitle( title );
- md.label1.setText(msg);
- md.show();
- }
-
- boolean textFieldsOK() {
- // check user has entered data to create a new record
- // if OK return true, if not display error message and return false
- if ( ( "".equals(NameTF.getText()) ) ||
- ( "".equals(PosTF.getText()) ) )
- {
- MsgDlg( "Error", "You must enter a name and a position!" );
- return false;
- }
- else return true;
- }
-
-
-
- void showMPs( List l, Vector v) {
- MP anMP;
- // Enumerate through the elements in Vector v and add them,
- // as strings, to the List l
- l.clear();
- for (Enumeration e = v.elements(); e.hasMoreElements(); ) {
- // Cast element to MP to retrieve name and position fields
- anMP = (MP)e.nextElement();
- l.addItem(nameAndPos(anMP));
- }
- }
-
-
-
- public VectorFrame() {
-
- //{{INIT_CONTROLS
- setLayout(null);
- addNotify();
- resize(insets().left + insets().right + 472,insets().top + insets().bottom + 305);
- list1 = new java.awt.List(0,false);
- add(list1);
- list1.reshape(insets().left + 36,insets().top + 24,242,58);
- NameTF = new java.awt.TextField();
- NameTF.reshape(insets().left + 132,insets().top + 180,143,22);
- add(NameTF);
- PosTF = new java.awt.TextField();
- PosTF.reshape(insets().left + 132,insets().top + 216,145,20);
- add(PosTF);
- label1 = new java.awt.Label("Name:");
- label1.reshape(insets().left + 36,insets().top + 180,48,24);
- add(label1);
- label2 = new java.awt.Label("Position:");
- label2.reshape(insets().left + 24,insets().top + 216,60,24);
- add(label2);
- AddBtn = new java.awt.Button("&Add New Record");
- AddBtn.reshape(insets().left + 132,insets().top + 252,149,23);
- add(AddBtn);
- CreateBtn = new java.awt.Button("&Create some Records");
- CreateBtn.reshape(insets().left + 132,insets().top + 276,149,20);
- add(CreateBtn);
- DelBtn = new java.awt.Button("&Delete");
- DelBtn.reshape(insets().left + 300,insets().top + 24,104,17);
- add(DelBtn);
- FirstBtn = new java.awt.Button("Show &First");
- FirstBtn.reshape(insets().left + 300,insets().top + 48,103,15);
- add(FirstBtn);
- LastBtn = new java.awt.Button("Show &Last");
- LastBtn.reshape(insets().left + 300,insets().top + 72,103,15);
- add(LastBtn);
- ClearBtn = new java.awt.Button("Clear &Vector");
- ClearBtn.reshape(insets().left + 300,insets().top + 96,104,15);
- add(ClearBtn);
- setTitle("A Parliamentary Java Application");
- //}}
-
- //{{INIT_MENUS
- //}}
- }
-
- public VectorFrame(String title) {
- this();
- setTitle(title);
- }
-
- public synchronized void show() {
- move(50, 50);
- super.show();
- }
-
- public boolean handleEvent(Event event) {
- if (event.id == Event.WINDOW_DESTROY) {
- hide(); // hide the Frame
- dispose(); // free the system resources
- System.exit(0); // close the application
- return true;
- }
- if (event.target == CreateBtn && event.id == Event.ACTION_EVENT) {
- CreateBtn_Clicked(event);
- return true;
- }
- if (event.target == AddBtn && event.id == Event.ACTION_EVENT) {
- AddBtn_Clicked(event);
- return true;
- }
- if (event.target == DelBtn && event.id == Event.ACTION_EVENT) {
- DelBtn_Clicked(event);
- return true;
- }
- if (event.target == FirstBtn && event.id == Event.ACTION_EVENT) {
- FirstBtn_Clicked(event);
- return true;
- }
- if (event.target == LastBtn && event.id == Event.ACTION_EVENT) {
- LastBtn_Clicked(event);
- return true;
- }
- if (event.target == ClearBtn && event.id == Event.ACTION_EVENT) {
- ClearBtn_Clicked(event);
- return true;
- }
- return super.handleEvent(event);
- }
-
- public boolean action(Event event, Object arg) {
- if (event.target instanceof MenuItem) {
- }
- return super.action(event, arg);
- }
-
- static public void main(String args[]) {
- (new VectorFrame()).show();
- }
-
- //{{DECLARE_CONTROLS
- java.awt.List list1;
- java.awt.TextField NameTF;
- java.awt.TextField PosTF;
- java.awt.Label label1;
- java.awt.Label label2;
- java.awt.Button AddBtn;
- java.awt.Button CreateBtn;
- java.awt.Button DelBtn;
- java.awt.Button FirstBtn;
- java.awt.Button LastBtn;
- java.awt.Button ClearBtn;
- //}}
-
- //{{DECLARE_MENUS
- //}}
- }
- // class MP
- class MP {
- String name;
- String position;
-
- MP( String aName, String aPosition ){
- this.name = aName;
- this.position = aPosition;
- }
- }
-