home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / win95 / sieciowe / hotja32.lzh / hotjava / classsrc / awt / optionmenu.java < prev    next >
Text File  |  1995-08-11  |  4KB  |  155 lines

  1. /*
  2.  * @(#)OptionMenu.java    1.15 95/02/03 Sami Shaio
  3.  *
  4.  * Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved.
  5.  *
  6.  * Permission to use, copy, modify, and distribute this software
  7.  * and its documentation for NON-COMMERCIAL purposes and without
  8.  * fee is hereby granted provided that this copyright notice
  9.  * appears in all copies. Please refer to the file "copyright.html"
  10.  * for further important copyright and licensing information.
  11.  *
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
  13.  * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  14.  * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  15.  * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
  16.  * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  17.  * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
  18.  */
  19. package awt;
  20.  
  21. import java.util.*;
  22.  
  23. /**
  24.  * OptionMenu is a pop-up menu of choices. The current choice is
  25.  * displayed as the title of the menu.
  26.  *
  27.  * @version 1.15 03 Feb 1995
  28.  * @author Sami Shaio
  29.  */
  30. public class OptionMenu extends Component {
  31.     private    WServer    wServer;
  32.     private Vector pItems;
  33.     private int sIndex = 0;
  34.  
  35.     /** the index of the current choice for this OptionMenu */
  36.     public int selectedIndex = 0;
  37.  
  38.     /** Constructs an OptionMenu.
  39.      * @param p is the parent window to contain this OptionMenu
  40.      * @param label is a string describing the OptionMenu. It can be
  41.      * null. 
  42.      * @param pName is the name of this OptionMenu. This name may be
  43.      * signficant for layout purposes. 
  44.      * @see awt.BorderLayout
  45.      */
  46.     public OptionMenu(Container p,
  47.               String label,
  48.               String pName) {
  49.     super(p, pName);
  50.     Window win = Window.getWindow(p);
  51.     wServer = win.wServer;
  52.     wServer.optionMenuCreate(this, win, label);
  53.     pItems = new Vector();
  54.     }
  55.  
  56.     /**
  57.      * Adds an item to this OptionMenu.
  58.      */
  59.     public void addItem(String item) {
  60.     wServer.optionMenuAddItem(this, item, pItems.size());
  61.     pItems.addElement(item);
  62.     }
  63.  
  64.     /**
  65.      * Adds a separator line to the current position in the OptionMenu.
  66.      */
  67.     public void addSeparator() {
  68.     wServer.optionMenuAddSeparator(this, sIndex++);
  69.     }
  70.  
  71.     public Dimension getPreferredSize() {
  72.     wServer.optionMenuDimensions(this);
  73.     return new Dimension(width, height);
  74.     }
  75.  
  76.     /**
  77.      * Returns the number of items in this OptionMenu. Separators
  78.      * don't count.
  79.      */
  80.     public int nItems() {
  81.     return pItems.size();
  82.     }
  83.  
  84.     /**
  85.      * Returns the String at the given index in the OptionMenu.
  86.      */
  87.     public String itemAt(int index) {
  88.     return (String)pItems.elementAt(index);
  89.     }
  90.  
  91.     /**
  92.      * Overrides this method to take some action whenever the current
  93.      * choice for the OptionMenu changes.
  94.      * @param index is the index of the current choice.
  95.      */
  96.     public void selected(int index) {
  97.     }
  98.  
  99.     /**
  100.      * Returns the current choice as a String.
  101.      */
  102.     public String selectedItem() {
  103.     return itemAt(selectedIndex);
  104.     }
  105.  
  106.     /**
  107.      * Select the given item.
  108.      */
  109.     public void select(int pos) {
  110.     if (pItems.size() > 0) {
  111.         wServer.optionMenuSelect(this, pos);
  112.         selectedIndex = pos;
  113.     }
  114.     }
  115.  
  116.     /**
  117.      * Disposes of this OptionMenu. It should not be used afterwards.
  118.      */
  119.     public void dispose() {
  120.     wServer.optionMenuDispose(this);
  121.     }
  122.  
  123.     /**
  124.      * Moves this OptionMenu.
  125.      */
  126.     public void move(int X, int Y) {
  127.     super.move(X,Y);
  128.     wServer.optionMenuMoveTo(this, X, Y);
  129.     }
  130.  
  131.     /**
  132.      * Reshapes this OptionMenu.
  133.      */
  134.     public void reshape(int x, int y, int w, int h) {
  135.     super.reshape(x, y, w, h);
  136.     wServer.optionMenuReshape(this, x, y, w, h);
  137.     }
  138.  
  139.     /**
  140.      * Shows this OptionMenu.
  141.      */
  142.     public void map() {
  143.     wServer.optionMenuShow(this);
  144.     mapped = true;
  145.     }
  146.  
  147.     /**
  148.      * Hides this OptionMenu.
  149.      */
  150.     public void unMap() {
  151.     wServer.optionMenuHide(this);
  152.     mapped = false;
  153.     }
  154. }
  155.