001    /* TagElement.java --
002       Copyright (C) 2005 Free Software Foundation, Inc.
003    
004    This file is part of GNU Classpath.
005    
006    GNU Classpath is free software; you can redistribute it and/or modify
007    it under the terms of the GNU General Public License as published by
008    the Free Software Foundation; either version 2, or (at your option)
009    any later version.
010    
011    GNU Classpath is distributed in the hope that it will be useful, but
012    WITHOUT ANY WARRANTY; without even the implied warranty of
013    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
014    General Public License for more details.
015    
016    You should have received a copy of the GNU General Public License
017    along with GNU Classpath; see the file COPYING.  If not, write to the
018    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
019    02110-1301 USA.
020    
021    Linking this library statically or dynamically with other modules is
022    making a combined work based on this library.  Thus, the terms and
023    conditions of the GNU General Public License cover the whole
024    combination.
025    
026    As a special exception, the copyright holders of this library give you
027    permission to link this library with independent modules to produce an
028    executable, regardless of the license terms of these independent
029    modules, and to copy and distribute the resulting executable under
030    terms of your choice, provided that you also meet, for each linked
031    independent module, the terms and conditions of the license of that
032    module.  An independent module is a module which is not derived from
033    or based on this library.  If you modify this library, you may extend
034    this exception to your version of the library, but you are not
035    obligated to do so.  If you do not wish to do so, delete this
036    exception statement from your version. */
037    
038    
039    package javax.swing.text.html.parser;
040    
041    import javax.swing.text.html.HTML;
042    
043    /**
044     * The SGML element, defining a single html tag.
045     * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
046     */
047    public class TagElement
048    {
049      /**
050       * The Element the tag was constructed from.
051       */
052      private final Element element;
053    
054      /**
055       * The coresponding HTML tag, assigned once in constructor.
056       */
057      private final HTML.Tag tag;
058    
059      /**
060       * The 'fictional' flag.
061       */
062      private final boolean fictional;
063    
064      /**
065       * Creates the html tag element from the defintion, stored in the
066       * given element. Sets the flag 'fictional' to false.
067       * @param an_element
068       */
069      public TagElement(Element an_element)
070      {
071        this(an_element, false);
072      }
073    
074      /**
075       * Creates the html tag element from the defintion, stored in the
076       * given element, setting the flag 'fictional' to the given value.
077       */
078      public TagElement(Element an_element, boolean is_fictional)
079      {
080        element = an_element;
081        fictional = is_fictional;
082    
083        HTML.Tag t = HTML.getTag(element.getName());
084    
085        if (t != null)
086          tag = t;
087        else
088          tag = new HTML.UnknownTag(element.getName());
089      }
090    
091      /**
092       * Get the element from that the tag was constructed.
093       */
094      public Element getElement()
095      {
096        return element;
097      }
098    
099      /**
100       * Get the corresponding HTML tag. This is either one of the
101       * pre-defined HTML tags or the instance of the UnknownTag with the
102       * element name.
103       */
104      public HTML.Tag getHTMLTag()
105      {
106        return tag;
107      }
108    
109      /**
110       * Calls isPreformatted() for the corresponding html tag and returns
111       * the obtained value.
112       */
113      public boolean isPreformatted()
114      {
115        return tag.isPreformatted();
116      }
117    
118      /**
119       * Calls breaksFlow() for the corresponding html tag and returns
120       * the obtained value.
121       */
122      public boolean breaksFlow()
123      {
124        return tag.breaksFlow();
125      }
126    
127      /**
128       * Get the value of the flag 'fictional'.
129       */
130      public boolean fictional()
131      {
132        return fictional;
133      }
134    
135      /**
136       * Returns string representation of this object.
137       */
138      public String toString()
139      {
140        return getElement() + (fictional ? "?" : "");
141      }
142    }