- /*
- * @(#)BasicTextPaneUI.java 1.67 03/01/23
- *
- * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
- package javax.swing.plaf.basic;
-
- import java.awt.*;
- import java.awt.event.*;
- import java.beans.*;
- import javax.swing.*;
- import javax.swing.text.*;
- import javax.swing.plaf.*;
- import javax.swing.border.*;
-
-
- /**
- * Provides the look and feel for a styled text editor.
- * <p>
- * <strong>Warning:</strong>
- * Serialized objects of this class will not be compatible with
- * future Swing releases. The current serialization support is
- * appropriate for short term storage or RMI between applications running
- * the same version of Swing. As of 1.4, support for long term storage
- * of all JavaBeans<sup><font size="-2">TM</font></sup>
- * has been added to the <code>java.beans</code> package.
- * Please see {@link java.beans.XMLEncoder}.
- *
- * @author Timothy Prinzing
- * @version 1.67 01/23/03
- */
- public class BasicTextPaneUI extends BasicEditorPaneUI {
-
- /**
- * Creates a UI for the JTextPane.
- *
- * @param c the JTextPane object
- * @return the UI
- */
- public static ComponentUI createUI(JComponent c) {
- return new BasicTextPaneUI();
- }
-
- /**
- * Creates a new BasicTextPaneUI.
- */
- public BasicTextPaneUI() {
- super();
- }
-
- /**
- * Fetches the name used as a key to lookup properties through the
- * UIManager. This is used as a prefix to all the standard
- * text properties.
- *
- * @return the name ("TextPane")
- */
- protected String getPropertyPrefix() {
- return "TextPane";
- }
-
- public void installUI(JComponent c) {
- super.installUI(c);
- updateForeground(c.getForeground());
- updateFont(c.getFont());
- }
-
- /**
- * This method gets called when a bound property is changed
- * on the associated JTextComponent. This is a hook
- * which UI implementations may change to reflect how the
- * UI displays bound properties of JTextComponent subclasses.
- * If the font, foreground or document has changed, the
- * the appropriate property is set in the default style of
- * the document.
- *
- * @param evt the property change event
- */
- protected void propertyChange(PropertyChangeEvent evt) {
- super.propertyChange(evt);
-
- String name = evt.getPropertyName();
-
- if (name.equals("foreground")) {
- updateForeground((Color)evt.getNewValue());
- } else if (name.equals("font")) {
- updateFont((Font)evt.getNewValue());
- } else if (name.equals("document")) {
- JComponent comp = getComponent();
- updateForeground(comp.getForeground());
- updateFont(comp.getFont());
- }
- }
-
- /**
- * Update the color in the default style of the document.
- *
- * @param color the new color to use or null to remove the color attribute
- * from the document's style
- */
- private void updateForeground(Color color) {
- StyledDocument doc = (StyledDocument)getComponent().getDocument();
- Style style = doc.getStyle(StyleContext.DEFAULT_STYLE);
-
- if (style == null) {
- return;
- }
-
- if (color == null) {
- style.removeAttribute(StyleConstants.Foreground);
- } else {
- StyleConstants.setForeground(style, color);
- }
- }
-
- /**
- * Update the font in the default style of the document.
- *
- * @param font the new font to use or null to remove the font attribute
- * from the document's style
- */
- private void updateFont(Font font) {
- StyledDocument doc = (StyledDocument)getComponent().getDocument();
- Style style = doc.getStyle(StyleContext.DEFAULT_STYLE);
-
- if (style == null) {
- return;
- }
-
- if (font == null) {
- style.removeAttribute(StyleConstants.FontFamily);
- style.removeAttribute(StyleConstants.FontSize);
- style.removeAttribute(StyleConstants.Bold);
- style.removeAttribute(StyleConstants.Italic);
- } else {
- StyleConstants.setFontFamily(style, font.getName());
- StyleConstants.setFontSize(style, font.getSize());
- StyleConstants.setBold(style, font.isBold());
- StyleConstants.setItalic(style, font.isItalic());
- }
- }
-
- }