Author: tchemit Date: 2009-10-28 08:19:17 +0100 (Wed, 28 Oct 2009) New Revision: 1606 Added: branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/DecoratorListCellRenderer.java branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/DecoratorTableCellRenderer.java branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/MultiDecoratorListCellRenderer.java Removed: branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/decorator/swing/DecoratorListCellRenderer.java branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/decorator/swing/DecoratorTableCellRenderer.java Modified: branches/jaxx-2.X/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/content/ActorsContentUI.jaxx branches/jaxx-2.X/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/content/ContentUI.jaxx branches/jaxx-2.X/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/content/MoviesContentUI.jaxx branches/jaxx-2.X/jaxx-widgets/src/main/java/jaxx/runtime/swing/EntityComboBoxHandler.java Log: amelioration des renderer sur Decorator (et deplacement vers jaxx.runtime.swing.renderer) Modified: branches/jaxx-2.X/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/content/ActorsContentUI.jaxx =================================================================== --- branches/jaxx-2.X/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/content/ActorsContentUI.jaxx 2009-10-28 07:18:13 UTC (rev 1605) +++ branches/jaxx-2.X/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/content/ActorsContentUI.jaxx 2009-10-28 07:19:17 UTC (rev 1606) @@ -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 @@ 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'> Modified: branches/jaxx-2.X/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/content/ContentUI.jaxx =================================================================== --- branches/jaxx-2.X/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/content/ContentUI.jaxx 2009-10-28 07:18:13 UTC (rev 1605) +++ branches/jaxx-2.X/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/content/ContentUI.jaxx 2009-10-28 07:19:17 UTC (rev 1606) @@ -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); } Modified: branches/jaxx-2.X/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/content/MoviesContentUI.jaxx =================================================================== --- branches/jaxx-2.X/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/content/MoviesContentUI.jaxx 2009-10-28 07:18:13 UTC (rev 1605) +++ branches/jaxx-2.X/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/content/MoviesContentUI.jaxx 2009-10-28 07:19:17 UTC (rev 1606) @@ -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 @@ 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'> Deleted: branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/decorator/swing/DecoratorListCellRenderer.java =================================================================== --- branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/decorator/swing/DecoratorListCellRenderer.java 2009-10-28 07:18:13 UTC (rev 1605) +++ branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/decorator/swing/DecoratorListCellRenderer.java 2009-10-28 07:19:17 UTC (rev 1606) @@ -1,67 +0,0 @@ -/* - * *##% - * JAXX Runtime - * Copyright (C) 2008 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * ##%* - */ -package jaxx.runtime.decorator.swing; - -import jaxx.runtime.decorator.*; -import java.awt.Component; -import javax.swing.DefaultListCellRenderer; -import javax.swing.JList; -import javax.swing.ListCellRenderer; - -/** - * A {@link ListCellRenderer} which compute text with the given {@link #decorator} - * and leave the hand to the {@link #delegate} to perform the visual renderer. - * - * @author chemit - * @since 1.7.2 - */ -public class DecoratorListCellRenderer implements ListCellRenderer { - - /** - * Delegate cell renderer - */ - protected ListCellRenderer delegate; - /** - * Decorator to produce text to render - */ - protected Decorator<?> decorator; - - public DecoratorListCellRenderer(Decorator<?> decorator) { - this(new DefaultListCellRenderer(), decorator); - } - - public DecoratorListCellRenderer(ListCellRenderer delegate, Decorator<?> decorator) { - this.delegate = delegate; - this.decorator = decorator; - } - - @Override - public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { - if (value != null) { - if (value instanceof String) { - value = (String) value; - } else { - value = decorator.toString(value); - } - } - return delegate.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); - } -} Deleted: branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/decorator/swing/DecoratorTableCellRenderer.java =================================================================== --- branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/decorator/swing/DecoratorTableCellRenderer.java 2009-10-28 07:18:13 UTC (rev 1605) +++ branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/decorator/swing/DecoratorTableCellRenderer.java 2009-10-28 07:19:17 UTC (rev 1606) @@ -1,63 +0,0 @@ -/* - * *##% - * JAXX Runtime - * Copyright (C) 2008 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * ##%* - */ -package jaxx.runtime.decorator.swing; - -import jaxx.runtime.decorator.*; -import javax.swing.JTable; -import javax.swing.table.TableCellRenderer; -import java.awt.Component; -import javax.swing.table.DefaultTableCellRenderer; - -/** - * A {@link TableCellRenderer} which compute text with the given {@link #decorator} - * and leave the hand to the {@link #delegate} to perform the visual renderer. - * - * @author chemit - * @since 1.7.2 (was previously {@code jaxx.runtime.swing.DecoratorTableCellRenderer}). - */ -public class DecoratorTableCellRenderer implements TableCellRenderer { - - /** - * Delegate cell renderer - */ - protected TableCellRenderer delegate; - /** - * Decorator to produce text to render - */ - protected Decorator<?> decorator; - - public DecoratorTableCellRenderer(Decorator<?> decorator) { - this(new DefaultTableCellRenderer(), decorator); - } - - public DecoratorTableCellRenderer(TableCellRenderer delegate, Decorator<?> decorator) { - this.delegate = delegate; - this.decorator = decorator; - } - - @Override - public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasfocus, int row, int column) { - if (value != null) { - value = decorator.toString(value); - } - return delegate.getTableCellRendererComponent(table, value, isSelected, hasfocus, row, column); - } -} Copied: branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/DecoratorListCellRenderer.java (from rev 1603, branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/decorator/swing/DecoratorListCellRenderer.java) =================================================================== --- branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/DecoratorListCellRenderer.java (rev 0) +++ branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/DecoratorListCellRenderer.java 2009-10-28 07:19:17 UTC (rev 1606) @@ -0,0 +1,67 @@ +/* + * *##% + * JAXX Runtime + * Copyright (C) 2008 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ +package jaxx.runtime.swing.renderer; + +import jaxx.runtime.decorator.*; +import java.awt.Component; +import javax.swing.DefaultListCellRenderer; +import javax.swing.JList; +import javax.swing.ListCellRenderer; + +/** + * A {@link ListCellRenderer} which compute text with the given {@link #decorator} + * and leave the hand to the {@link #delegate} to perform the visual renderer. + * + * @author chemit + * @since 1.7.2 + */ +public class DecoratorListCellRenderer implements ListCellRenderer { + + /** + * Delegate cell renderer + */ + protected ListCellRenderer delegate; + /** + * Decorator to produce text to render + */ + protected Decorator<?> decorator; + + public DecoratorListCellRenderer(Decorator<?> decorator) { + this(new DefaultListCellRenderer(), decorator); + } + + public DecoratorListCellRenderer(ListCellRenderer delegate, Decorator<?> decorator) { + this.delegate = delegate; + this.decorator = decorator; + } + + @Override + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + if (value != null) { + if (value instanceof String) { + value = (String) value; + } else { + 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/DecoratorListCellRenderer.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: svn:mergeinfo + Copied: branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/DecoratorTableCellRenderer.java (from rev 1603, branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/decorator/swing/DecoratorTableCellRenderer.java) =================================================================== --- branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/DecoratorTableCellRenderer.java (rev 0) +++ branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/DecoratorTableCellRenderer.java 2009-10-28 07:19:17 UTC (rev 1606) @@ -0,0 +1,63 @@ +/* + * *##% + * JAXX Runtime + * Copyright (C) 2008 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ +package jaxx.runtime.swing.renderer; + +import jaxx.runtime.decorator.*; +import javax.swing.JTable; +import javax.swing.table.TableCellRenderer; +import java.awt.Component; +import javax.swing.table.DefaultTableCellRenderer; + +/** + * A {@link TableCellRenderer} which compute text with the given {@link #decorator} + * and leave the hand to the {@link #delegate} to perform the visual renderer. + * + * @author chemit + * @since 1.7.2 (was previously {@code jaxx.runtime.swing.DecoratorTableCellRenderer}). + */ +public class DecoratorTableCellRenderer implements TableCellRenderer { + + /** + * Delegate cell renderer + */ + protected TableCellRenderer delegate; + /** + * Decorator to produce text to render + */ + protected Decorator<?> decorator; + + public DecoratorTableCellRenderer(Decorator<?> decorator) { + this(new DefaultTableCellRenderer(), decorator); + } + + public DecoratorTableCellRenderer(TableCellRenderer delegate, Decorator<?> decorator) { + this.delegate = delegate; + this.decorator = decorator; + } + + @Override + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasfocus, int row, int column) { + if (value != null) { + value = decorator.toString(value); + } + return delegate.getTableCellRendererComponent(table, value, isSelected, hasfocus, row, column); + } +} Property changes on: branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/DecoratorTableCellRenderer.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Added: svn:mergeinfo + Added: branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/MultiDecoratorListCellRenderer.java =================================================================== --- branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/MultiDecoratorListCellRenderer.java (rev 0) +++ branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/MultiDecoratorListCellRenderer.java 2009-10-28 07:19:17 UTC (rev 1606) @@ -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); + } +} Property changes on: branches/jaxx-2.X/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/MultiDecoratorListCellRenderer.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Modified: branches/jaxx-2.X/jaxx-widgets/src/main/java/jaxx/runtime/swing/EntityComboBoxHandler.java =================================================================== --- branches/jaxx-2.X/jaxx-widgets/src/main/java/jaxx/runtime/swing/EntityComboBoxHandler.java 2009-10-28 07:18:13 UTC (rev 1605) +++ branches/jaxx-2.X/jaxx-widgets/src/main/java/jaxx/runtime/swing/EntityComboBoxHandler.java 2009-10-28 07:19:17 UTC (rev 1606) @@ -48,7 +48,7 @@ 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;