This implements all of javax.swing.text.LabelView.

2005-10-05  Roman Kennke  <[EMAIL PROTECTED]>

        * javax/swing/text/LabelView.java
        (LabelView): Implemented the constructor.
        (setPropertiesFromAttributes): New method.
        (changedUpdate): New method.
        (getBackground): New method.
        (setBackground): New method.
        (getForeground): New method.
        (getFont): New method.
        (getFontMetrics): New method.
        (isUnderline): New method.
        (setUnderline): New method.
        (isSubscript): New method.
        (setSubscript): New method.
        (isSuperscript): New method.
        (setSuperscript): New method.
        (isStrikeThrough): New method.
        (setStrikeThrough): New method.


/Roman
Index: javax/swing/text/LabelView.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/text/LabelView.java,v
retrieving revision 1.1
diff -u -r1.1 LabelView.java
--- javax/swing/text/LabelView.java	29 Jul 2005 10:47:16 -0000	1.1
+++ javax/swing/text/LabelView.java	5 Oct 2005 14:59:48 -0000
@@ -38,10 +38,57 @@
 
 package javax.swing.text;
 
-// TODO: Implement this class.
-public class LabelView
-  extends GlyphView
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Shape;
+
+import javax.swing.event.DocumentEvent;
+
+/**
+ * A [EMAIL PROTECTED] GlyphView} that caches the textattributes for most effective
+ * rendering.
+ *
+ * @author Roman Kennke ([EMAIL PROTECTED])
+ */
+public class LabelView extends GlyphView
 {
+
+  /**
+   * The background color.
+   */
+  Color background;
+
+  /**
+   * The foreground color.
+   */
+  Color foreground;
+
+  /**
+   * The background color.
+   */
+  Font font;
+
+  /**
+   * The strikethrough flag.
+   */
+  boolean strikeThrough;
+
+  /**
+   * The underline flag.
+   */
+  boolean underline;
+
+  /**
+   * The subscript flag.
+   */
+  boolean subscript;
+
+  /**
+   * The superscript flag.
+   */
+  boolean superscript;
+
   /**
    * Creates a new <code>GlyphView</code> for the given <code>Element</code>.
    *
@@ -50,5 +97,194 @@
   public LabelView(Element element)
   {
     super(element);
+    setPropertiesFromAttributes();
+  }
+
+  /**
+   * Loads the properties of this label view from the element's text
+   * attributes. This method is called from the constructor and the
+   * [EMAIL PROTECTED] #changedUpdate} method
+   */
+  protected void setPropertiesFromAttributes()
+  {
+    Element el = getElement();
+    AttributeSet atts = el.getAttributes();
+    background = StyleConstants.getBackground(atts);
+    foreground = StyleConstants.getForeground(atts);
+    strikeThrough = StyleConstants.isStrikeThrough(atts);
+    subscript = StyleConstants.isSubscript(atts);
+    superscript = StyleConstants.isSuperscript(atts);
+    underline = StyleConstants.isUnderline(atts);
+
+    // Determine the font.
+    String family = StyleConstants.getFontFamily(atts);
+    int size = StyleConstants.getFontSize(atts);
+    int style = Font.PLAIN;
+    if (StyleConstants.isBold(atts))
+        style |= Font.BOLD;
+    if (StyleConstants.isItalic(atts))
+      style |= Font.ITALIC;
+    font = new Font(family, style, size);
+  }
+
+  /**
+   * Receives notification when text attributes change in the chunk of
+   * text that this view is responsible for. This simply calls
+   * [EMAIL PROTECTED] #setPropertiesFromAttributes()}.
+   *
+   * @param e the document event
+   * @param a the allocation of this view
+   * @param vf the view factory to use for creating new views
+   */
+  public void changedUpdate(DocumentEvent e, Shape a, ViewFactory vf)
+  {
+    setPropertiesFromAttributes();
+  }
+
+  /**
+   * Returns the background color for the glyphs.
+   *
+   * @return the background color for the glyphs
+   */
+  public Color getBackground()
+  {
+    return background;
+  }
+
+  /**
+   * Sets the background color for the glyphs. A value of <code>null</code>
+   * means the background of the parent view should shine through.
+   *
+   * @param bg the background to set or <code>null</code>
+   *
+   * @since 1.5
+   */
+  protected void setBackground(Color bg)
+  {
+    background = bg;
+  }
+
+  /**
+   * Returns the foreground color for the glyphs.
+   *
+   * @return the foreground color for the glyphs
+   */
+  public Color getForeground()
+  {
+    return foreground;
+  }
+
+  /**
+   * Returns the font for the glyphs.
+   *
+   * @return the font for the glyphs
+   */
+  public Font getFont()
+  {
+    return font;
+  }
+
+  /**
+   * Returns the font metrics of the current font.
+   *
+   * @return the font metrics of the current font
+   *
+   * @deprecated this is not used anymore
+   */
+  protected FontMetrics getFontMetrics()
+  {
+    return getContainer().getGraphics().getFontMetrics(font);
+  }
+
+  /**
+   * Returns <code>true</code> if the glyphs are rendered underlined,
+   * <code>false</code> otherwise.
+   *
+   * @return <code>true</code> if the glyphs are rendered underlined,
+   *         <code>false</code> otherwise
+   */
+  public boolean isUnderline()
+  {
+    return underline;
+  }
+
+  /**
+   * Sets the underline flag.
+   *
+   * @param flag <code>true</code> if the glyphs are rendered underlined,
+   *             <code>false</code> otherwise
+   */
+  protected void setUnderline(boolean flag)
+  {
+    underline = flag;
+  }
+
+  /**
+   * Returns <code>true</code> if the glyphs are rendered as subscript,
+   * <code>false</code> otherwise.
+   *
+   * @return <code>true</code> if the glyphs are rendered as subscript,
+   *         <code>false</code> otherwise
+   */
+  public boolean isSubscript()
+  {
+    return subscript;
+  }
+
+  /**
+   * Sets the subscript flag.
+   *
+   * @param flag <code>true</code> if the glyphs are rendered as subscript,
+   *             <code>false</code> otherwise
+   */
+  protected void setSubscript(boolean flag)
+  {
+    subscript = flag;
+  }
+
+  /**
+   * Returns <code>true</code> if the glyphs are rendered as superscript,
+   * <code>false</code> otherwise.
+   *
+   * @return <code>true</code> if the glyphs are rendered as superscript,
+   *         <code>false</code> otherwise
+   */
+  public boolean isSuperscript()
+  {
+    return superscript;
+  }
+
+  /**
+   * Sets the superscript flag.
+   *
+   * @param flag <code>true</code> if the glyphs are rendered as superscript,
+   *             <code>false</code> otherwise
+   */
+  protected void setSuperscript(boolean flag)
+  {
+    superscript = flag;
+  }
+
+  /**
+   * Returns <code>true</code> if the glyphs are rendered strike-through,
+   * <code>false</code> otherwise.
+   *
+   * @return <code>true</code> if the glyphs are rendered strike-through,
+   *         <code>false</code> otherwise
+   */
+  public boolean isStrikeThrough()
+  {
+    return strikeThrough;
+  }
+
+  /**
+   * Sets the strike-through flag.
+   *
+   * @param flag <code>true</code> if the glyphs are rendered strike-through,
+   *             <code>false</code> otherwise
+   */
+  protected void setStrikeThrough(boolean flag)
+  {
+    strikeThrough = flag;
   }
 }
_______________________________________________
Classpath-patches mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/classpath-patches

Reply via email to