OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [classpath/] [gnu/] [javax/] [swing/] [text/] [html/] [CombinedAttributes.java] - Blame information for rev 769

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 769 jeremybenn
/* CombinedAttributes.java -- A two combined sets of attributes
2
   Copyright (C) 2006 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;
40
 
41
import java.io.Serializable;
42
import java.util.Enumeration;
43
 
44
import javax.swing.text.AttributeSet;
45
import javax.swing.text.SimpleAttributeSet;
46
 
47
/**
48
 * Contains the two combined attribute sets what are searched subsequently.
49
 * This is used to combine style sheet attributes with the HTML view attributes.
50
 * The parent cannot be used as the view may have its own attribute hierarchy.
51
 *
52
 * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
53
 */
54
public class CombinedAttributes implements AttributeSet, Serializable
55
{
56
  /**
57
   * Returns the elements from both enumerations.
58
   */
59
  class CombinedEnumeration implements Enumeration
60
  {
61
    /**
62
     * Create a combined enumeration that enumerates over two enumerations.
63
     *
64
     * @param first the first enumeration to enumerate
65
     * @param second the second enumeration to enumerate
66
     */
67
    CombinedEnumeration(Enumeration first, Enumeration second)
68
    {
69
      a = first;
70
      b = second;
71
    }
72
 
73
    /**
74
     * The first enumeration (elements returned first)
75
     */
76
    final Enumeration a;
77
 
78
    /**
79
     * The second enumeration (elements returned later)
80
     */
81
    final Enumeration b;
82
 
83
    /** @inheritDoc */
84
    public boolean hasMoreElements()
85
    {
86
      return a.hasMoreElements() || b.hasMoreElements();
87
    }
88
 
89
    /** @inheritDoc */
90
    public Object nextElement()
91
    {
92
      return a.hasMoreElements() ? a.nextElement():b.nextElement();
93
    }
94
  }
95
 
96
 
97
  /**
98
   * The first attribute set.
99
   */
100
  final AttributeSet a;
101
 
102
  /**
103
   * The second attribute set.
104
   */
105
  final AttributeSet b;
106
 
107
  /**
108
   * Create the CombinedAttributes what search in the two sets. If any of the
109
   * two passed sets is null, another set is returned. Otherwise, the combined
110
   * attribute set is returned.
111
   *
112
   * @param primary the first set (searched first)
113
   * @param secondary the second set (searched later).
114
   */
115
  public static AttributeSet combine(AttributeSet primary,
116
                                     AttributeSet secondary)
117
  {
118
    if (primary == null)
119
      return secondary;
120
    else if (secondary == null)
121
      return primary;
122
    else
123
      return new CombinedAttributes(primary, secondary);
124
  }
125
 
126
  /**
127
   * Create the CombinedAttributes what search in the two sets.
128
   *
129
   * @param primary the first set (searched first)
130
   * @param secondary the second set (searched later).
131
   */
132
  private CombinedAttributes(AttributeSet primary, AttributeSet secondary)
133
  {
134
    a = primary;
135
    b = secondary;
136
  }
137
 
138
  /** @inheritDoc */
139
  public boolean containsAttribute(Object name, Object value)
140
  {
141
    return a.containsAttribute(name, value) || b.containsAttribute(name, value);
142
  }
143
 
144
  /** @inheritDoc */
145
  public boolean containsAttributes(AttributeSet attributes)
146
  {
147
    Enumeration names = attributes.getAttributeNames();
148
    Object name;
149
    while (names.hasMoreElements())
150
      {
151
        name = names.nextElement();
152
        if (!containsAttribute(name, attributes.getAttribute(name)))
153
          return false;
154
      }
155
    return true;
156
  }
157
 
158
  /** @inheritDoc */
159
  public AttributeSet copyAttributes()
160
  {
161
    SimpleAttributeSet copy = new SimpleAttributeSet();
162
    copy.addAttributes(a);
163
    copy.addAttributes(b);
164
    return copy;
165
  }
166
 
167
  /** @inheritDoc */
168
  public Object getAttribute(Object key)
169
  {
170
    Object value = a.getAttribute(key);
171
    if (value == null)
172
      value = b.getAttribute(key);
173
 
174
    return value;
175
  }
176
 
177
  /** @inheritDoc */
178
  public int getAttributeCount()
179
  {
180
    return a.getAttributeCount()+b.getAttributeCount();
181
  }
182
 
183
  /** @inheritDoc */
184
  public Enumeration getAttributeNames()
185
  {
186
    return new CombinedEnumeration(a.getAttributeNames(), b.getAttributeNames());
187
  }
188
 
189
  /**
190
   * There is no one.
191
   *
192
   * @return null, always.
193
   */
194
  public AttributeSet getResolveParent()
195
  {
196
    return null;
197
  }
198
 
199
  /** @inheritDoc */
200
  public boolean isDefined(Object attrName)
201
  {
202
    return a.isDefined(attrName) || b.isDefined(attrName);
203
  }
204
 
205
  /** @inheritDoc */
206
  public boolean isEqual(AttributeSet attr)
207
  {
208
    if (attr.getAttributeCount() == getAttributeCount())
209
      return containsAttributes(attr);
210
    else
211
      return false;
212
  }
213
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.