View Javadoc

    1   /*
    2    * $Id: FrameTag.java 471754 2006-11-06 14:55:09Z husted $
    3    *
    4    * Licensed to the Apache Software Foundation (ASF) under one
    5    * or more contributor license agreements.  See the NOTICE file
    6    * distributed with this work for additional information
    7    * regarding copyright ownership.  The ASF licenses this file
    8    * to you under the Apache License, Version 2.0 (the
    9    * "License"); you may not use this file except in compliance
    10   * with the License.  You may obtain a copy of the License at
    11   *
    12   *  http://www.apache.org/licenses/LICENSE-2.0
    13   *
    14   * Unless required by applicable law or agreed to in writing,
    15   * software distributed under the License is distributed on an
    16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    17   * KIND, either express or implied.  See the License for the
    18   * specific language governing permissions and limitations
    19   * under the License.
    20   */
    21  package org.apache.struts.taglib.html;
    22
    23  import org.apache.struts.taglib.TagUtils;
    24
    25  import javax.servlet.jsp.JspException;
    26
    27  /**
    28   * Generate an HTML <code>&lt;frame&gt;</code> tag with similar capabilities
    29   * as those the <code>&lt;html:link&gt;</code> tag provides for hyperlink
    30   * elements.  The <code>src</code> element is rendered using the same
    31   * technique that {@link LinkTag} uses to render the <code>href</code>
    32   * attribute of a hyperlink.  Additionall, the HTML 4.0 frame tag attributes
    33   * <code>noresize</code>, <code>scrolling</code>, <code>marginheight</code>,
    34   * <code>marginwidth</code>, <code>frameborder</code>, and
    35   * <code>longdesc</code> are supported. The frame <code>name</code> attribute
    36   * is rendered based on the <code>frameName</code> property.
    37   *
    38   * Note that the value of <code>longdesc</code> is intended to be a URI, but
    39   * currently no rewriting is supported.  The attribute is set directly from
    40   * the property value.
    41   *
    42   * @version $Rev: 471754 $ $Date: 2004-10-16 12:38:42 -0400 (Sat, 16 Oct 2004)
    43   *          $
    44   * @since Struts 1.1
    45   */
    46  public class FrameTag extends LinkTag {
    47      // ------------------------------------------------------------- Properties
    48
    49      /**
    50       * The frameborder attribute that should be rendered (1, 0).
    51       */
    52      protected String frameborder = null;
    53
    54      /**
    55       * The <code>name</code> attribute that should be rendered for this
    56       * frame.
    57       */
    58      protected String frameName = null;
    59
    60      /**
    61       * URI of a long description of this frame (complements title).
    62       */
    63      protected String longdesc = null;
    64
    65      /**
    66       * The margin height in pixels, or zero for no setting.
    67       */
    68      protected Integer marginheight = null;
    69
    70      /**
    71       * The margin width in pixels, or null for no setting.
    72       */
    73      protected Integer marginwidth = null;
    74
    75      /**
    76       * Should users be disallowed to resize the frame?
    77       */
    78      protected boolean noresize = false;
    79
    80      /**
    81       * What type of scrolling should be supported (yes, no, auto)?
    82       */
    83      protected String scrolling = null;
    84
    85      public String getFrameborder() {
    86          return (this.frameborder);
    87      }
    88
    89      public void setFrameborder(String frameborder) {
    90          this.frameborder = frameborder;
    91      }
    92
    93      public String getFrameName() {
    94          return (this.frameName);
    95      }
    96
    97      public void setFrameName(String frameName) {
    98          this.frameName = frameName;
    99      }
    100
    101     public String getLongdesc() {
    102         return (this.longdesc);
    103     }
    104
    105     public void setLongdesc(String longdesc) {
    106         this.longdesc = longdesc;
    107     }
    108
    109     public Integer getMarginheight() {
    110         return (this.marginheight);
    111     }
    112
    113     public void setMarginheight(Integer marginheight) {
    114         this.marginheight = marginheight;
    115     }
    116
    117     public Integer getMarginwidth() {
    118         return (this.marginwidth);
    119     }
    120
    121     public void setMarginwidth(Integer marginwidth) {
    122         this.marginwidth = marginwidth;
    123     }
    124
    125     public boolean getNoresize() {
    126         return (this.noresize);
    127     }
    128
    129     public void setNoresize(boolean noresize) {
    130         this.noresize = noresize;
    131     }
    132
    133     public String getScrolling() {
    134         return (this.scrolling);
    135     }
    136
    137     public void setScrolling(String scrolling) {
    138         this.scrolling = scrolling;
    139     }
    140
    141     // --------------------------------------------------------- Public Methods
    142
    143     /**
    144      * Render the appropriately encoded URI.
    145      *
    146      * @throws JspException if a JSP exception has occurred
    147      */
    148     public int doEndTag() throws JspException {
    149         // Print this element to our output writer
    150         StringBuffer results = new StringBuffer("<frame");
    151
    152         prepareAttribute(results, "src", calculateURL());
    153         prepareAttribute(results, "name", getFrameName());
    154
    155         if (noresize) {
    156             results.append(" noresize=\"noresize\"");
    157         }
    158
    159         prepareAttribute(results, "scrolling", getScrolling());
    160         prepareAttribute(results, "marginheight", getMarginheight());
    161         prepareAttribute(results, "marginwidth", getMarginwidth());
    162         prepareAttribute(results, "frameborder", getFrameborder());
    163         prepareAttribute(results, "longdesc", getLongdesc());
    164         results.append(prepareStyles());
    165         prepareOtherAttributes(results);
    166         results.append(getElementClose());
    167         TagUtils.getInstance().write(pageContext, results.toString());
    168
    169         return (EVAL_PAGE);
    170     }
    171
    172     /**
    173      * Release any acquired resources.
    174      */
    175     public void release() {
    176         super.release();
    177         frameborder = null;
    178         frameName = null;
    179         longdesc = null;
    180         marginheight = null;
    181         marginwidth = null;
    182         noresize = false;
    183         scrolling = null;
    184     }
    185 }