From 07e65fca52c77a31ee52f7247489f9f73f63f195 Mon Sep 17 00:00:00 2001 From: ray Date: Tue, 22 Mar 2005 23:14:54 +0000 Subject: [PATCH] Allow label sausages to override icon painting. Allow RadialMenuItems to add an additional icon to the sausage. git-svn-id: https://samskivert.googlecode.com/svn/trunk@1627 6335cc39-0255-0410-8fd6-9bcaacd3b74c --- .../java/com/samskivert/swing/LabelSausage.java | 14 +++++++++++--- .../src/java/com/samskivert/swing/RadialMenu.java | 12 ++++++++++++ .../java/com/samskivert/swing/RadialMenuItem.java | 13 +++++++++++++ 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/projects/samskivert/src/java/com/samskivert/swing/LabelSausage.java b/projects/samskivert/src/java/com/samskivert/swing/LabelSausage.java index 12d9383b..fe26bc98 100644 --- a/projects/samskivert/src/java/com/samskivert/swing/LabelSausage.java +++ b/projects/samskivert/src/java/com/samskivert/swing/LabelSausage.java @@ -111,9 +111,7 @@ public abstract class LabelSausage drawBase(gfx, x, y); // render our icon if we've got one - if (_icon != null) { - _icon.paintIcon(null, gfx, x + _xoff, y + _yoff); - } + drawIcon(gfx, x, y, cliData); drawLabel(gfx, x, y); drawBorder(gfx, x, y); @@ -134,6 +132,16 @@ public abstract class LabelSausage x, y, _size.width - 1, _size.height - 1, _dia, _dia); } + /** + * Draws the icon, if applicable. + */ + protected void drawIcon (Graphics2D gfx, int x, int y, Object cliData) + { + if (_icon != null) { + _icon.paintIcon(null, gfx, x + _xoff, y + _yoff); + } + } + /** * Draws the label. */ diff --git a/projects/samskivert/src/java/com/samskivert/swing/RadialMenu.java b/projects/samskivert/src/java/com/samskivert/swing/RadialMenu.java index 2fb08545..662f9a48 100644 --- a/projects/samskivert/src/java/com/samskivert/swing/RadialMenu.java +++ b/projects/samskivert/src/java/com/samskivert/swing/RadialMenu.java @@ -93,6 +93,18 @@ public class RadialMenu public boolean isEnabled (RadialMenu menu, RadialMenuItem item); } + /** + * An additional interface that can be implemented by the predicate + * to display extra status. + */ + public static interface IconPredicate extends Predicate + { + /** + * Return an additional predicate that should be drawn. + */ + public Icon getIcon (RadialMenu menu, RadialMenuItem item); + } + /** * Constructs a radial menu. */ diff --git a/projects/samskivert/src/java/com/samskivert/swing/RadialMenuItem.java b/projects/samskivert/src/java/com/samskivert/swing/RadialMenuItem.java index e2fb57fd..715d19a5 100644 --- a/projects/samskivert/src/java/com/samskivert/swing/RadialMenuItem.java +++ b/projects/samskivert/src/java/com/samskivert/swing/RadialMenuItem.java @@ -105,4 +105,17 @@ public class RadialMenuItem extends RadialLabelSausage { paint(gfx, x, y, menu); } + + // documentation inherited + protected void drawIcon (Graphics2D gfx, int x, int y, Object cliData) + { + super.drawIcon(gfx, x, y, cliData); + if (predicate instanceof RadialMenu.IconPredicate) { + Icon icon = ((RadialMenu.IconPredicate) predicate).getIcon( + (RadialMenu) cliData, this); + if (icon != null) { + icon.paintIcon(null, gfx, x + _xoff, y + _yoff); + } + } + } }