001 /*
002 * Copyright 1997-1998 Sun Microsystems, Inc. All Rights Reserved.
003 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004 *
005 * This code is free software; you can redistribute it and/or modify it
006 * under the terms of the GNU General Public License version 2 only, as
007 * published by the Free Software Foundation. Sun designates this
008 * particular file as subject to the "Classpath" exception as provided
009 * by Sun in the LICENSE file that accompanied this code.
010 *
011 * This code is distributed in the hope that it will be useful, but WITHOUT
012 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014 * version 2 for more details (a copy is included in the LICENSE file that
015 * accompanied this code).
016 *
017 * You should have received a copy of the GNU General Public License version
018 * 2 along with this work; if not, write to the Free Software Foundation,
019 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020 *
021 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022 * CA 95054 USA or visit www.sun.com if you need additional information or
023 * have any questions.
024 */
025 package javax.swing.text;
026
027 import java.awt.Font;
028 import java.awt.Color;
029
030 /**
031 * Interface for a generic styled document.
032 *
033 * @author Timothy Prinzing
034 * @version 1.28 05/05/07
035 */
036 public interface StyledDocument extends Document {
037
038 /**
039 * Adds a new style into the logical style hierarchy. Style attributes
040 * resolve from bottom up so an attribute specified in a child
041 * will override an attribute specified in the parent.
042 *
043 * @param nm the name of the style (must be unique within the
044 * collection of named styles). The name may be null if the style
045 * is unnamed, but the caller is responsible
046 * for managing the reference returned as an unnamed style can't
047 * be fetched by name. An unnamed style may be useful for things
048 * like character attribute overrides such as found in a style
049 * run.
050 * @param parent the parent style. This may be null if unspecified
051 * attributes need not be resolved in some other style.
052 * @return the style
053 */
054 public Style addStyle(String nm, Style parent);
055
056 /**
057 * Removes a named style previously added to the document.
058 *
059 * @param nm the name of the style to remove
060 */
061 public void removeStyle(String nm);
062
063 /**
064 * Fetches a named style previously added.
065 *
066 * @param nm the name of the style
067 * @return the style
068 */
069 public Style getStyle(String nm);
070
071 /**
072 * Changes the content element attributes used for the given range of
073 * existing content in the document. All of the attributes
074 * defined in the given Attributes argument are applied to the
075 * given range. This method can be used to completely remove
076 * all content level attributes for the given range by
077 * giving an Attributes argument that has no attributes defined
078 * and setting replace to true.
079 *
080 * @param offset the start of the change >= 0
081 * @param length the length of the change >= 0
082 * @param s the non-null attributes to change to. Any attributes
083 * defined will be applied to the text for the given range.
084 * @param replace indicates whether or not the previous
085 * attributes should be cleared before the new attributes
086 * as set. If true, the operation will replace the
087 * previous attributes entirely. If false, the new
088 * attributes will be merged with the previous attributes.
089 */
090 public void setCharacterAttributes(int offset, int length,
091 AttributeSet s, boolean replace);
092
093 /**
094 * Sets paragraph attributes.
095 *
096 * @param offset the start of the change >= 0
097 * @param length the length of the change >= 0
098 * @param s the non-null attributes to change to. Any attributes
099 * defined will be applied to the text for the given range.
100 * @param replace indicates whether or not the previous
101 * attributes should be cleared before the new attributes
102 * are set. If true, the operation will replace the
103 * previous attributes entirely. If false, the new
104 * attributes will be merged with the previous attributes.
105 */
106 public void setParagraphAttributes(int offset, int length,
107 AttributeSet s, boolean replace);
108
109 /**
110 * Sets the logical style to use for the paragraph at the
111 * given position. If attributes aren't explicitly set
112 * for character and paragraph attributes they will resolve
113 * through the logical style assigned to the paragraph, which
114 * in turn may resolve through some hierarchy completely
115 * independent of the element hierarchy in the document.
116 *
117 * @param pos the starting position >= 0
118 * @param s the style to set
119 */
120 public void setLogicalStyle(int pos, Style s);
121
122 /**
123 * Gets a logical style for a given position in a paragraph.
124 *
125 * @param p the position >= 0
126 * @return the style
127 */
128 public Style getLogicalStyle(int p);
129
130 /**
131 * Gets the element that represents the paragraph that
132 * encloses the given offset within the document.
133 *
134 * @param pos the offset >= 0
135 * @return the element
136 */
137 public Element getParagraphElement(int pos);
138
139 /**
140 * Gets the element that represents the character that
141 * is at the given offset within the document.
142 *
143 * @param pos the offset >= 0
144 * @return the element
145 */
146 public Element getCharacterElement(int pos);
147
148 /**
149 * Takes a set of attributes and turn it into a foreground color
150 * specification. This might be used to specify things
151 * like brighter, more hue, etc.
152 *
153 * @param attr the set of attributes
154 * @return the color
155 */
156 public Color getForeground(AttributeSet attr);
157
158 /**
159 * Takes a set of attributes and turn it into a background color
160 * specification. This might be used to specify things
161 * like brighter, more hue, etc.
162 *
163 * @param attr the set of attributes
164 * @return the color
165 */
166 public Color getBackground(AttributeSet attr);
167
168 /**
169 * Takes a set of attributes and turn it into a font
170 * specification. This can be used to turn things like
171 * family, style, size, etc into a font that is available
172 * on the system the document is currently being used on.
173 *
174 * @param attr the set of attributes
175 * @return the font
176 */
177 public Font getFont(AttributeSet attr);
178
179 }
|