Frames | No Frames |
1: /* htmlAttributeSet.java -- A set to store HTML attributes 2: Copyright (C) 2005 Free Software Foundation, Inc. 3: 4: This file is part of GNU Classpath. 5: 6: GNU Classpath is free software; you can redistribute it and/or modify 7: it under the terms of the GNU General Public License as published by 8: the Free Software Foundation; either version 2, or (at your option) 9: any later version. 10: 11: GNU Classpath is distributed in the hope that it will be useful, but 12: WITHOUT ANY WARRANTY; without even the implied warranty of 13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14: General Public License for more details. 15: 16: You should have received a copy of the GNU General Public License 17: along with GNU Classpath; see the file COPYING. If not, write to the 18: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 19: 02110-1301 USA. 20: 21: Linking this library statically or dynamically with other modules is 22: making a combined work based on this library. Thus, the terms and 23: conditions of the GNU General Public License cover the whole 24: combination. 25: 26: As a special exception, the copyright holders of this library give you 27: permission to link this library with independent modules to produce an 28: executable, regardless of the license terms of these independent 29: modules, and to copy and distribute the resulting executable under 30: terms of your choice, provided that you also meet, for each linked 31: independent module, the terms and conditions of the license of that 32: module. An independent module is a module which is not derived from 33: or based on this library. If you modify this library, you may extend 34: this exception to your version of the library, but you are not 35: obligated to do so. If you do not wish to do so, delete this 36: exception statement from your version. */ 37: 38: 39: package gnu.javax.swing.text.html.parser; 40: 41: import java.util.Enumeration; 42: 43: import javax.swing.text.AttributeSet; 44: import javax.swing.text.SimpleAttributeSet; 45: import javax.swing.text.html.HTML; 46: 47: /** 48: * A set, adapted to store HTML attributes. 49: * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org) 50: */ 51: public class htmlAttributeSet 52: extends SimpleAttributeSet 53: { 54: public static final htmlAttributeSet EMPTY_HTML_ATTRIBUTE_SET = 55: new htmlAttributeSet(); 56: AttributeSet parent; 57: 58: /** 59: * Looks in this set and, if not found, later looks in the parent set. 60: * Calls toString(), allowing to pass as HTML.Attribute, as String 61: * to this method. 62: * @param key A key to search for a value. 63: * @return The value, if one is defined. 64: */ 65: public Object getAttribute(Object _key) 66: { 67: Object key = _key.toString().toLowerCase(); 68: 69: Object v = super.getAttribute(key); 70: if (v != null) 71: return v; 72: else if (parent != null) 73: return parent.getAttribute(key); 74: else 75: return null; 76: } 77: 78: /** 79: * The name set must return HTML.Attribute and not a string, 80: * where applicable. 81: */ 82: public Enumeration getAttributeNames() 83: { 84: // Replace the string keys by HTML.attribute, where applicable 85: final Enumeration enumeration = super.getAttributeNames(); 86: 87: return new Enumeration() 88: { 89: public boolean hasMoreElements() 90: { 91: return enumeration.hasMoreElements(); 92: } 93: 94: public Object nextElement() 95: { 96: Object key = enumeration.nextElement(); 97: HTML.Attribute hKey = HTML.getAttributeKey((String) key); 98: if (hKey != null) 99: return hKey; 100: else 101: return key; 102: } 103: }; 104: } 105: 106: /** 107: * Set the parent set, containing the default values. 108: * @param a_parent 109: */ 110: public void setResolveParent(AttributeSet a_parent) 111: { 112: parent = a_parent; 113: } 114: 115: /** 116: * Get the parent set, containing the default values. 117: * @return 118: */ 119: public AttributeSet getResolveParent() 120: { 121: return parent; 122: } 123: 124: /** 125: * Add the attribute to this attribute set. 126: * @param key Attribute key (will be case insensitive) 127: * @param value Attribute value 128: */ 129: public void addAttribute(Object key, Object value) 130: { 131: super.addAttribute(key.toString().toLowerCase(), value); 132: } 133: }