|
Java example source code file (LabelView.java)
The LabelView.java Java example source code
/*
* Copyright (c) 1997, 2006, 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.*;
import javax.swing.event.*;
/**
* A <code>LabelView is a styled chunk of text
* that represents a view mapped over an element in the
* text model. It caches the character level attributes
* used for rendering.
*
* @author Timothy Prinzing
*/
public class LabelView extends GlyphView implements TabableView {
/**
* Constructs a new view wrapped on an element.
*
* @param elem the element
*/
public LabelView(Element elem) {
super(elem);
}
/**
* Synchronize the view's cached values with the model.
* This causes the font, metrics, color, etc to be
* re-cached if the cache has been invalidated.
*/
final void sync() {
if (font == null) {
setPropertiesFromAttributes();
}
}
/**
* Sets whether or not the view is underlined.
* Note that this setter is protected and is really
* only meant if you need to update some additional
* state when set.
*
* @param u true if the view is underlined, otherwise
* false
* @see #isUnderline
*/
protected void setUnderline(boolean u) {
underline = u;
}
/**
* Sets whether or not the view has a strike/line
* through it.
* Note that this setter is protected and is really
* only meant if you need to update some additional
* state when set.
*
* @param s true if the view has a strike/line
* through it, otherwise false
* @see #isStrikeThrough
*/
protected void setStrikeThrough(boolean s) {
strike = s;
}
/**
* Sets whether or not the view represents a
* superscript.
* Note that this setter is protected and is really
* only meant if you need to update some additional
* state when set.
*
* @param s true if the view represents a
* superscript, otherwise false
* @see #isSuperscript
*/
protected void setSuperscript(boolean s) {
superscript = s;
}
/**
* Sets whether or not the view represents a
* subscript.
* Note that this setter is protected and is really
* only meant if you need to update some additional
* state when set.
*
* @param s true if the view represents a
* subscript, otherwise false
* @see #isSubscript
*/
protected void setSubscript(boolean s) {
subscript = s;
}
/**
* Sets the background color for the view. This method is typically
* invoked as part of configuring this <code>View. If you need
* to customize the background color you should override
* <code>setPropertiesFromAttributes and invoke this method. A
* value of null indicates no background should be rendered, so that the
* background of the parent <code>View will show through.
*
* @param bg background color, or null
* @see #setPropertiesFromAttributes
* @since 1.5
*/
protected void setBackground(Color bg) {
this.bg = bg;
}
/**
* Sets the cached properties from the attributes.
*/
protected void setPropertiesFromAttributes() {
AttributeSet attr = getAttributes();
if (attr != null) {
Document d = getDocument();
if (d instanceof StyledDocument) {
StyledDocument doc = (StyledDocument) d;
font = doc.getFont(attr);
fg = doc.getForeground(attr);
if (attr.isDefined(StyleConstants.Background)) {
bg = doc.getBackground(attr);
} else {
bg = null;
}
setUnderline(StyleConstants.isUnderline(attr));
setStrikeThrough(StyleConstants.isStrikeThrough(attr));
setSuperscript(StyleConstants.isSuperscript(attr));
setSubscript(StyleConstants.isSubscript(attr));
} else {
throw new StateInvariantError("LabelView needs StyledDocument");
}
}
}
/**
* Fetches the <code>FontMetrics used for this view.
* @deprecated FontMetrics are not used for glyph rendering
* when running in the JDK.
*/
@Deprecated
protected FontMetrics getFontMetrics() {
sync();
Container c = getContainer();
return (c != null) ? c.getFontMetrics(font) :
Toolkit.getDefaultToolkit().getFontMetrics(font);
}
/**
* Fetches the background color to use to render the glyphs.
* This is implemented to return a cached background color,
* which defaults to <code>null.
*
* @return the cached background color
* @since 1.3
*/
public Color getBackground() {
sync();
return bg;
}
/**
* Fetches the foreground color to use to render the glyphs.
* This is implemented to return a cached foreground color,
* which defaults to <code>null.
*
* @return the cached foreground color
* @since 1.3
*/
public Color getForeground() {
sync();
return fg;
}
/**
* Fetches the font that the glyphs should be based upon.
* This is implemented to return a cached font.
*
* @return the cached font
*/
public Font getFont() {
sync();
return font;
}
/**
* Determines if the glyphs should be underlined. If true,
* an underline should be drawn through the baseline. This
* is implemented to return the cached underline property.
*
* <p>When you request this property,
Other Java examples (source code examples)Here is a short list of links related to this Java LabelView.java source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.