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); + } + } + } }