home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / lotus / eSuite.exe / eSuiteDPP / samples / weatherchart / Banner.java < prev    next >
Text File  |  1998-01-09  |  10KB  |  324 lines

  1. //******************************************************************************
  2. /* Banner.java
  3.  
  4.    Description:    Simple text-banner applet.
  5.    Author:        F Salazar
  6.    Create:        30 July, 1997
  7.    
  8.    Copyright (C) 1997, Lotus Development Corporation.  All Rights Reserved.
  9. */
  10. //******************************************************************************
  11. /*******************************************************************************
  12.     Change History:
  13.  
  14.     $Log:   //reebok/xyzL/JavaComp/webpack/samples/weatherchart/Banner.java  
  15.   
  16.      Rev 1.4.2.1   09 Jan 1998 10:51:52   jdonohue
  17.   Change package name to samples.weatherchart
  18.   
  19.      Rev 1.4   09 Sep 1997 09:48:20   fsalazar
  20.   Added back-, foreground color support.
  21.   
  22.      Rev 1.3   05 Aug 1997 10:15:42   fsalazar
  23.   Use webpack.samples.weatherchart package name.
  24.   
  25.      Rev 1.2   31 Jul 1997 11:48:48   fsalazar
  26.   Correct deprecated warnings, errors.
  27.   
  28.      Rev 1.1   31 Jul 1997 09:50:22   fsalazar
  29.   Added PVCS log keyword.
  30.  
  31. *******************************************************************************/
  32.  
  33. package samples.weatherchart;
  34.  
  35. import java.applet.*;
  36. import java.awt.*;
  37.  
  38. //==============================================================================
  39. // Main Class for applet Banner
  40. //
  41. //==============================================================================
  42. public class Banner extends Applet
  43. {
  44.     // Font for drawing banner
  45.     private Font    m_Font;
  46.  
  47.  
  48.     // PARAMETER SUPPORT:
  49.     //        Parameters allow an HTML author to pass information to the applet;
  50.     // the HTML author specifies them using the <PARAM> tag within the <APPLET>
  51.     // tag.  The following variables are used to store the values of the
  52.     // parameters.
  53.     //--------------------------------------------------------------------------
  54.  
  55.     // Members for applet parameters
  56.     // <type>       <MemberVar>    = <Default Value>
  57.     //--------------------------------------------------------------------------
  58.     private String m_sFont = "Helvetica";
  59.     private int m_iSize = 18;
  60.     private boolean m_bBold = false;
  61.     private boolean m_bItalic = false;
  62.     private String m_sText = "[Banner text]";
  63.     private int m_iAlign = 0;
  64.     private String m_sBackColor = null;
  65.     private String m_sForeColor = null;
  66.  
  67.     // Parameter names.  To change a name of a parameter, you need only make
  68.     // a single change.  Simply modify the value of the parameter string below.
  69.     //--------------------------------------------------------------------------
  70.     private final String PARAM_FONT = "FONT";
  71.     private final String PARAM_SIZE = "SIZE";
  72.     private final String PARAM_BOLD = "BOLD";
  73.     private final String PARAM_ITALIC = "ITALIC";
  74.     private final String PARAM_TEXT = "TEXT";
  75.     private final String PARAM_ALIGN = "ALIGN";
  76.     private final String PARAM_BACKGROUNDCOLOR = "BACKGROUNDCOLOR";
  77.     private final String PARAM_FOREGROUNDCOLOR = "FOREGROUNDCOLOR";
  78.  
  79.  
  80.     // Banner Class Constructor
  81.     //--------------------------------------------------------------------------
  82.     public Banner()
  83.     {
  84.         // TODO: Add constructor code here
  85.     }
  86.  
  87.     // APPLET INFO SUPPORT:
  88.     //        The getAppletInfo() method returns a string describing the applet's
  89.     // author, copyright date, or miscellaneous information.
  90.     //--------------------------------------------------------------------------
  91.     public String getAppletInfo()
  92.     {
  93.         return "Name: Banner\r\n" +
  94.                "Author: Lotus Development Corp.";
  95.     }
  96.  
  97.     // PARAMETER SUPPORT
  98.     //        The getParameterInfo() method returns an array of strings describing
  99.     // the parameters understood by this applet.
  100.     //
  101.     // Banner Parameter Information:
  102.     //  { "Name", "Type", "Description" },
  103.     //--------------------------------------------------------------------------
  104.     public String[][] getParameterInfo()
  105.     {
  106.         String[][] info =
  107.         {
  108.             { PARAM_FONT, "String", "Font-name for banner." },
  109.             { PARAM_SIZE, "int", "Font-size for banner." },
  110.             { PARAM_BOLD, "boolean", "Bold style." },
  111.             { PARAM_ITALIC, "boolean", "Italic style." },
  112.             { PARAM_TEXT, "String", "Display text." },
  113.             { PARAM_ALIGN, "int", "Text alignment." },
  114.             { PARAM_BACKGROUNDCOLOR, "String", "Background color" },
  115.             { PARAM_FOREGROUNDCOLOR, "String", "Foreground color" }
  116.         };
  117.         return info;        
  118.     }
  119.  
  120.     // The init() method is called by the AWT when an applet is first loaded or
  121.     // reloaded.  Override this method to perform whatever initialization your
  122.     // applet needs, such as initializing data structures, loading images or
  123.     // fonts, creating frame windows, setting the layout manager, or adding UI
  124.     // components.
  125.     //--------------------------------------------------------------------------
  126.     public void init()
  127.     {
  128.         // PARAMETER SUPPORT
  129.         //        The following code retrieves the value of each parameter
  130.         // specified with the <PARAM> tag and stores it in a member
  131.         // variable.
  132.         //----------------------------------------------------------------------
  133.         String param;
  134.  
  135.         // FONT: Font-name for banner.
  136.         //----------------------------------------------------------------------
  137.         param = getParameter(PARAM_FONT);
  138.         if (param != null)
  139.             m_sFont = param;
  140.  
  141.         // SIZE: Font-size for banner.
  142.         //----------------------------------------------------------------------
  143.         param = getParameter(PARAM_SIZE);
  144.         if (param != null)
  145.             m_iSize = Integer.parseInt(param);
  146.  
  147.         // BOLD: Bold style.
  148.         //----------------------------------------------------------------------
  149.         param = getParameter(PARAM_BOLD);
  150.         if (param != null)
  151.             m_bBold = Boolean.valueOf(param).booleanValue();
  152.  
  153.         // ITALIC: Italic style.
  154.         //----------------------------------------------------------------------
  155.         param = getParameter(PARAM_ITALIC);
  156.         if (param != null)
  157.             m_bItalic = Boolean.valueOf(param).booleanValue();
  158.  
  159.         // TEXT: Display text.
  160.         //----------------------------------------------------------------------
  161.         param = getParameter(PARAM_TEXT);
  162.         if (param != null)
  163.             m_sText = param;
  164.  
  165.         // ALIGN: Text alignment.
  166.         //----------------------------------------------------------------------
  167.         param = getParameter(PARAM_ALIGN);
  168.         if (param != null)
  169.             m_iAlign = Integer.parseInt(param);
  170.  
  171.  
  172.         // BACKGROUNDCOLOR: Background color
  173.         //----------------------------------------------------------------------
  174.         param = getParameter(PARAM_BACKGROUNDCOLOR);
  175.         if (param != null)
  176.             m_sBackColor = param;
  177.  
  178.         // FOREGROUNDCOLOR: Foreground color
  179.         //----------------------------------------------------------------------
  180.         param = getParameter(PARAM_FOREGROUNDCOLOR);
  181.         if (param != null)
  182.             m_sForeColor = param;
  183.  
  184.  
  185.         // TODO: Place additional initialization code here
  186.         setupDraw();
  187.     }
  188.  
  189.     // Place additional applet clean up code here.  destroy() is called when
  190.     // when you applet is terminating and being unloaded.
  191.     //-------------------------------------------------------------------------
  192.     public void destroy()
  193.     {
  194.         // TODO: Place applet cleanup code here
  195.     }
  196.  
  197.  
  198.     // Banner Paint Handler
  199.     //--------------------------------------------------------------------------
  200.     public void paint(Graphics g)
  201.     {
  202.         int            x = 0, y = 0, sw = 0, sh = 0;
  203.         Dimension    d = getSize();
  204.         FontMetrics    m;
  205.  
  206.  
  207.         if ( null == m_Font )
  208.             return;
  209.  
  210.  
  211.         g.setFont( m_Font );
  212.         m = g.getFontMetrics();
  213.         sw = m.stringWidth( m_sText );
  214.         sh = m.getAscent();
  215.  
  216.         // handle alignment
  217.         switch( m_iAlign )
  218.         {
  219.             case 0:        // left
  220.                 x = 0;
  221.                 y = sh;
  222.                 break;
  223.  
  224.             case 1:        // center
  225.                 x = ( d.width / 2 ) - ( sw / 2 );
  226.                 y = sh;
  227.                 break;
  228.  
  229.             case 2:        // right
  230.                 x = d.width - sw;
  231.                 y = sh;
  232.                 break;
  233.         }
  234.         g.drawString( m_sText, x, y );
  235.     }
  236.  
  237.     //        The start() method is called when the page containing the applet
  238.     // first appears on the screen. The AppletWizard's initial implementation
  239.     // of this method starts execution of the applet's thread.
  240.     //--------------------------------------------------------------------------
  241.     public void start()
  242.     {
  243.         // TODO: Place additional applet start code here
  244.     }
  245.     
  246.     //        The stop() method is called when the page containing the applet is
  247.     // no longer on the screen. The AppletWizard's initial implementation of
  248.     // this method stops execution of the applet's thread.
  249.     //--------------------------------------------------------------------------
  250.     public void stop()
  251.     {
  252.     }
  253.  
  254.  
  255.  
  256.     protected Color colorFromString( String s )
  257.     {
  258.         String    sHexFmt = new String( "0x" );
  259.         String    lStr, cStr;
  260.         Color    c = null;
  261.         Integer    i = null;
  262.         int        idx, radix = 10;
  263.  
  264.  
  265.         if ( null == s )
  266.             return null;
  267.  
  268.  
  269.         lStr = s.toLowerCase();
  270.  
  271.         c = Color.getColor( lStr );
  272.         if ( c != null )
  273.             return c;
  274.  
  275.         try
  276.         {
  277.             idx = lStr.indexOf( sHexFmt );
  278.             if ( idx >= 0 )
  279.             {
  280.                 lStr = lStr.substring( idx + sHexFmt.length() );
  281.                 radix = 16;
  282.             }
  283.  
  284.             i = Integer.valueOf( lStr, radix );
  285.  
  286.             if ( null != i )
  287.                 c = new Color( i.intValue() );
  288.             }
  289.         catch( Exception e )
  290.         {
  291.             c = null;
  292.         }
  293.  
  294.         return c;
  295.     }
  296.  
  297.  
  298.     // setupDraw : Create needed font for text
  299.     protected void setupDraw()
  300.     {
  301.         Color    c = null;
  302.         int        style = Font.PLAIN;
  303.  
  304.         if ( m_bBold )            style += Font.BOLD;
  305.         if ( m_bItalic )        style += Font.ITALIC;
  306.  
  307.         m_Font = new Font( m_sFont, style, m_iSize );
  308.  
  309.         c = colorFromString( m_sBackColor );
  310.         if ( c != null )
  311.             setBackground( c );
  312.  
  313.         c = colorFromString( m_sForeColor );
  314.         if ( c != null )
  315.             setForeground( c );
  316.     }
  317.  
  318.     public void setText( String s )
  319.     {
  320.         m_sText = s;
  321.         repaint();
  322.     }
  323. }
  324.