java.lang.Object | ||
↳ | javax.swing.text.StyleContext | |
↳ | javax.swing.text.html.StyleSheet |
Support for defining the visual characteristics of
HTML views being rendered. The StyleSheet is used to
translate the HTML model into visual characteristics.
This enables views to be customized by a look-and-feel,
multiple views over the same model can be rendered
differently, etc. This can be thought of as a CSS
rule repository. The key for CSS attributes is an
object of type CSS.Attribute. The type of the value
is up to the StyleSheet implementation, but the
toString
method is required
to return a string representation of CSS value.
The primary entry point for HTML View implementations to get their attributes is the getViewAttributes method. This should be implemented to establish the desired policy used to associate attributes with the view. Each HTMLEditorKit (i.e. and therefore each associated JEditorPane) can have its own StyleSheet, but by default one sheet will be shared by all of the HTMLEditorKit instances. HTMLDocument instance can also have a StyleSheet, which holds the document-specific CSS specifications.
In order for Views to store less state and therefore be more lightweight, the StyleSheet can act as a factory for painters that handle some of the rendering tasks. This allows implementations to determine what they want to cache and have the sharing potentially at the level that a selector is common to multiple views. Since the StyleSheet may be used by views over multiple documents and typically the HTML attributes don't effect the selector being used, the potential for sharing is significant.
The rules are stored as named styles, and other information
is stored to translate the context of an element to a
rule quickly. The following code fragment will display
the named styles, and therefore the CSS rules contained.
import java.util.*;
import javax.swing.text.*;
import javax.swing.text.html.*;
public class ShowStyles {
public static void main(String[] args) {
HTMLEditorKit kit = new HTMLEditorKit();
HTMLDocument doc = (HTMLDocument) kit.createDefaultDocument();
StyleSheet styles = doc.getStyleSheet();
Enumeration rules = styles.getStyleNames();
while (rules.hasMoreElements()) {
String name = (String) rules.nextElement();
Style rule = styles.getStyle(name);
System.out.println(rule.toString());
}
System.exit(0);
}
}
The semantics for when a CSS style should overide visual attributes
defined by an element are not well defined. For example, the html
<body bgcolor=red>
makes the body have a red
background. But if the html file also contains the CSS rule
body { background: blue }
it becomes less clear as to
what color the background of the body should be. The current
implemention gives visual attributes defined in the element the
highest precedence, that is they are always checked before any styles.
Therefore, in the previous example the background would have a
red color as the body element defines the background color to be red.
As already mentioned this supports CSS. We don't support the full CSS
spec. Refer to the javadoc of the CSS class to see what properties
we support. The two major CSS parsing related
concepts we do not currently
support are pseudo selectors, such as A:link { color: red }
,
and the important
modifier.
Note: This implementation is currently incomplete. It can be replaced with alternative implementations that are complete. Future versions of this class will provide better CSS support.
Nested Classes | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
StyleSheet.BoxPainter | Class to carry out some of the duties of CSS formatting. | ||||||||||
StyleSheet.ListPainter | Class to carry out some of the duties of CSS list formatting. |
[Expand]
Inherited Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
![]() |
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Construct a StyleSheet
|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Adds an attribute to the given set, and returns
the new representative set.
| |||||||||||
Adds a set of attributes to the element.
| |||||||||||
Adds a CSS attribute to the given set.
| |||||||||||
Adds a CSS attribute to the given set.
| |||||||||||
Adds a set of rules to the sheet.
| |||||||||||
Adds the rules from the StyleSheet
ss to those of
the receiver. | |||||||||||
Takes a set of attributes and turn it into a background color
specification.
| |||||||||||
Returns the base.
| |||||||||||
Fetches the box formatter to use for the given set
of CSS attributes.
| |||||||||||
Translates a CSS declaration to an AttributeSet that represents
the CSS declaration.
| |||||||||||
Fetches the font to use for the given set of attributes.
| |||||||||||
Takes a set of attributes and turn it into a foreground color
specification.
| |||||||||||
Fetches the list formatter to use for the given set
of CSS attributes.
| |||||||||||
Returns the point size, given a size index.
| |||||||||||
Given a string such as "+2", "-2", or "2",
returns a point size value.
| |||||||||||
Fetches the rule that best matches the selector given
in string form.
| |||||||||||
Fetches the style to use to render the given type
of HTML tag.
| |||||||||||
Returns an array of the linked StyleSheets.
| |||||||||||
Fetches a set of attributes to use in the view for
displaying.
| |||||||||||
Imports a style sheet from
url . | |||||||||||
Loads a set of rules that have been specified in terms of
CSS1 grammar.
| |||||||||||
Removes an attribute from the set.
| |||||||||||
Removes a set of attributes for the element.
| |||||||||||
Removes a set of attributes.
| |||||||||||
Removes a named style previously added to the document.
| |||||||||||
Removes the StyleSheet
ss from those of the receiver. | |||||||||||
Sets the base.
| |||||||||||
Sets the base font size, with valid values between 1 and 7.
| |||||||||||
Sets the base font size from the passed in String.
| |||||||||||
Converts a color string such as "RED" or "#NNNNNN" to a Color.
| |||||||||||
Converts a set of HTML attributes to an equivalent
set of CSS attributes.
|
Protected Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Creates a large set of attributes that should trade off
space for time.
| |||||||||||
Creates a compact set of attributes that might be shared.
|
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
![]() | |||||||||||
![]() | |||||||||||
![]() |
Construct a StyleSheet
Adds an attribute to the given set, and returns the new representative set. This is reimplemented to convert StyleConstant attributes to CSS prior to forwarding to the superclass behavior. The StyleConstants attribute has no corresponding CSS entry, the StyleConstants attribute is stored (but will likely be unused).
old | the old attribute set |
---|---|
key | the non-null attribute key |
value | the attribute value |
Adds a set of attributes to the element. If any of these attributes are StyleConstants attributes, they will be converted to CSS prior to forwarding to the superclass behavior.
old | the old attribute set |
---|---|
attr | the attributes to add |
Adds a CSS attribute to the given set.
Adds a CSS attribute to the given set.
Adds a set of rules to the sheet. The rules are expected to be in valid CSS format. Typically this would be called as a result of parsing a <style> tag.
Adds the rules from the StyleSheet ss
to those of
the receiver. ss's
rules will override the rules of
any previously added style sheets. An added StyleSheet will never
override the rules of the receiving style sheet.
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.
a | the set of attributes |
---|
Fetches the box formatter to use for the given set of CSS attributes.
Translates a CSS declaration to an AttributeSet that represents the CSS declaration. Typically this would be called as a result of encountering an HTML style attribute.
Fetches the font to use for the given set of attributes.
a | the attribute set |
---|
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.
a | the set of attributes |
---|
Fetches the list formatter to use for the given set of CSS attributes.
Returns the point size, given a size index.
Given a string such as "+2", "-2", or "2", returns a point size value.
Fetches the rule that best matches the selector given
in string form. Where selector
is a space separated
String of the element names. For example, selector
might be 'html body tr td''
The attributes of the returned Style will change as rules are added and removed. That is if you to ask for a rule with a selector "table p" and a new rule was added with a selector of "p" the returned Style would include the new attributes from the rule "p".
Fetches the style to use to render the given type of HTML tag. The element given is representing the tag and can be used to determine the nesting for situations where the attributes will differ if nesting inside of elements.
t | the type to translate to visual attributes |
---|---|
e | the element representing the tag; the element can be used to determine the nesting for situations where the attributes will differ if nested inside of other elements |
Returns an array of the linked StyleSheets. Will return null if there are no linked StyleSheets.
Fetches a set of attributes to use in the view for displaying. This is basically a set of attributes that can be used for View.getAttributes.
Imports a style sheet from url
. The resulting rules
are directly added to the receiver. If you do not want the rules
to become part of the receiver, create a new StyleSheet and use
addStyleSheet to link it in.
Loads a set of rules that have been specified in terms of CSS1 grammar. If there are collisions with existing rules, the newly specified rule will win.
in | the stream to read the CSS grammar from |
---|---|
ref | the reference URL. This value represents the location of the stream and may be null. All relative URLs specified in the stream will be based upon this parameter. |
IOException |
---|
Removes an attribute from the set. If the attribute is a StyleConstants attribute, the request will be converted to a CSS attribute prior to forwarding to the superclass behavior.
old | the old set of attributes |
---|---|
key | the non-null attribute name |
Removes a set of attributes for the element. If any of the attributes is a StyleConstants attribute, the request will be converted to a CSS attribute prior to forwarding to the superclass behavior.
old | the old attribute set |
---|---|
names | the attribute names |
Removes a set of attributes. If any of the attributes is a StyleConstants attribute, the request will be converted to a CSS attribute prior to forwarding to the superclass behavior.
old | the old attribute set |
---|---|
attrs | the attributes |
Removes a named style previously added to the document.
nm | the name of the style to remove |
---|
Sets the base. All import statements that are relative, will be
relative to base
.
Sets the base font size, with valid values between 1 and 7.
Sets the base font size from the passed in String. The string can either identify a specific font size, with legal values between 1 and 7, or identifiy a relative font size such as +1 or -2.
Converts a color string such as "RED" or "#NNNNNN" to a Color. Note: This will only convert the HTML3.2 color strings or a string of length 7; otherwise, it will return null.
Converts a set of HTML attributes to an equivalent set of CSS attributes.
htmlAttrSet | AttributeSet containing the HTML attributes. |
---|
Creates a large set of attributes that should trade off space for time. This set will not be shared. This is a hook for subclasses that want to alter the behavior of the larger attribute storage format (which is SimpleAttributeSet by default). This can be reimplemented to return a MutableAttributeSet that provides some sort of attribute conversion.
a | The set of attributes to be represented in the the larger form. |
---|
Creates a compact set of attributes that might be shared. This is a hook for subclasses that want to alter the behavior of SmallAttributeSet. This can be reimplemented to return an AttributeSet that provides some sort of attribute conversion.
a | The set of attributes to be represented in the the compact form. |
---|