blob: 9c687189ca2d5dce1ba75986e19e505c31b25b0a [file] [log] [blame]
/*
* Copyright (c) 1997, 1998, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package javax.swing.text;
import java.awt.Font;
import java.awt.Color;
/**
* Interface for a generic styled document.
*
* @author Timothy Prinzing
*/
public interface StyledDocument extends Document {
/**
* Adds a new style into the logical style hierarchy. Style attributes
* resolve from bottom up so an attribute specified in a child
* will override an attribute specified in the parent.
*
* @param nm the name of the style (must be unique within the
* collection of named styles). The name may be null if the style
* is unnamed, but the caller is responsible
* for managing the reference returned as an unnamed style can't
* be fetched by name. An unnamed style may be useful for things
* like character attribute overrides such as found in a style
* run.
* @param parent the parent style. This may be null if unspecified
* attributes need not be resolved in some other style.
* @return the style
*/
public Style addStyle(String nm, Style parent);
/**
* Removes a named style previously added to the document.
*
* @param nm the name of the style to remove
*/
public void removeStyle(String nm);
/**
* Fetches a named style previously added.
*
* @param nm the name of the style
* @return the style
*/
public Style getStyle(String nm);
/**
* Changes the content element attributes used for the given range of
* existing content in the document. All of the attributes
* defined in the given Attributes argument are applied to the
* given range. This method can be used to completely remove
* all content level attributes for the given range by
* giving an Attributes argument that has no attributes defined
* and setting replace to true.
*
* @param offset the start of the change >= 0
* @param length the length of the change >= 0
* @param s the non-null attributes to change to. Any attributes
* defined will be applied to the text for the given range.
* @param replace indicates whether or not the previous
* attributes should be cleared before the new attributes
* as set. If true, the operation will replace the
* previous attributes entirely. If false, the new
* attributes will be merged with the previous attributes.
*/
public void setCharacterAttributes(int offset, int length, AttributeSet s, boolean replace);
/**
* Sets paragraph attributes.
*
* @param offset the start of the change >= 0
* @param length the length of the change >= 0
* @param s the non-null attributes to change to. Any attributes
* defined will be applied to the text for the given range.
* @param replace indicates whether or not the previous
* attributes should be cleared before the new attributes
* are set. If true, the operation will replace the
* previous attributes entirely. If false, the new
* attributes will be merged with the previous attributes.
*/
public void setParagraphAttributes(int offset, int length, AttributeSet s, boolean replace);
/**
* Sets the logical style to use for the paragraph at the
* given position. If attributes aren't explicitly set
* for character and paragraph attributes they will resolve
* through the logical style assigned to the paragraph, which
* in turn may resolve through some hierarchy completely
* independent of the element hierarchy in the document.
*
* @param pos the starting position >= 0
* @param s the style to set
*/
public void setLogicalStyle(int pos, Style s);
/**
* Gets a logical style for a given position in a paragraph.
*
* @param p the position >= 0
* @return the style
*/
public Style getLogicalStyle(int p);
/**
* Gets the element that represents the paragraph that
* encloses the given offset within the document.
*
* @param pos the offset >= 0
* @return the element
*/
public Element getParagraphElement(int pos);
/**
* Gets the element that represents the character that
* is at the given offset within the document.
*
* @param pos the offset >= 0
* @return the element
*/
public Element getCharacterElement(int pos);
/**
* Takes a set of attributes and turn it into a foreground color
* specification. This might be used to specify things
* like brighter, more hue, etc.
*
* @param attr the set of attributes
* @return the color
*/
public Color getForeground(AttributeSet attr);
/**
* Takes a set of attributes and turn it into a background color
* specification. This might be used to specify things
* like brighter, more hue, etc.
*
* @param attr the set of attributes
* @return the color
*/
public Color getBackground(AttributeSet attr);
/**
* Takes a set of attributes and turn it into a font
* specification. This can be used to turn things like
* family, style, size, etc into a font that is available
* on the system the document is currently being used on.
*
* @param attr the set of attributes
* @return the font
*/
public Font getFont(AttributeSet attr);
}