home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 14 / IOPROG_14.ISO / soft / sdkjava / sdkjava.exe / SDKJava.cab / AFC102 / Samples / BandsnMenus / Src / SDKCtrlPnl.java < prev    next >
Encoding:
Java Source  |  1998-03-05  |  3.8 KB  |  142 lines

  1. //
  2. // (c) 1997 Microsoft Corporation.  All rights reserved.
  3. //
  4. import java.awt.Event;
  5. import java.awt.Insets;
  6. import com.ms.ui.*;
  7.  
  8. public class SDKCtrlPnl extends UIPanel implements SDKConsts, SDKCallbacks
  9. {
  10.     private int idx[] = { 0, 0, 0 };
  11.     private UIDrawText info;
  12.  
  13.     public SDKCtrlPnl(UIApplet applet, UIFrame frame)
  14.     {
  15.         SDKImages.init(applet, frame);
  16.  
  17.         setLayout(new UIBorderLayout(0,0));
  18.  
  19.         // Create main UIGroup, add to this UIPanel
  20.         UIGroup group = new UIGroup("BANDS & MENUS");
  21.         add(group, "Center");
  22.  
  23.         // Get panel from main UIGroup
  24.         group.setLayout(new UIBorderLayout(5, 5));
  25.  
  26.         UIBandBox box = new UIBandBox();
  27.         group.add(box, "North");
  28.  
  29.         UIBand venus = new UIBand("Venus"); box.add(venus);
  30.         UIBand earth = new UIBand("Earth"); box.add(earth);
  31.         UIBand mars = new UIBand("Mars", UIBand.BREAK); box.add(mars);
  32.  
  33.         // Create Venus menu
  34.         UIMenuList mnulst = new UIMenuList();
  35.         UIMenuItem mnuitm = new UIMenuItem("Planet Information");
  36.         mnuitm.setID(ID_VENUS); mnulst.add(mnuitm);
  37.         UIMenuButton btn = new UIMenuButton(new UIGraphic(SDKImages.get(VENUS)), mnulst);
  38.         venus.add(btn);
  39.  
  40.         // Create Earth menus
  41.         mnulst = new UIMenuList();
  42.         mnuitm = new UIMenuItem("Planet Information");
  43.         mnuitm.setID(ID_EARTH); mnulst.add(mnuitm);
  44.         btn = new UIMenuButton(new UIGraphic(SDKImages.get(EARTH)), mnulst);
  45.         earth.add(btn);
  46.         btn = new UIMenuButton(new UIText("Geology"), buildMenu(0));
  47.         earth.add(btn);
  48.  
  49.         // Create Mars menu
  50.         mnulst = new UIMenuList();
  51.         mnuitm = new UIMenuItem("Planet Information");
  52.         mnuitm.setID(ID_MARS); mnulst.add(mnuitm);
  53.         btn = new UIMenuButton(new UIGraphic(SDKImages.get(MARS)), mnulst);
  54.         mars.add(btn);
  55.  
  56.         // Initialize info panel to Venus info
  57.         info = new UIDrawText(INFO[ID_VENUS-ID_BASE]);
  58.         info.setWordWrap(UIDrawText.wwKeepWordIntact);
  59.  
  60.         // Create info UIGroup
  61.         UIGroup infogrp = new UIGroup("Information");
  62.         infogrp.setLayout(new UIBorderLayout());
  63.         infogrp.add(new UIScrollViewer(info), "Center");
  64.         group.add(infogrp, "Center");
  65.     }
  66.  
  67.     private UIMenuList buildMenu(int depth)
  68.     {
  69.         UIMenuList sublist, list = null;
  70.         UIMenuItem subitem;
  71.         String str;
  72.  
  73.         try {
  74.             while ( true ) {
  75.                 // trigger AIOOBE
  76.                 switch ( depth ) {
  77.                 case 0: str = GeoERA.NAME[idx[0]]; break;
  78.                 case 1: str = GeoPERIOD.NAME[idx[0]][idx[1]]; break;
  79.                 case 2: str = GeoEPOCH.NAME[idx[0]][idx[1]][idx[2]]; break;
  80.                 case 3: return null;
  81.                 }
  82.                 // If we get to here there is a subnode to header
  83.                 if ( idx[depth] == 0 )
  84.                     list = new UIMenuList();
  85.  
  86.                 sublist = buildMenu(depth+1);
  87.                 subitem = makeMenuItem(depth, sublist);
  88.                 list.add(subitem);
  89.                 idx[depth]++;
  90.             }
  91.         }
  92.         catch ( ArrayIndexOutOfBoundsException e ) {
  93.             if ( idx[depth] != 0 ) { // Were there any nodes at this level?
  94.                 idx[depth] = 0; // Reset counter at this depth
  95.                 return list;
  96.             }
  97.             else
  98.                 return null;
  99.         }
  100.     }
  101.  
  102.     private UIMenuItem makeMenuItem(int depth, UIMenuList list)
  103.     {
  104.         UIMenuItem item;
  105.  
  106.         switch ( depth ) {
  107.         case 0:
  108.             item = new UIMenuItem(GeoERA.NAME[idx[0]], list);
  109.             item.setID(GeoERA.ID[idx[0]]);
  110.             return item;
  111.         case 1:
  112.             item = new UIMenuItem(GeoPERIOD.NAME[idx[0]][idx[1]], list);
  113.             item.setID(GeoPERIOD.ID[idx[0]][idx[1]]);
  114.             return item;
  115.         case 2:
  116.             item = new UIMenuItem(GeoEPOCH.NAME[idx[0]][idx[1]][idx[2]], list);
  117.             item.setID(GeoEPOCH.ID[idx[0]][idx[1]][idx[2]]);
  118.             return item;
  119.         }
  120.         return null;
  121.     }
  122.  
  123.     public boolean action(Event e, Object arg)
  124.     {
  125.         if ( arg instanceof UIMenuItem )
  126.         {
  127.             int id = ((IUIComponent)arg).getID();
  128.  
  129.             if ( (id >= ID_BASE) && (id < ID_BASE+NUM_INFO) ) {
  130.                 info.setValueText(INFO[id - ID_BASE]);
  131.                 info.setValid(true);
  132.                 return true;
  133.             }
  134.         }
  135.         return super.action(e, arg);
  136.     }
  137.  
  138.     public void setInitialFocus() { }
  139.  
  140.     public Insets getInsets() { return new Insets(5,5,5,5); }
  141. }
  142.