Author: tchemit Date: 2009-10-29 03:08:58 +0100 (Thu, 29 Oct 2009) New Revision: 1615 Added: branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/DecoratorProviderListCellRenderer.java Log: add a DecoratorProviderListCellRenderer Added: branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/DecoratorProviderListCellRenderer.java =================================================================== --- branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/DecoratorProviderListCellRenderer.java (rev 0) +++ branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/DecoratorProviderListCellRenderer.java 2009-10-29 02:08:58 UTC (rev 1615) @@ -0,0 +1,53 @@ +package jaxx.runtime.swing.renderer; + +import jaxx.runtime.decorator.Decorator; +import jaxx.runtime.decorator.DecoratorProvider; + +import javax.swing.*; +import java.awt.*; + +/** + * A {@link ListCellRenderer} which use decorators from the {@link #provider} to obtain the text to display. + * + * The interest of this renderer is to define a unique renderer for your application (put it in JAXXContext) + * and then use it simply :) + * + * User: chemit + * Date: 29 oct. 2009 + * Time: 03:00:53 + * @since 2.0.0 + * @see DecoratorProvider + */ +public class DecoratorProviderListCellRenderer implements ListCellRenderer { + + /** + * Delegate cell renderer + */ + protected ListCellRenderer delegate; + + /** + * provider of decorators + */ + protected DecoratorProvider provider; + + public DecoratorProviderListCellRenderer(DecoratorProvider provider) { + this(new DefaultListCellRenderer(), provider); + } + + public DecoratorProviderListCellRenderer(ListCellRenderer delegate, DecoratorProvider provider) { + this.delegate = delegate; + this.provider = provider; + } + + @Override + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + if (value != null) { + Decorator<?> decorator = provider.getDecorator(value); + + if (decorator != null) { + value = decorator.toString(value); + } + } + return delegate.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); + } +} Property changes on: branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/DecoratorProviderListCellRenderer.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL