summaryrefslogtreecommitdiffstats
path: root/libjava/classpath/javax/swing/plaf/basic/BasicLabelUI.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/classpath/javax/swing/plaf/basic/BasicLabelUI.java')
-rw-r--r--libjava/classpath/javax/swing/plaf/basic/BasicLabelUI.java57
1 files changed, 38 insertions, 19 deletions
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicLabelUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicLabelUI.java
index fd4cff56895..d0964f4733e 100644
--- a/libjava/classpath/javax/swing/plaf/basic/BasicLabelUI.java
+++ b/libjava/classpath/javax/swing/plaf/basic/BasicLabelUI.java
@@ -53,6 +53,7 @@ import javax.swing.LookAndFeel;
import javax.swing.SwingUtilities;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.LabelUI;
+import javax.swing.text.View;
/**
* This is the Basic Look and Feel class for the JLabel. One BasicLabelUI
@@ -64,11 +65,22 @@ public class BasicLabelUI extends LabelUI implements PropertyChangeListener
protected static BasicLabelUI labelUI;
/**
+ * These fields hold the rectangles for the whole label,
+ * the icon and the text.
+ */
+ private Rectangle vr;
+ private Rectangle ir;
+ private Rectangle tr;
+
+ /**
* Creates a new BasicLabelUI object.
*/
public BasicLabelUI()
{
super();
+ vr = new Rectangle();
+ ir = new Rectangle();
+ tr = new Rectangle();
}
/**
@@ -99,13 +111,11 @@ public class BasicLabelUI extends LabelUI implements PropertyChangeListener
public Dimension getPreferredSize(JComponent c)
{
JLabel lab = (JLabel) c;
- Rectangle vr = new Rectangle();
- Rectangle ir = new Rectangle();
- Rectangle tr = new Rectangle();
Insets insets = lab.getInsets();
FontMetrics fm = lab.getFontMetrics(lab.getFont());
layoutCL(lab, fm, lab.getText(), lab.getIcon(), vr, ir, tr);
- Rectangle cr = tr.union(ir);
+ Rectangle cr = SwingUtilities.computeUnion(tr.x, tr.y, tr.width, tr.height,
+ ir);
return new Dimension(insets.left + cr.width + insets.right, insets.top
+ cr.height + insets.bottom);
@@ -148,11 +158,6 @@ public class BasicLabelUI extends LabelUI implements PropertyChangeListener
public void paint(Graphics g, JComponent c)
{
JLabel b = (JLabel) c;
-
- Rectangle tr = new Rectangle();
- Rectangle ir = new Rectangle();
- Rectangle vr = new Rectangle();
-
FontMetrics fm = g.getFontMetrics();
vr = SwingUtilities.calculateInnerArea(c, vr);
@@ -168,13 +173,21 @@ public class BasicLabelUI extends LabelUI implements PropertyChangeListener
if (icon != null)
icon.paintIcon(b, g, ir.x, ir.y);
- if (text != null && !text.equals(""))
- {
- if (b.isEnabled())
- paintEnabledText(b, g, text, tr.x, tr.y + fm.getAscent());
- else
- paintDisabledText(b, g, text, tr.x, tr.y + fm.getAscent());
- }
+ Object htmlRenderer = b.getClientProperty(BasicHTML.propertyKey);
+ if (htmlRenderer == null)
+ {
+ if (text != null && !text.equals(""))
+ {
+ if (b.isEnabled())
+ paintEnabledText(b, g, text, tr.x, tr.y + fm.getAscent());
+ else
+ paintDisabledText(b, g, text, tr.x, tr.y + fm.getAscent());
+ }
+ }
+ else
+ {
+ ((View) htmlRenderer).paint(g, tr);
+ }
}
/**
@@ -312,7 +325,7 @@ public class BasicLabelUI extends LabelUI implements PropertyChangeListener
*/
protected void installComponents(JLabel c)
{
- //FIXME: fix javadoc + implement.
+ BasicHTML.updateRenderer(c, c.getText());
}
/**
@@ -322,7 +335,8 @@ public class BasicLabelUI extends LabelUI implements PropertyChangeListener
*/
protected void uninstallComponents(JLabel c)
{
- //FIXME: fix javadoc + implement.
+ c.putClientProperty(BasicHTML.propertyKey, null);
+ c.putClientProperty(BasicHTML.documentBaseKey, null);
}
/**
@@ -402,6 +416,11 @@ public class BasicLabelUI extends LabelUI implements PropertyChangeListener
*/
public void propertyChange(PropertyChangeEvent e)
{
- // What to do here?
+ if (e.getPropertyName().equals("text"))
+ {
+ String text = (String) e.getNewValue();
+ JLabel l = (JLabel) e.getSource();
+ BasicHTML.updateRenderer(l, text);
+ }
}
}
OpenPOWER on IntegriCloud