001    // Copyright (c) 2001 Hursh Jain (http://www.mollypages.org) 
002    // The Molly framework is freely distributable under the terms of an
003    // MIT-style license. For details, see the molly pages web site at:
004    // http://www.mollypages.org/. Use, modify, have fun !
005    
006    package fc.web.simpleforms;
007    
008    import javax.servlet.*;
009    import javax.servlet.http.*;
010    import java.io.*;
011    import java.util.*;
012    
013    import fc.io.*;
014    import fc.util.*;
015    
016    /**
017    Represents an option for a select input type. This class is the
018    fc.web.simpleforms equivalent to the similar class {@link
019    fc.web.forms.Select.Option} found in package fc.web.forms
020    
021    @author hursh jain
022    */
023    public final class SelectOption 
024      {
025      private String  value;
026      private String  text;
027      private boolean orig_selected;
028      
029      /** 
030      Constructs a new option with the specified text and 
031      value of the option tag.
032      
033      @param  text    the html text of the option tag 
034      @param  value   the value of the option tag
035      @param  selected  <tt>true</tt> if this option is selected
036                by default. If more than one selected option
037                is added to a select field and that select
038                field does <b>not</b> have it's multiple
039                attribute set, then the option displayed as
040                selected is browser dependent (Moz1, IE6
041                show the last selected, N4 the first). More
042                than one selected option should not be shown
043                for non multiple select fields anyway.
044      **/
045      public SelectOption(String text, String value, boolean selected) 
046        {
047        this.text = text;
048        this.value = value;
049        this.orig_selected = selected;
050        }
051    
052      /** 
053      Constructs a new unselected option with the specified 
054      text and value of the option tag.
055      
056      @param  text  the html text of the option tag 
057      @param  value the value of the option tag
058      **/
059      public SelectOption(String text, String value) {
060        this(text, value, false);
061        }
062      
063      /** 
064      Constructs a new option with the specified text (and no
065      separate value tag).
066      
067      @param  text    the html text of the option tag 
068      @param  selected  <tt>true</tt> to select this option
069                <tt>false</tt> otherwise
070      **/
071      public SelectOption(String text, boolean selected) {
072        this(text, null, selected);
073        }
074    
075      /** 
076      Constructs a new unselected option with the specified
077      html text and no separate value.
078    
079      @param  text  the html text of the option tag 
080      **/
081      public SelectOption(String text) {
082        this(text, null, false);
083        }
084        
085      boolean selected() {
086        return orig_selected;
087        }
088            
089      /** 
090      Returns the value of this option tag. If no value is set, 
091      returns the html text value for this option tag 
092      **/
093      public String getValue() 
094        {
095        if (value != null)
096          return value;
097        else
098          return text;
099        } 
100        
101      /**
102      Returns the html text for this option.
103      */
104      public String getHTML()
105        {
106        return text;
107        }
108            
109      } //~class SelectOption