home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 14 / IOPROG_14.ISO / soft / sdkjava / sdkjava.exe / SDKJava.cab / Samples / AFC / FxShapes / Src / BtnPanel.java next >
Encoding:
Java Source  |  1998-03-05  |  5.7 KB  |  170 lines

  1. //
  2. // (c) 1998 Microsoft Corporation.  All rights reserved.
  3. //
  4. import java.awt.Event;
  5. import com.ms.ui.*;
  6. import com.ms.fx.*;
  7.  
  8. class BtnPanel extends UIPanel implements SDKConsts, IFxTextConstants
  9. {
  10.     private UIRadioButton ellipse, line, polygon, rect, roundrect, formattxt, lineoval;
  11.     private UIRadioButton solid, dashed, dotted, textured;
  12.  
  13.     private PaintPnl pntpnl;
  14.     private UIRadioGroup primitives, penstyle;
  15.     private UISpinnerEdit numpoints, penwidth;
  16.     private UIGroup numgrp, widgrp;
  17.  
  18.     public BtnPanel(PaintPnl pntpnl)
  19.     {
  20.         this.pntpnl = pntpnl;
  21.  
  22.         primitives = new UIRadioGroup("Primitive Types");
  23.         ellipse = (UIRadioButton)primitives.add("Ellipse"); ellipse.setID(ID_ELLIPSE);
  24.         line = (UIRadioButton)primitives.add("Line"); line.setID(ID_LINE);
  25.         polygon = (UIRadioButton)primitives.add("Polygon");    polygon.setID(ID_POLY);
  26.         rect = (UIRadioButton)primitives.add("Rectangle"); rect.setID(ID_RECT);
  27.         roundrect = (UIRadioButton)primitives.add("Rounded Rect");    roundrect.setID(ID_ROUNDRECT);
  28.         formattxt = (UIRadioButton)primitives.add("Formatted Text"); formattxt.setID(ID_FORMAT_TEXT);
  29.         lineoval = (UIRadioButton)primitives.add("Lines on Ellipse"); lineoval.setID(ID_LINE_ELLIPSE);
  30.         line.setChecked(true);
  31.  
  32.         // Create numpoints spinedit
  33.         numpoints = new UISpinnerEdit(UISpinner.RAISED, 
  34.                                     UISpinnerEdit.CENTER | UISpinnerEdit.BORDER,
  35.                                     MIN_POINTS, MAX_POINTS, 0, 1, MAX_POINTS);
  36.         UIEdit edit;
  37.         IUIComponent comp = numpoints.getLayoutComponent(UISpinner.BUDDY);
  38.         if ( comp instanceof UIEdit ) { // it very well better be
  39.             edit = (UIEdit)comp;
  40.             edit.setMaxBufferSize(2); edit.setVertAlign(vtaCenter);
  41.             edit.setFont(new FxFont("Dialog", FxFont.BOLD, 14));
  42.         }
  43.  
  44.         penstyle = new UIRadioGroup("Pen Styles");
  45.         solid = (UIRadioButton)penstyle.add("Solid"); solid.setID(ID_SOLID);
  46.         dashed = (UIRadioButton)penstyle.add("Dashed"); dashed.setID(ID_DASH);
  47.         dotted = (UIRadioButton)penstyle.add("Dotted"); dotted.setID(ID_DOT);
  48.         textured = (UIRadioButton)penstyle.add("Textured"); textured.setID(ID_TEXTURE);
  49.         solid.setChecked(true);
  50.  
  51.         // Create penwidth spinedit
  52.         penwidth = new UISpinnerEdit(UISpinner.RAISED, 
  53.                                     UISpinnerEdit.CENTER | UISpinnerEdit.BORDER,
  54.                                     MIN_WIDTH, MAX_WIDTH, 0, 1, INIT_WIDTH);
  55.         comp = penwidth.getLayoutComponent(UISpinner.BUDDY);
  56.         if ( comp instanceof UIEdit ) { // it very well better be
  57.             edit = (UIEdit)comp;
  58.             edit.setMaxBufferSize(2); edit.setVertAlign(vtaCenter);
  59.             edit.setFont(new FxFont("Dialog", FxFont.BOLD, 14));
  60.         }
  61.  
  62.         // Create UIGroup for numpoint
  63.         numgrp = new UIGroup("Polygon #Points");
  64.         numgrp.setEnabled(false);
  65.         numgrp.setLayout(new UIBorderLayout());
  66.         SDKInsetPanelBL ipnl = new SDKInsetPanelBL(2,10,2,10);
  67.         ipnl.add(numpoints, "center"); numgrp.add(ipnl, "center");
  68.  
  69.         // Create UIGroup for penwitdh
  70.         widgrp = new UIGroup("Pen Width");
  71.         widgrp.setLayout(new UIBorderLayout());
  72.         ipnl = new SDKInsetPanelBL(2,10,2,10);
  73.         ipnl.add(penwidth, "center"); widgrp.add(ipnl, "center");
  74.  
  75.         setLayout(new UIVerticalFlowLayout(UIVerticalFlowLayout.FILL, 0));
  76.         add(primitives); add(numgrp); add(penstyle); add(widgrp);
  77.     }
  78.  
  79.     public boolean handleEvent(Event e)
  80.     {
  81.         switch ( e.id ) {
  82.         case Event.LIST_SELECT:
  83.             if ( e.arg instanceof UIButton ) {
  84.                 int id = ((UIButton)e.arg).getID();
  85.  
  86.                 boolean isstyledpen = (dotted.isChecked() || dashed.isChecked());
  87.  
  88.                 switch ( id ) {
  89.                 case ID_LINE: case ID_RECT:
  90.                     penstyle.setEnabled(true);
  91.                     solid.setEnabled(true); dashed.setEnabled(true);
  92.                     dotted.setEnabled(true); textured.setEnabled(true);
  93.                     numgrp.setEnabled(false);
  94.                     if ( !isstyledpen )
  95.                         widgrp.setEnabled(true);
  96.                     else
  97.                         widgrp.setEnabled(false);
  98.                     pntpnl.setDrawMode(id);
  99.                     break;
  100.  
  101.                 case ID_POLY: case ID_ELLIPSE: case ID_ROUNDRECT:
  102.                     penstyle.setEnabled(true);
  103.                     if ( isstyledpen ) {
  104.                         dotted.setChecked(false); dashed.setChecked(false);
  105.                         solid.setChecked(true); pntpnl.setPenStyle(ID_SOLID, false);
  106.                     }
  107.                     widgrp.setEnabled(true);
  108.                     solid.setEnabled(true); dashed.setEnabled(false);
  109.                     dotted.setEnabled(false); textured.setEnabled(true);
  110.                     if ( id == ID_POLY )
  111.                         numgrp.setEnabled(true);
  112.                     else
  113.                         numgrp.setEnabled(false);
  114.                     pntpnl.setDrawMode(id);
  115.                     break;
  116.  
  117.                 case ID_FORMAT_TEXT:
  118.                     penstyle.setEnabled(true);
  119.                     solid.setChecked(true); pntpnl.setPenStyle(ID_SOLID, false);
  120.                     dashed.setChecked(false);
  121.                     dotted.setChecked(false); textured.setChecked(false);
  122.                     solid.setEnabled(true); dashed.setEnabled(false);
  123.                     dotted.setEnabled(false); textured.setEnabled(false);
  124.                     numgrp.setEnabled(false); widgrp.setEnabled(false);
  125.                     pntpnl.setDrawMode(id);
  126.                     break;
  127.  
  128.                 case ID_LINE_ELLIPSE:
  129.                     penstyle.setEnabled(false);
  130.                     numgrp.setEnabled(false); widgrp.setEnabled(false);
  131.                     pntpnl.setDrawMode(id);
  132.                     break;
  133.  
  134.                 case ID_SOLID:
  135.                 case ID_TEXTURE:
  136.                     widgrp.setEnabled(true);
  137.                     pntpnl.setPenStyle(id, true);
  138.                     break;
  139.  
  140.                 case ID_DASH:
  141.                 case ID_DOT:
  142.                     widgrp.setEnabled(false);
  143.                     pntpnl.setPenStyle(id, true);
  144.                     break;
  145.                 }
  146.             }
  147.             break;
  148.  
  149.         case Event.SCROLL_ABSOLUTE:
  150.             if ( e.arg instanceof UISpinnerEdit ) {
  151.                 if ( e.arg == penwidth )
  152.                     penwidth.setScrollPos(penwidth.getScrollPos());
  153.                 else if ( e.arg == numpoints )
  154.                     numpoints.setScrollPos(numpoints.getScrollPos());
  155.             }
  156.             // FALL THROUGH
  157.         case Event.SCROLL_LINE_DOWN:
  158.         case Event.SCROLL_LINE_UP:
  159.             if ( e.arg instanceof UISpinnerEdit ) {
  160.                 if ( e.arg == penwidth )
  161.                     pntpnl.setPenWidth(penwidth.getScrollPos());
  162.                 else if ( e.arg == numpoints )
  163.                     pntpnl.setNumPoints(numpoints.getScrollPos());
  164.             }
  165.             break;
  166.         }
  167.         return(super.handleEvent(e));
  168.     }
  169. }
  170.