This is an automated email from the git hooks/post-receive script. New commit to annotated tag v2.0.0-beta-1 in repository jaxx. See https://gitlab.nuiton.org/nuiton/jaxx.git commit 85711119c038ed63927a522afbca45d8c755cc48 Author: Tony Chemit <chemit@codelutin.com> Date: Wed Oct 28 07:19:17 2009 +0000 amelioration des renderer sur Decorator (et deplacement vers jaxx.runtime.swing.renderer) --- .../jaxx/navigation/content/ActorsContentUI.jaxx | 4 +- .../jaxx/navigation/content/ContentUI.jaxx | 9 ++- .../jaxx/navigation/content/MoviesContentUI.jaxx | 4 +- .../renderer}/DecoratorListCellRenderer.java | 2 +- .../renderer}/DecoratorTableCellRenderer.java | 2 +- .../renderer/MultiDecoratorListCellRenderer.java | 64 ++++++++++++++++++++++ .../jaxx/runtime/swing/EntityComboBoxHandler.java | 2 +- 7 files changed, 79 insertions(+), 8 deletions(-) diff --git a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/content/ActorsContentUI.jaxx b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/content/ActorsContentUI.jaxx index dea8369..7c0746e 100644 --- a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/content/ActorsContentUI.jaxx +++ b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/content/ActorsContentUI.jaxx @@ -24,7 +24,7 @@ import jaxx.runtime.SwingUtil; import jaxx.demo.component.jaxx.navigation.*; import jaxx.runtime.decorator.DecoratorUtils; -import jaxx.runtime.decorator.swing.DecoratorListCellRenderer; +import jaxx.runtime.swing.renderer.MultiDecoratorListCellRenderer; import jaxx.runtime.swing.navigation.NavigationTreeNode; @Override @@ -56,7 +56,7 @@ public void closeUI(NavigationTreeNode node) throws Exception { columnHeaderView='{toolbar}' horizontalScrollBarPolicy='{JScrollPane.HORIZONTAL_SCROLLBAR_NEVER}' verticalScrollBarPolicy='{JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED}'> - <JList id='list' model='{new DefaultListModel()}' cellRenderer='{new DecoratorListCellRenderer(DecoratorUtils.get(People.class.getSimpleName()))}'/> + <JList id='list' model='{new DefaultListModel()}' cellRenderer='{getContextValue(MultiDecoratorListCellRenderer.class)}'/> </JScrollPane> <JToolBar id='toolbar' constraints='BorderLayout.SOUTH' floatable='false'> diff --git a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/content/ContentUI.jaxx b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/content/ContentUI.jaxx index f5f9104..9a59431 100644 --- a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/content/ContentUI.jaxx +++ b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/content/ContentUI.jaxx @@ -27,10 +27,17 @@ import jaxx.runtime.SwingUtil; import jaxx.demo.component.jaxx.navigation.*; import jaxx.runtime.decorator.DecoratorUtils; -import jaxx.runtime.decorator.swing.DecoratorListCellRenderer; +import jaxx.runtime.decorator.MultiJXPathDecorator; +import jaxx.runtime.swing.renderer.MultiDecoratorListCellRenderer; import jaxx.runtime.swing.navigation.NavigationTreeNode; import jaxx.runtime.swing.navigation.NavigationContentUI; +// init shared list decorator +MultiJXPathDecorator<?> d0 = (MultiJXPathDecorator<?>)DecoratorUtils.get(People.class.getSimpleName()); +MultiJXPathDecorator<?> d1 = (MultiJXPathDecorator<?>)DecoratorUtils.get(Movie.class.getSimpleName()); +MultiDecoratorListCellRenderer r = new MultiDecoratorListCellRenderer(d0,d1); +setContextValue(r); + ContentUIHandler getHandler() { return getContextValue(ContentUIHandler.class); } diff --git a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/content/MoviesContentUI.jaxx b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/content/MoviesContentUI.jaxx index 1dfa5fa..a921b98 100644 --- a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/content/MoviesContentUI.jaxx +++ b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/content/MoviesContentUI.jaxx @@ -24,7 +24,7 @@ import jaxx.runtime.SwingUtil; import jaxx.demo.component.jaxx.navigation.*; import jaxx.runtime.decorator.DecoratorUtils; -import jaxx.runtime.decorator.swing.DecoratorListCellRenderer; +import jaxx.runtime.swing.renderer.MultiDecoratorListCellRenderer; import jaxx.runtime.swing.navigation.NavigationTreeNode; @Override @@ -56,7 +56,7 @@ public void closeUI(NavigationTreeNode node) throws Exception { columnHeaderView='{toolbar}' horizontalScrollBarPolicy='{JScrollPane.HORIZONTAL_SCROLLBAR_NEVER}' verticalScrollBarPolicy='{JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED}'> - <JList id='list' model='{new DefaultListModel()}' cellRenderer='{new DecoratorListCellRenderer(DecoratorUtils.get(Movie.class.getSimpleName()))}'/> + <JList id='list' model='{new DefaultListModel()}' cellRenderer='{getContextValue(MultiDecoratorListCellRenderer.class)}'/> </JScrollPane> <JToolBar id='toolbar' opaque='false' constraints='BorderLayout.SOUTH' floatable='false'> diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/decorator/swing/DecoratorListCellRenderer.java b/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/DecoratorListCellRenderer.java similarity index 98% rename from jaxx-runtime/src/main/java/jaxx/runtime/decorator/swing/DecoratorListCellRenderer.java rename to jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/DecoratorListCellRenderer.java index 99d82b8..0737e31 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/decorator/swing/DecoratorListCellRenderer.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/DecoratorListCellRenderer.java @@ -18,7 +18,7 @@ * <http://www.gnu.org/licenses/lgpl-3.0.html>. * ##%* */ -package jaxx.runtime.decorator.swing; +package jaxx.runtime.swing.renderer; import jaxx.runtime.decorator.*; import java.awt.Component; diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/decorator/swing/DecoratorTableCellRenderer.java b/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/DecoratorTableCellRenderer.java similarity index 98% rename from jaxx-runtime/src/main/java/jaxx/runtime/decorator/swing/DecoratorTableCellRenderer.java rename to jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/DecoratorTableCellRenderer.java index f5a9d58..9de69dc 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/decorator/swing/DecoratorTableCellRenderer.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/DecoratorTableCellRenderer.java @@ -18,7 +18,7 @@ * <http://www.gnu.org/licenses/lgpl-3.0.html>. * ##%* */ -package jaxx.runtime.decorator.swing; +package jaxx.runtime.swing.renderer; import jaxx.runtime.decorator.*; import javax.swing.JTable; diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/MultiDecoratorListCellRenderer.java b/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/MultiDecoratorListCellRenderer.java new file mode 100644 index 0000000..45e2d91 --- /dev/null +++ b/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/MultiDecoratorListCellRenderer.java @@ -0,0 +1,64 @@ +package jaxx.runtime.swing.renderer; + +import java.awt.Component; +import java.util.ArrayList; +import java.util.List; +import javax.swing.DefaultListCellRenderer; +import javax.swing.JList; +import javax.swing.ListCellRenderer; +import jaxx.runtime.decorator.Decorator; +import jaxx.runtime.decorator.JXPathDecorator; + +/** + * A {@link ListCellRenderer} which compute text with the matching decorator + * from {@link #decorators} and leave the hand to the {@link #delegate} to + * perform the visual renderer. + * + * @author chemit + * @since 2.0.0 + */ +public class MultiDecoratorListCellRenderer implements ListCellRenderer { + + /** + * Delegate cell renderer + */ + protected ListCellRenderer delegate; + /** + * accepted types + */ + protected List<Class<?>> types; + /** + * decorators for accepted types + */ + protected Decorator<?>[] decorators; + + public MultiDecoratorListCellRenderer(ListCellRenderer delegate, JXPathDecorator<?>... decorator) { + this.delegate = delegate; + this.types = new ArrayList<Class<?>>(); + List<Decorator<?>> tmp = new ArrayList<Decorator<?>>(); + for (JXPathDecorator<?> d : decorator) { + if (types.contains(d.getInternalClass())) { + throw new IllegalArgumentException("can not have twice a decorator of type " + d.getInternalClass()); + } + types.add(d.getInternalClass()); + tmp.add(d); + } + decorators = tmp.toArray(new Decorator<?>[tmp.size()]); + } + + public MultiDecoratorListCellRenderer(JXPathDecorator<?>... decorator) { + this(new DefaultListCellRenderer(), decorator); + } + + @Override + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + if (value != null) { + int i = types.indexOf(value.getClass()); + if (i != -1) { + Decorator<?> d = decorators[i]; + value = d.toString(value); + } + } + return delegate.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); + } +} diff --git a/jaxx-widgets/src/main/java/jaxx/runtime/swing/EntityComboBoxHandler.java b/jaxx-widgets/src/main/java/jaxx/runtime/swing/EntityComboBoxHandler.java index 1e73438..9877f68 100644 --- a/jaxx-widgets/src/main/java/jaxx/runtime/swing/EntityComboBoxHandler.java +++ b/jaxx-widgets/src/main/java/jaxx/runtime/swing/EntityComboBoxHandler.java @@ -48,7 +48,7 @@ import javax.swing.JComboBox; import jaxx.runtime.decorator.Decorator; import jaxx.runtime.decorator.JXPathDecorator; import jaxx.runtime.decorator.MultiJXPathDecorator; -import jaxx.runtime.decorator.swing.DecoratorListCellRenderer; +import jaxx.runtime.swing.renderer.DecoratorListCellRenderer; import jaxx.runtime.decorator.DecoratorUtils; import org.jdesktop.swingx.autocomplete.AutoCompletePropertyChangeListener; -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.