Author: tchemit Date: 2010-03-25 17:35:00 +0100 (Thu, 25 Mar 2010) New Revision: 1808 Log: - clean navigation code - remove deprecated Item navigation api Removed: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/item/ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/ItemNavigationCardPanel.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/ItemNavigationPanel.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/ItemTreeNavigationAdapter.java Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/DemoTreeHelper.java trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/FullNavigationTreeModelBuilder.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/AbstractNavigationModelBuilder.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/GenericNavigationHelper.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/GenericNavigationTreeModel.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationContentUI.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationModel.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationModelBuilder.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationMultiContentUI.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationMultiTreeHandler.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationOneClicSelectionHandler.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeContextHelper.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeHandler.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeHandlerWithCardLayout.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeHelper.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeModel.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeModelBuilder.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNode.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNodeRenderer.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNodeRendererDecoratorImpl.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNodeRendererI18nImpl.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeTableModel.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeTableNode.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/SortedNavigationTreeModelBuilder.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/SortedNavigationTreeNode.java trunk/jaxx-runtime/src/test/java/jaxx/runtime/swing/navigation/NavigationTreeModelTest.java Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/DemoTreeHelper.java =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/DemoTreeHelper.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/DemoTreeHelper.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -26,7 +26,6 @@ import jaxx.demo.component.jaxx.editor.I18nEditorDemo; import jaxx.demo.component.jaxx.editor.NumberEditorDemo; import jaxx.demo.component.jaxx.navigation.FullNavigationTreeDemo; -import jaxx.demo.component.jaxx.navigation.item.ItemTreeNavigationDemo; import jaxx.demo.component.swing.*; import jaxx.demo.feature.databinding.BeanDataBindingDemo; import jaxx.demo.feature.databinding.BindingExtremeDemo; @@ -44,15 +43,13 @@ import jaxx.runtime.swing.navigation.*; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import static org.nuiton.i18n.I18n.n_; import javax.swing.*; import java.util.Stack; -/** - * - * @author chemit - */ +import static org.nuiton.i18n.I18n.n_; + +/** @author chemit */ public class DemoTreeHelper extends NavigationTreeHelper { static private final Log log = LogFactory.getLog(DemoTreeHelper.class); @@ -62,7 +59,7 @@ } @Override - public NavigationTreeModel createTreeModel(JAXXContext context) { + public NavigationModel<NavigationTreeNode> createTreeModel(JAXXContext context) { if (log.isDebugEnabled()) { log.debug("start creating demo model"); @@ -109,7 +106,6 @@ addDemo(I18nEditorDemo.class). goUp(). addText(n_("jaxxdemo.tree.component.jaxx.tree.navigation")). - addDemo(ItemTreeNavigationDemo.class). addDemo(FullNavigationTreeDemo.class). goUp(). addDemo(BoxedDecoratorDemo.class). @@ -130,7 +126,7 @@ addDemo(CounterDemo.class). addDemo(CalculatorDemo.class); - NavigationTreeModel model = builder.getModel(); + NavigationModel<NavigationTreeNode> model = builder.getModel(); if (log.isDebugEnabled()) { builder.printModel(model.getRoot()); @@ -187,13 +183,11 @@ static class TreeModelBuilder extends NavigationTreeModelBuilder { - /** - * la definition de l'unqiue object a partage - */ - static private final JAXXContextEntryDef<DemoConfig> def = JAXXUtil.newContextEntryDef(DemoConfig.class); - /** - * la pile des noeuds parent - */ + /** la definition de l'unqiue object a partage */ + static private final JAXXContextEntryDef<DemoConfig> def = + JAXXUtil.newContextEntryDef(DemoConfig.class); + + /** la pile des noeuds parent */ protected Stack<NavigationTreeNode> nodes; protected TreeModelBuilder(JAXXContext context) { Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/FullNavigationTreeModelBuilder.java =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/FullNavigationTreeModelBuilder.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/FullNavigationTreeModelBuilder.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -75,12 +75,12 @@ // construction du noeud root // il ne contient pas de context et ne sera pas visible - NavigationTreeNode rootNode = this.buildEmptyRoot(null, "$root"); + NavigationTreeNode rootNode = buildEmptyRoot(null, "$root"); // construction du noeud avec les films recupere la liste des films // dans le context avec la clef movies // navigation path = $root/movies - NavigationTreeNode moviesNode = this.build( + NavigationTreeNode moviesNode = build( rootNode, _("movies"), FullNavigationTreeHelper.MOVIES, @@ -91,7 +91,7 @@ for (Movie m : movies) { // navigation path = $root/movies/m.id - NavigationTreeNode movieNode = this.build( + NavigationTreeNode movieNode = build( moviesNode, mDecorator, "..[@id=\"" + m.getId() + "\"]", @@ -100,7 +100,7 @@ null); // navigation path = $root/movies/m.id/actors - NavigationTreeNode actorsNode = this.build( + NavigationTreeNode actorsNode = build( movieNode, _("actors"), "../actors", @@ -110,7 +110,7 @@ for (People p : m.getActors()) { // navigation path = $root/movies/m.id/actors/p.id - this.build( + build( actorsNode, pDecorator, "..[@id=\"" + p.getId() + "\"]", @@ -121,13 +121,13 @@ } // construction du noeud avec les acteurs - NavigationTreeNode actorsNode = this.build(rootNode, _("actors"), + NavigationTreeNode actorsNode = build(rootNode, _("actors"), FullNavigationTreeHelper.ACTORS, "actors", ActorsContentUI.class, null); for (People p : actors) { // navigation path = $root/actors/p.id - this.build( + build( actorsNode, pDecorator, "..[@id=\"" + p.getId() + "\"]", Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/AbstractNavigationModelBuilder.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/AbstractNavigationModelBuilder.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/AbstractNavigationModelBuilder.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -27,38 +27,40 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import java.util.Collection; import java.util.Enumeration; /** - * Interface to create a builder, this object is design to build a - * {@link NavigationModel}. + * Interface to create a builder, this object is design to build a {@link + * NavigationModel}. * * @author sletellier * @since 2.0.0 */ public abstract class AbstractNavigationModelBuilder<E extends NavigationTreeNode> implements NavigationModelBuilder<E> { + /** Logger */ + static private final Log log = + LogFactory.getLog(AbstractNavigationModelBuilder.class); + /** - * Logger - */ - static private final Log log = LogFactory.getLog(AbstractNavigationModelBuilder.class); - /** * The model dealed by the builder. - * - * <b>Note:</b> It is a good idea to keep only one instance of the model. - * If reset is required, should empty the model but not reinstanciate it. + * <p/> + * <b>Note:</b> It is a good idea to keep only one instance of the model. If + * reset is required, should empty the model but not reinstanciate it. */ protected NavigationModel<E> model; - /** - * default ui class to use if node does not define an ui class - */ + + /** default ui class to use if node does not define an ui class */ protected Class<? extends JAXXObject> defaultUIClass; - /** - * [optional] default action class - */ + + /** [optional] default action class */ protected Class<? extends JAXXAction> defaultUIHandlerClass; - public AbstractNavigationModelBuilder(Class<? extends JAXXObject> defaultUIClass, Class<? extends JAXXAction> defaultUIHandlerClass, NavigationModel<E> model) { + public AbstractNavigationModelBuilder( + Class<? extends JAXXObject> defaultUIClass, + Class<? extends JAXXAction> defaultUIHandlerClass, + NavigationModel<E> model) { this.defaultUIClass = defaultUIClass; this.defaultUIHandlerClass = defaultUIHandlerClass; this.model = model; @@ -68,75 +70,117 @@ return model; } - public E buildEmptyRoot(JAXXContextEntryDef<?> entryDef, String contextName) { - E node = createNavigationTreeNode(model.getPathSeparator(), contextName, entryDef, null); + public E buildEmptyRoot(JAXXContextEntryDef<?> entryDef, + String contextName) { + E node = createNavigationTreeNode( + model.getPathSeparator(), + contextName, + entryDef, + null + ); addI18nNodeRenderer(node, ""); return addChildNode(null, node); } - public E build(E parentNode, String libelle, - JAXXContextEntryDef<?> entryDef, - String entryPath, - String contextName, - Class<? extends JAXXObject> uiClass, - Class<? extends JAXXAction> actionClass) { - E node = createNavigationTreeNode(model.getPathSeparator(), contextName, entryDef, entryPath); + public E build(E parentNode, + String libelle, + JAXXContextEntryDef<?> entryDef, + String entryPath, + String contextName, + Class<? extends JAXXObject> uiClass, + Class<? extends JAXXAction> actionClass) { + E node = createNavigationTreeNode( + model.getPathSeparator(), + contextName, + entryDef, + entryPath + ); addI18nNodeRenderer(node, libelle); addNodeJaxxClasses(node, uiClass, actionClass); return addChildNode(parentNode, node); } - public E build(E parentNode, String libelle, - JAXXContextEntryDef<?> entryDef, - String contextName, - Class<? extends JAXXObject> uiClass, - Class<? extends JAXXAction> actionClass) { - E node = createNavigationTreeNode(model.getPathSeparator(), contextName, entryDef, null); + public E build(E parentNode, + String libelle, + JAXXContextEntryDef<?> entryDef, + String contextName, + Class<? extends JAXXObject> uiClass, + Class<? extends JAXXAction> actionClass) { + E node = createNavigationTreeNode( + model.getPathSeparator(), + contextName, + entryDef, + null + ); addI18nNodeRenderer(node, libelle); addNodeJaxxClasses(node, uiClass, actionClass); return addChildNode(parentNode, node); } - public E build(E parentNode, String libelle, - String entryPath, - String contextName, - Class<? extends JAXXObject> uiClass, - Class<? extends JAXXAction> actionClass) { - E node = createNavigationTreeNode(model.getPathSeparator(), contextName, null, entryPath); + public E build(E parentNode, + String libelle, + String entryPath, + String contextName, + Class<? extends JAXXObject> uiClass, + Class<? extends JAXXAction> actionClass) { + E node = createNavigationTreeNode( + model.getPathSeparator(), + contextName, + null, + entryPath + ); addI18nNodeRenderer(node, libelle); addNodeJaxxClasses(node, uiClass, actionClass); return addChildNode(parentNode, node); } - public E build(E parentNode, Decorator<?> decorator, - JAXXContextEntryDef<?> entryDef, - String entryPath, - String contextName, - Class<? extends JAXXObject> uiClass, - Class<? extends JAXXAction> actionClass) { - E node = createNavigationTreeNode(model.getPathSeparator(), contextName, entryDef, entryPath); + public E build(E parentNode, + Decorator<?> decorator, + JAXXContextEntryDef<?> entryDef, + String entryPath, + String contextName, + Class<? extends JAXXObject> uiClass, + Class<? extends JAXXAction> actionClass) { + E node = createNavigationTreeNode( + model.getPathSeparator(), + contextName, + entryDef, + entryPath + ); addDecoratorNodeRenderer(node, decorator); addNodeJaxxClasses(node, uiClass, actionClass); return addChildNode(parentNode, node); } - public E build(E parentNode, Decorator<?> decorator, - JAXXContextEntryDef<?> entryDef, - String contextName, - Class<? extends JAXXObject> uiClass, - Class<? extends JAXXAction> actionClass) { - E node = createNavigationTreeNode(model.getPathSeparator(), contextName, entryDef, null); + public E build(E parentNode, + Decorator<?> decorator, + JAXXContextEntryDef<?> entryDef, + String contextName, + Class<? extends JAXXObject> uiClass, + Class<? extends JAXXAction> actionClass) { + E node = createNavigationTreeNode( + model.getPathSeparator(), + contextName, + entryDef, + null + ); addDecoratorNodeRenderer(node, decorator); addNodeJaxxClasses(node, uiClass, actionClass); return addChildNode(parentNode, node); } - public E build(E parentNode, Decorator<?> decorator, - String entryPath, - String contextName, - Class<? extends JAXXObject> uiClass, - Class<? extends JAXXAction> actionClass) { - E node = createNavigationTreeNode(model.getPathSeparator(), contextName, null, entryPath); + public E build(E parentNode, + Decorator<?> decorator, + String entryPath, + String contextName, + Class<? extends JAXXObject> uiClass, + Class<? extends JAXXAction> actionClass) { + E node = createNavigationTreeNode( + model.getPathSeparator(), + contextName, + null, + entryPath + ); addDecoratorNodeRenderer(node, decorator); addNodeJaxxClasses(node, uiClass, actionClass); return addChildNode(parentNode, node); @@ -158,12 +202,12 @@ } else { parentNode.add(node); } - model.nodeStructureChanged(node); + model.nodeStructureChanged(parentNode == null ? node : parentNode); return node; } public E removeChildNode(E node) { - E parentNode = (E)node.getParent(); + E parentNode = (E) node.getParent(); model.removeNodeFromParent(node); return parentNode; } @@ -188,7 +232,9 @@ if (node == null) { return; } - log.info("node " + node.getFullPath() + ", jxpath: " + node.getJaxxContextEntryPath() + ", entryContextDef: " + node.getJaxxContextEntryDef()); + log.info("node " + node.getFullPath() + ", jxpath: " + + node.getJaxxContextEntryPath() + ", entryContextDef: " + + node.getJaxxContextEntryDef()); if (log.isDebugEnabled()) { log.debug("node userObject" + node.getUserObject()); log.debug("value from node " + node.getBean(getModel().getContext())); @@ -200,8 +246,13 @@ } } - // To create your own instance of NavigationTreeTableNode - public abstract E createNavigationTreeNode(String pathSeparator, String contextName, JAXXContextEntryDef<?> jaxxContextEntryDef, String jaxxContextEntryPath); +// // To create your own instance of NavigationTreeTableNode +// +// public abstract E createNavigationTreeNode( +// String pathSeparator, +// String contextName, +// JAXXContextEntryDef<?> jaxxContextEntryDef, +// String jaxxContextEntryPath); public static abstract class ChildBuilder<O, E extends NavigationTreeNode> { @@ -219,7 +270,12 @@ protected abstract String getNavigationPath(O child); - public void build(E parent, boolean cacheValues, Class<? extends O> klass, java.util.Collection<? extends O> beans, Class<? extends JAXXObject> ui, Class<? extends JAXXAction> actionClass) { + public void build(E parent, + boolean cacheValues, + Class<? extends O> klass, + Collection<? extends O> beans, + Class<? extends JAXXObject> ui, + Class<? extends JAXXAction> actionClass) { if (beans == null || beans.isEmpty()) { // no bean to treate @@ -231,7 +287,14 @@ E node; for (O o : beans) { - node = builder.build(parent, getDecorator(o), getJXPath(o), getNavigationPath(o), ui, actionClass); + node = builder.build( + parent, + getDecorator(o), + getJXPath(o), + getNavigationPath(o), + ui, + actionClass + ); if (cacheValues) { // cache the bean value to improve performance node.setBean(o); @@ -239,7 +302,12 @@ } } - public void build(E parent, boolean cacheValues, Class<? extends O> klass, O[] beans, Class<? extends JAXXObject> ui, Class<? extends JAXXAction> actionClass) { + public void build(E parent, + boolean cacheValues, + Class<? extends O> klass, + O[] beans, + Class<? extends JAXXObject> ui, + Class<? extends JAXXAction> actionClass) { if (beans == null || beans.length == 0) { // no bean to treate @@ -251,7 +319,14 @@ E node; for (O o : beans) { - node = builder.build(parent, getDecorator(o), getJXPath(o), getNavigationPath(o), ui, actionClass); + node = builder.build( + parent, + getDecorator(o), + getJXPath(o), + getNavigationPath(o), + ui, + actionClass + ); if (cacheValues) { // cache the bean value to improve performance node.setBean(o); Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/GenericNavigationHelper.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/GenericNavigationHelper.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/GenericNavigationHelper.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -34,18 +34,17 @@ /** * Helper object associated to a given navigation tree system. - * + * <p/> * To helper is context safe (base on a {@link NavigationTreeContextHelper}. * * @author Letellier - * @since 2.0.1 + * @param <E> type of nodes in model * @see NavigationTreeModel + * @since 2.0.1 */ -public abstract class GenericNavigationHelper <E extends NavigationTreeNode> extends NavigationTreeContextHelper<E>{ +public abstract class GenericNavigationHelper<E extends NavigationTreeNode> extends NavigationTreeContextHelper<E> { - /** - * Logger - */ + /** Logger */ static private final Log log = LogFactory.getLog(NavigationTreeHelper.class); @@ -55,7 +54,7 @@ * @param context the context to associate with fresh model * @return the new model build with data from the given context */ - public abstract NavigationModel createTreeModel(JAXXContext context); + public abstract NavigationModel<E> createTreeModel(JAXXContext context); /** * Create the tree handler. @@ -71,8 +70,8 @@ public Object getContextValue(JAXXContext context, String path) throws InvocationTargetException, NoSuchMethodException, - IllegalAccessException { - NavigationModel treeModel = getSafeModel(context); + IllegalAccessException { + NavigationModel<E> treeModel = getSafeModel(context); return treeModel.getBean(path); } @@ -82,24 +81,24 @@ } public E findNode(JAXXContext context, String path, - String regex) { + String regex) { NavigationModel<E> treeModel = getSafeModel(context); return treeModel.findNode(path, regex); } public E findNode(JAXXContext context, String path, - Pattern regex) { + Pattern regex) { NavigationModel<E> treeModel = getSafeModel(context); return treeModel.findNode(path, regex); } public E findNode(JAXXContext context, String path, - String regex, String suffix) { + String regex, String suffix) { NavigationModel<E> treeModel = getSafeModel(context); - E node= treeModel.findNode(path, regex); + E node = treeModel.findNode(path, regex); if (node != null && suffix != null) { node = treeModel.findNode(node, suffix); } @@ -107,7 +106,7 @@ } public E findNode(JAXXContext context, String path, - Pattern regex, String suffix) { + Pattern regex, String suffix) { NavigationModel<E> treeModel = getSafeModel(context); @@ -122,7 +121,7 @@ * Sélection d'un noeud dans l'arbre de navigation à partir de son path. * * @param context le contexte applicatif - * @param path le path absolue du noeud dans l'arbre + * @param path le path absolue du noeud dans l'arbre */ public void selectNode(JAXXContext context, String path) { E node = findNode(context, path); @@ -138,18 +137,18 @@ * Sélection d'un noeud dans l'arbre de navigation. * * @param context le contexte applicatif - * @param node le noeud à sélectionner dans l'arbre + * @param node le noeud à sélectionner dans l'arbre */ public void selectNode(JAXXContext context, E node) { - NavigationModel navigationModel = getSafeModel(context); + NavigationModel<E> navigationModel = getSafeModel(context); if (log.isDebugEnabled()) { log.debug(node); } TreePath path = new TreePath(navigationModel.getPathToRoot(node)); JTree tree = getTree(context); - if (tree == null){ + if (tree == null) { // FIXME : Refactor in other helper ? // If its JXTreeTable JXTreeTable treeTable = getSafeTreeTable(context); @@ -174,7 +173,7 @@ // pas de noeud selectionne throw new NullPointerException("no selected node in context"); } - node = (E)node.getParent(); + node = (E) node.getParent(); selectNode(context, node); } @@ -184,11 +183,11 @@ * * @param current the node to test * @param beanClass the type of the internal class to seek of - * @return the first ancestor node with the matching class or - * {@code null} if not found + * @return the first ancestor node with the matching class or {@code null} + * if not found */ public E getParentNode(E current, - Class<?> beanClass) { + Class<?> beanClass) { if (current == null) { // ancestor not found return null; @@ -198,13 +197,13 @@ return current; } // try in the parent of node - return getParentNode((E)current.getParent(), beanClass); + return getParentNode((E) current.getParent(), beanClass); } /** * Sélection d'un fils du noeud selectionne dans l'arbre de navigation. * - * @param context le contexte applicatif + * @param context le contexte applicatif * @param childIndex index du fils a selectionner */ public void gotoChildNode(JAXXContext context, int childIndex) { @@ -215,18 +214,18 @@ // pas de noeud selectionne throw new NullPointerException("no selected node in context"); } - node = (E)node.getChildAt(childIndex); + node = (E) node.getChildAt(childIndex); selectNode(context, node); } /** * Demande une opération de repaint sur un noeud de l'arbre de navigation. - * + * <p/> * <b>Note:</b> La descendance du noeud n'est pas repainte. * * @param context le contexte applicatif - * @param node le noeud à repaindre + * @param node le noeud à repaindre */ public void repaintNode(JAXXContext context, E node) { repaintNode(context, node, false); @@ -234,17 +233,18 @@ /** * Demande une opération de repaint sur un noeud de l'arbre de navigation. - * + * <p/> * <b>Note:</b> La descendance du noeud est repainte si le paramètre * <code>deep</code> est à <code>true</code>. * * @param context le contexte applicatif - * @param node le noeud à repaindre - * @param deep un flag pour activer la repainte de la descendance du noeud + * @param node le noeud à repaindre + * @param deep un flag pour activer la repainte de la descendance du + * noeud */ public void repaintNode(JAXXContext context, E node, boolean deep) { - NavigationModel navigationModel = getSafeModel(context); + NavigationModel<E> navigationModel = getSafeModel(context); if (log.isDebugEnabled()) { log.debug(node); } @@ -260,30 +260,13 @@ } } - /** - * @deprecated please use {@link #getSafeModel(JAXXContext)}, will be - * remove soon - * @param context where to find - * @return the tree model - * @throws NullPointerException if model is null - */ - @Deprecated - public NavigationTreeModel getSafeTreeModel(JAXXContext context) + public NavigationModel<E> getSafeModel(JAXXContext context) throws NullPointerException { - NavigationModel model = getSafeModel(context); - if (model instanceof NavigationTreeModel){ - return (NavigationTreeModel) model; - } - return null; - } - - public NavigationModel getSafeModel(JAXXContext context) - throws NullPointerException { - NavigationModel model = getModel(context); + NavigationModel<E> model = getModel(context); if (model == null) { - throw new NullPointerException("could not find tree model " + - "with key " + getModelContextEntry() + " in context " + - context); + throw new NullPointerException( + "could not find tree model with key " + + getModelContextEntry() + " in context " + context); } return model; } @@ -291,8 +274,9 @@ public JTree getSafeTree(JAXXContext context) throws NullPointerException { JTree tree = getTree(context); if (tree == null) { - throw new NullPointerException("could not find tree with key " + - getTreeContextEntry() + " in context " + context); + throw new NullPointerException( + "could not find tree with key " + getTreeContextEntry() + + " in context " + context); } return tree; } @@ -301,7 +285,8 @@ throws NullPointerException { JXTreeTable treeTable = getTreeTable(context); if (treeTable == null) { - throw new NullPointerException("could not find tree with key " + + throw new NullPointerException( + "could not find tree with key " + getTreeTableContextEntry() + " in context " + context); } return treeTable; Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/GenericNavigationTreeModel.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/GenericNavigationTreeModel.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/GenericNavigationTreeModel.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -26,26 +26,27 @@ import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeNode; +import java.lang.reflect.Array; import java.util.Enumeration; import java.util.StringTokenizer; import java.util.regex.Matcher; import java.util.regex.Pattern; /** - * Model of the tree used for a navigation tree. - * <p/> - * Il est composé de {@link NavigationTreeNode} + * Model of the tree used for a navigation tree. It is composed of {@link E} + * nodes. * * @author letellier * @since 2.0.1 + * @param <E> the type of nodes in model */ -public class GenericNavigationTreeModel<E extends NavigationTreeNode> extends DefaultTreeModel implements NavigationModel<E>{ +public class GenericNavigationTreeModel<E extends NavigationTreeNode> extends DefaultTreeModel implements NavigationModel<E> { static private final long serialVersionUID = 1L; - /** - * Logger - */ + + /** Logger */ static private final Log log = LogFactory.getLog(NavigationTreeModel.class); + /** * The path separator used to build the {@link NavigationTreeNode#fullPath}. * @@ -53,20 +54,17 @@ * @see NavigationTreeNode#getFullPath() */ protected final String pathSeparator; - /** - * Context to retrieve beans - */ + + /** Context to retrieve beans */ private JAXXContext context; - public GenericNavigationTreeModel(String pathSeparator, JAXXContext context) { + public GenericNavigationTreeModel(String pathSeparator, + JAXXContext context) { super(null); this.pathSeparator = pathSeparator; this.context = context; } - /** - * @see NavigationModel#getRoot() - */ @Override public E getRoot() { return (E) super.getRoot(); @@ -77,56 +75,34 @@ super.setRoot(root); } - /** - * @see NavigationModel#findNode(String) - */ @Override public E findNode(String path) { return findNode(getRoot(), path, (Pattern) null); } - /** - * @see NavigationModel#findNode(String, String) - */ @Override public E findNode(String path, String regex) { return findNode(getRoot(), path, regex); } - /** - * @see NavigationModel#findNode(String, Pattern) - */ @Override public E findNode(String path, Pattern regex) { return findNode(getRoot(), path, regex); } - /** - * @see NavigationModel#findNode(NavigationTreeNode, String) - */ @Override public E findNode(E root, String path) { return findNode(root, path, (Pattern) null); } - /** - * @see NavigationModel#findNode(NavigationTreeNode, String, String) - */ @Override - public E findNode(E root, - String path, - String regex) { + public E findNode(E root, String path, String regex) { return findNode(root, path, - regex == null ? null : Pattern.compile(regex)); + regex == null ? null : Pattern.compile(regex)); } - /** - * @see NavigationModel#findNode(NavigationTreeNode, String, Pattern) - */ @Override - public E findNode(E root, - String path, - Pattern regex) { + public E findNode(E root, String path, Pattern regex) { if (regex != null) { Matcher matcher = regex.matcher(path); if (!matcher.matches() || matcher.groupCount() < 1) { @@ -148,22 +124,16 @@ } } while (stk.hasMoreTokens()) { - result = (E)result.getChild(stk.nextToken()); + result = (E) result.getChild(stk.nextToken()); } return result; } - /** - * @see NavigationModel#getContext() - */ @Override public JAXXContext getContext() { return context; } - /** - * @see NavigationModel#getBean(String) - */ @Override public Object getBean(String navigationPath) { Object result; @@ -172,9 +142,6 @@ return result; } - /** - * @see NavigationModel#getBean(NavigationTreeNode) - */ @Override public Object getBean(E node) { if (node == null) { @@ -185,23 +152,17 @@ return node.getBean(getContext()); } - /** - * @see NavigationModel#nodeChanged(TreeNode) - */ @Override - public void nodeChanged(TreeNode node) { + public void nodeChanged(E node) { nodeChanged(node, false); if (log.isDebugEnabled()) { log.debug(node); } } - /** - * @see NavigationModel#nodeStructureChanged(TreeNode) - */ @Override - public void nodeStructureChanged(TreeNode node) { - E n = (E) node; + public void nodeStructureChanged(E node) { + E n = node; //TC-20091004 never launch a deep reload reload(n, true); super.nodeStructureChanged(node); @@ -210,18 +171,20 @@ } } - /** - * @see NavigationModel#nodeChanged(TreeNode, boolean) - */ @Override - public void nodeChanged(TreeNode node, boolean deep) { + public void nodeChanged(E node, boolean deep) { - E n = (E) node; + E n = node; //TC-20091004 never launch a deep clean, since we do a deep nodeChanged. reload(n, deep); super.nodeChanged(node); } + @Override + public String getPathSeparator() { + return pathSeparator; + } + protected void reload(E node) { reload(node, false); } @@ -241,11 +204,16 @@ } } - /** - * @see NavigationModel#getPathSeparator() - */ @Override - public String getPathSeparator() { - return pathSeparator; + public E[] getPathToRoot(E aNode) { + TreeNode[] treeNodes = super.getPathToRoot(aNode); + E[] result = (E[]) Array.newInstance(aNode.getClass(),treeNodes.length); + System.arraycopy(treeNodes,0,result,0,treeNodes.length); + return result; } + + @Override + public void removeNodeFromParent(E node) { + super.removeNodeFromParent(node); + } } Deleted: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/ItemNavigationCardPanel.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/ItemNavigationCardPanel.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/ItemNavigationCardPanel.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -1,82 +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.swing.navigation; - -import java.awt.CardLayout; -import java.awt.Component; -import javax.swing.JPanel; -import jaxx.runtime.swing.Item; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * - * @author letellier - * @since 1.7.2 - */ -public class ItemNavigationCardPanel extends JPanel { - - /** to use log facility, just put in your code: log.info(\"...\"); */ - static private final Log log = LogFactory.getLog(ItemNavigationCardPanel.class); - private static final long serialVersionUID = 1L; - CardLayout layout; - - public ItemNavigationCardPanel() { - super(); - - layout = new CardLayout(); - setLayout(layout); - } - - public void showItem(Item i) { - if (i != null) { - Object value = i.getValue(); - if (value != null) { - if (value instanceof Class<?>) { - layout.show(this, ((Class<?>) value).getName()); - } else { - layout.show(this, value.getClass().getName()); - } - } - } - } - - public Component getShowedComponent() { - Component[] components = getComponents(); - if (components != null) { - for (Component c : components) { - if (c.isVisible()) { - return c; - } - } - } - return null; - } - - @Override - public Component add(Component comp) { - if (!(comp instanceof ItemNavigationPanel)) { - throw new IllegalArgumentException("ItemNavigationCardPanel must be have only ItemNavigationPanel children"); - } - super.add(comp, ((ItemNavigationPanel) comp).getAssociatedClass().getName()); - return comp; - } -} Deleted: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/ItemNavigationPanel.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/ItemNavigationPanel.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/ItemNavigationPanel.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -1,44 +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.swing.navigation; - -import javax.swing.JPanel; - -/** - * - * @author letellier - */ -public class ItemNavigationPanel extends JPanel{ - - private static final long serialVersionUID = 1L; - - protected Class<?> associatedClass = null; - - public ItemNavigationPanel(Class<?> associatedClass) { - this.associatedClass = associatedClass; - } - - public Class<?> getAssociatedClass() { - return associatedClass; - } - -} Deleted: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/ItemTreeNavigationAdapter.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/ItemTreeNavigationAdapter.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/ItemTreeNavigationAdapter.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -1,89 +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.swing.navigation; - -import javax.swing.event.TreeSelectionEvent; -import javax.swing.event.TreeSelectionListener; -import javax.swing.tree.TreeModel; -import javax.swing.tree.TreePath; -import jaxx.runtime.JAXXObject; -import jaxx.runtime.swing.Item; -import jaxx.runtime.swing.JAXXTree; -import jaxx.runtime.swing.JAXXTree.JAXXTreeModel; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** A {@link javax.swing.event.TreeSelectionListener} implementation@@author letellier */ -public abstract class ItemTreeNavigationAdapter implements TreeSelectionListener { - - /** to use log facility, just put in your code: log.info(\"...\"); */ - static private final Log log = LogFactory.getLog(ItemTreeNavigationAdapter.class); - - /** l'ui contenant l'arbre de navigation */ - protected JAXXObject context; - - protected JAXXTree tree; - protected ItemNavigationCardPanel cardPanel; - - public ItemTreeNavigationAdapter(JAXXObject context, JAXXTree tree, ItemNavigationCardPanel cardPanel) { - super(); - this.context = context; - this.tree = tree; - this.cardPanel = cardPanel; - - // Attache ce listener a l'arbre de navigation - tree.addTreeSelectionListener(this); - } - - @Override - public void valueChanged(TreeSelectionEvent e) { - log.debug("Selection in JAXXTree changed" + e.getPath()); - - // Recuperation du path selectionne - TreePath path = e.getNewLeadSelectionPath(); - if (path == null){ - path = e.getOldLeadSelectionPath(); - } - TreeModel model = tree.getModel(); - - if (!(model instanceof JAXXTreeModel)){ - log.error("Its not an JAXXTreeModel"); - return; - } - - // Find item coresponding - Object lastPathComponent = path.getLastPathComponent(); - Item itemSelected = ((JAXXTreeModel) model).findItem(lastPathComponent); - - // Show corresponding panel - cardPanel.showItem(itemSelected); - - // Notifie change - valueChanged(itemSelected.getValue()); - } - - /** - * Method abstraite pour pouvoir propager la donnee selectionner - * - * @param data value of the node selected - */ - protected abstract void valueChanged(Object data); -} Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationContentUI.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationContentUI.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationContentUI.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -20,6 +20,8 @@ */ package jaxx.runtime.swing.navigation; +import java.awt.*; + /** * Basic contract on a content UI. * @@ -29,24 +31,22 @@ public interface NavigationContentUI { /** - * Init the ui just before been opened by the method - * {@link NavigationTreeHandler#openUI(java.awt.Component, - * jaxx.runtime.swing.navigation.NavigationTreeNode)}. + * Init the ui just before been opened by the method {@link + * NavigationTreeHandler#openUI(Component, NavigationTreeNode)}. * * @param node the selected node associated to the ui * @throws Exception if any pb while opening the content's ui - * @see NavigationTreeHandler#openUI(java.awt.Component, - * jaxx.runtime.swing.navigation.NavigationTreeNode) + * @see NavigationTreeHandler#openUI(Component, NavigationTreeNode) */ void openUI(NavigationTreeNode node) throws Exception; /** - * Clean the ui after been closed by the method - * {@link NavigationTreeHandler#closeUI(java.awt.Component)}. + * Clean the ui after been closed by the method {@link + * NavigationTreeHandler#closeUI(Component)}. * * @param node the selected node associated to the ui * @throws Exception if any pb when closing the content'sui - * @see NavigationTreeHandler#closeUI(java.awt.Component) + * @see NavigationTreeHandler#closeUI(Component) */ void closeUI(NavigationTreeNode node) throws Exception; } Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationModel.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationModel.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationModel.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -22,7 +22,6 @@ import jaxx.runtime.JAXXContext; -import javax.swing.tree.MutableTreeNode; import javax.swing.tree.TreeModel; import javax.swing.tree.TreeNode; import java.util.regex.Pattern; @@ -41,9 +40,9 @@ void setRoot(E root); - TreeNode[] getPathToRoot(TreeNode aNode); + TreeNode[] getPathToRoot(E aNode); - public void removeNodeFromParent(MutableTreeNode node); + void removeNodeFromParent(E node); /** * Search from the root node a node named by his fully path (concatenation @@ -122,8 +121,7 @@ * @return the node matching the fully context from the given root node, * or <code>null</code> if not found. */ - E findNode(E root, String path, - String regex); + E findNode(E root, String path, String regex); /** * Apply first the regex pattern to obtain the searched node. @@ -138,8 +136,7 @@ * @return the node matching the fully context from the given root node, * or <code>null</code> if not found. */ - E findNode(E root, String path, - Pattern regex); + E findNode(E root, String path, Pattern regex); JAXXContext getContext(); @@ -160,11 +157,11 @@ */ Object getBean(E node); - void nodeChanged(TreeNode node); + void nodeChanged(E node); - void nodeStructureChanged(TreeNode node); + void nodeStructureChanged(E node); - void nodeChanged(TreeNode node, boolean deep); + void nodeChanged(E node, boolean deep); String getPathSeparator(); } Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationModelBuilder.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationModelBuilder.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationModelBuilder.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -26,67 +26,73 @@ import jaxx.runtime.decorator.Decorator; /** - * Interface to create a builder, this object is design to build a - * {@link NavigationModel}. + * Interface to create a builder, this object is design to build a {@link + * NavigationModel}. * * @author sletellier * @since 2.0.0 */ -public interface NavigationModelBuilder <E extends NavigationTreeNode> { +public interface NavigationModelBuilder<E extends NavigationTreeNode> { - NavigationModel getModel(); + NavigationModel<E> getModel(); - E buildEmptyRoot(JAXXContextEntryDef<?> entryDef, - String contextName); + // To create your own instance of NavigationTreeTableNode + E createNavigationTreeNode( + String pathSeparator, + String contextName, + JAXXContextEntryDef<?> jaxxContextEntryDef, + String jaxxContextEntryPath); + + E buildEmptyRoot(JAXXContextEntryDef<?> entryDef, String contextName); + E build(E parentNode, - String libelle, - JAXXContextEntryDef<?> entryDef, - String entryPath, - String contextName, - Class<? extends JAXXObject> uiClass, - Class<? extends JAXXAction> actionClass); + String libelle, + JAXXContextEntryDef<?> entryDef, + String entryPath, + String contextName, + Class<? extends JAXXObject> uiClass, + Class<? extends JAXXAction> actionClass); E build(E parentNode, - String libelle, - JAXXContextEntryDef<?> entryDef, - String contextName, - Class<? extends JAXXObject> uiClass, - Class<? extends JAXXAction> actionClass); + String libelle, + JAXXContextEntryDef<?> entryDef, + String contextName, + Class<? extends JAXXObject> uiClass, + Class<? extends JAXXAction> actionClass); E build(E parentNode, - String libelle, - String entryPath, - String contextName, - Class<? extends JAXXObject> uiClass, - Class<? extends JAXXAction> actionClass); + String libelle, + String entryPath, + String contextName, + Class<? extends JAXXObject> uiClass, + Class<? extends JAXXAction> actionClass); E build(E parentNode, - Decorator<?> decorator, - JAXXContextEntryDef<?> entryDef, - String entryPath, - String contextName, - Class<? extends JAXXObject> uiClass, - Class<? extends JAXXAction> actionClass); + Decorator<?> decorator, + JAXXContextEntryDef<?> entryDef, + String entryPath, + String contextName, + Class<? extends JAXXObject> uiClass, + Class<? extends JAXXAction> actionClass); E build(E parentNode, - Decorator<?> decorator, - JAXXContextEntryDef<?> entryDef, - String contextName, - Class<? extends JAXXObject> uiClass, - Class<? extends JAXXAction> actionClass); + Decorator<?> decorator, + JAXXContextEntryDef<?> entryDef, + String contextName, + Class<? extends JAXXObject> uiClass, + Class<? extends JAXXAction> actionClass); E build(E parentNode, - Decorator<?> decorator, - String entryPath, - String contextName, - Class<? extends JAXXObject> uiClass, - Class<? extends JAXXAction> actionClass); + Decorator<?> decorator, + String entryPath, + String contextName, + Class<? extends JAXXObject> uiClass, + Class<? extends JAXXAction> actionClass); E removeChildNode(E node); - void addI18nNodeRenderer(E node, - String libelle); + void addI18nNodeRenderer(E node, String libelle); void addDecoratorNodeRenderer(E node, Decorator<?> decorator); Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationMultiContentUI.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationMultiContentUI.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationMultiContentUI.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -21,7 +21,7 @@ package jaxx.runtime.swing.navigation; -import java.awt.Component; +import java.awt.*; import java.util.List; /** @@ -30,11 +30,11 @@ * @author sletellier * @since 2.0.1 */ -public interface NavigationMultiContentUI extends NavigationContentUI{ +public interface NavigationMultiContentUI extends NavigationContentUI { /** - * Init the ui just before been opened by the method - * {@link NavigationMultiTreeHandler#openUI(Component, List)}. + * Init the ui just before been opened by the method {@link + * NavigationMultiTreeHandler#openUI(Component, List)}. * * @param nodes the selected node associated to the ui * @throws Exception if any pb while opening the content's ui @@ -42,8 +42,8 @@ void openUI(List<NavigationTreeNode> nodes) throws Exception; /** - * Clean the ui after been closed by the method - * {@link NavigationTreeHandler#closeUI(Component)}. + * Clean the ui after been closed by the method {@link + * NavigationTreeHandler#closeUI(Component)}. * * @param nodes the selected node associated to the ui * @throws Exception if any pb when closing the content'sui Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationMultiTreeHandler.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationMultiTreeHandler.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationMultiTreeHandler.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -28,26 +28,25 @@ import javax.swing.event.TreeSelectionEvent; import javax.swing.tree.TreePath; -import java.awt.Component; +import java.awt.*; import java.util.ArrayList; import java.util.List; /** * The handler of a navigation tree. - * + * <p/> * This is also the selection model to use, since we must check before moving * from nodes we can not just listen selection model changed, we must control * it. - * + * <p/> * This one is used to enable multi selection * * @author sletellier * @since 2.0.1 */ public abstract class NavigationMultiTreeHandler extends NavigationTreeHandler { - /** - * Logger - */ + + /** Logger */ static private final Log log = LogFactory.getLog(NavigationMultiTreeHandler.class); @@ -67,15 +66,15 @@ // TODO : verifier que la selection n'est pas la même List<NavigationTreeNode> nodes = new ArrayList<NavigationTreeNode>(); - if (paths == null){ + if (paths == null) { selectNodeUI(new ArrayList<NavigationTreeNode>()); return; } - for(TreePath path : paths){ + for (TreePath path : paths) { NavigationTreeNode node = (NavigationTreeNode) path.getLastPathComponent(); nodes.add(node); - if (log.isDebugEnabled()){ + if (log.isDebugEnabled()) { log.debug("Adding path : " + path); log.debug("As node : " + node.getFullPath()); } @@ -116,7 +115,7 @@ try { List<String> paths = new ArrayList<String>(); List<Object> beans = new ArrayList<Object>(); - for (NavigationTreeNode node : nodes){ + for (NavigationTreeNode node : nodes) { String path = node.getFullPath(); paths.add(path); @@ -135,7 +134,7 @@ // save it in context (must be done before init ui) JAXXContext ctxt = getContext(); - NavigationTreeContextHelper helper = getContextHelper(); + NavigationTreeContextHelper<NavigationTreeNode> helper = getContextHelper(); // remove previous selected bean //TODO-TC-20091004 should have an automatic clean context method @@ -178,9 +177,9 @@ } } - protected List<String> getPaths(List<NavigationTreeNode> nodes){ + protected List<String> getPaths(List<NavigationTreeNode> nodes) { List<String> result = new ArrayList<String>(); - for (NavigationTreeNode node : nodes){ + for (NavigationTreeNode node : nodes) { result.add(node.getFullPath()); } return result; Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationOneClicSelectionHandler.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationOneClicSelectionHandler.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationOneClicSelectionHandler.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -21,37 +21,28 @@ package jaxx.runtime.swing.navigation; -import jaxx.runtime.JAXXContext; import jaxx.runtime.JAXXObject; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.jdesktop.swingx.JXTreeTable; -import javax.swing.event.TreeSelectionEvent; import javax.swing.tree.TreePath; -import javax.swing.tree.TreeSelectionModel; -import java.awt.Component; -import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; -import java.util.List; /** * The handler of a navigation tree. - * + * <p/> * This is also the selection model to use, since we must check before moving * from nodes we can not just listen selection model changed, we must control * it. - * + * <p/> * This one is used to enable one clic multi selection * * @author sletellier * @since 2.0.1 */ public abstract class NavigationOneClicSelectionHandler extends NavigationMultiTreeHandler { - /** - * Logger - */ + + /** Logger */ static private final Log log = LogFactory.getLog(NavigationOneClicSelectionHandler.class); @@ -65,11 +56,11 @@ @Override public void setSelectionPath(TreePath path) { TreePath[] treePaths = getSelectionPaths(); - if (treePaths == null || !Arrays.asList(treePaths).contains(path)){ + if (treePaths == null || !Arrays.asList(treePaths).contains(path)) { addSelectionPath(path); } else { removeSelectionPath(path); } } - + } Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeContextHelper.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeContextHelper.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeContextHelper.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -75,7 +75,7 @@ protected JAXXContextEntryDef<List<String>> selectedPathsContextEntry; protected JAXXContextEntryDef<List<Object>> selectedBeansContextEntry; protected JAXXContextEntryDef<List<E>> selectedNodesContextEntry; - protected JAXXContextEntryDef<NavigationModel> modelContextEntry; + protected JAXXContextEntryDef<NavigationModel<E>> modelContextEntry; protected JAXXContextEntryDef<NavigationTreeHandler> handlerContextEntry; protected JAXXContextEntryDef<JTree> treeContextEntry; protected JAXXContextEntryDef<JXTreeTable> treeTableContextEntry; @@ -84,7 +84,7 @@ this.prefix = prefix; treeContextEntry = JAXXUtil.newContextEntryDef(prefix + "-tree", JTree.class); treeTableContextEntry = JAXXUtil.newContextEntryDef(prefix + "-tree-table", JXTreeTable.class); - modelContextEntry = JAXXUtil.newContextEntryDef(prefix + "-model", NavigationModel.class); + modelContextEntry = (JAXXContextEntryDef)JAXXUtil.newContextEntryDef(prefix + "-model", NavigationModel.class); handlerContextEntry = JAXXUtil.newContextEntryDef(prefix + "-handler", NavigationTreeHandler.class); selectedBeansContextEntry = JAXXUtil.newListContextEntryDef(prefix + "-selected-beans"); selectedNodesContextEntry = JAXXUtil.newListContextEntryDef(prefix + "-selected-nodes"); @@ -105,26 +105,11 @@ return r; } - public NavigationModel getModel(JAXXContext context) { - NavigationModel r = getModelContextEntry().getContextValue(context); + public NavigationModel<E> getModel(JAXXContext context) { + NavigationModel<E> r = getModelContextEntry().getContextValue(context); return r; } - /** - * @param context where to find model - * @deprecated since 2.0 please use {@link #getModel(JAXXContext)}, will - * be remove soon - * @return the specific tree model - */ - @Deprecated - public NavigationTreeModel getTreeModel(JAXXContext context) { - NavigationModel r = getModel(context); - if (r instanceof NavigationTreeModel) { - return (NavigationTreeModel) r; - } - return null; - } - public NavigationTreeHandler getTreeHandler(JAXXContext context) { NavigationTreeHandler r = getTreeHandlerContextEntry().getContextValue(context); @@ -158,18 +143,7 @@ return getSelectedBeanContextEntry().getContextValue(context); } - /** - * @param context where to store model - * @param model model to store - * @deprecated since 2.0 please use {@link #setModel(JAXXContext, NavigationModel)}, - * will be remove soon - */ - @Deprecated - public void setTreeModel(JAXXContext context, NavigationModel model) { - setModel(context, model); - } - - public void setModel(JAXXContext context, NavigationModel model) { + public void setModel(JAXXContext context, NavigationModel<E> model) { getModelContextEntry().setContextValue(context, model); } @@ -210,7 +184,7 @@ setSelectedValues(getSelectedBeanContextEntry(), context, beans); } - protected JAXXContextEntryDef<NavigationModel> getModelContextEntry() { + protected JAXXContextEntryDef<NavigationModel<E>> getModelContextEntry() { return modelContextEntry; } Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeHandler.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeHandler.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeHandler.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -21,6 +21,7 @@ package jaxx.runtime.swing.navigation; import java.awt.Component; +import java.util.Arrays; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.DefaultTreeSelectionModel; @@ -95,10 +96,10 @@ * * @since 1.7.2 */ - protected NavigationTreeContextHelper contextHelper; + protected NavigationTreeContextHelper<NavigationTreeNode> contextHelper; protected NavigationTreeHandler(String contextPrefix, JAXXObject context, Strategy strategy) { - contextHelper = new NavigationTreeContextHelper(contextPrefix); + contextHelper = new NavigationTreeContextHelper<NavigationTreeNode>(contextPrefix); this.context = context; this.strategy = strategy; addTreeSelectionListener(this); @@ -121,7 +122,7 @@ /** * @return le modèle de navigation associé */ - protected abstract NavigationModel getNavigationTreeModel(); + protected abstract NavigationModel<?> getNavigationTreeModel(); /** * @return le composent actuellement visible associé au noeud courant ou @@ -171,7 +172,7 @@ return context; } - public NavigationTreeContextHelper getContextHelper() { + public NavigationTreeContextHelper<NavigationTreeNode> getContextHelper() { return contextHelper; } @@ -212,7 +213,7 @@ public void setSelectionPaths(TreePath[] paths) { //FIXME-TC20100315 this can not work... // can't test like this paths as Array... - if (paths.equals(getSelectionPaths())) { + if (Arrays.equals(paths, getSelectionPaths())) { // stay on same node, can skip if (log.isDebugEnabled()) { log.debug("skip stay on path " + paths); @@ -231,7 +232,7 @@ } if (component instanceof NavigationMultiContentUI) { if (paths.length == 1){ - NavigationTreeContextHelper helper = getContextHelper(); + NavigationTreeContextHelper<NavigationTreeNode> helper = getContextHelper(); ((NavigationMultiContentUI) component).closeUI(helper.getSelectedNodes(getContext())); } } @@ -273,7 +274,7 @@ } JAXXContext ctxt = getContext(); - NavigationTreeContextHelper helper = getContextHelper(); + NavigationTreeContextHelper<NavigationTreeNode> helper = getContextHelper(); // save in context current node context path helper.setSelectedPath(ctxt, node.getFullPath()); @@ -331,7 +332,7 @@ log.debug("find data for contextPath <" + node.getFullPath() + "> : " + (data == null ? null : data.getClass())); } JAXXContext ctxt = getContext(); - NavigationTreeContextHelper helper = getContextHelper(); + NavigationTreeContextHelper<NavigationTreeNode> helper = getContextHelper(); // remove previous selected bean //TODO-TC-20091004 should have an automatic clean context method while Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeHandlerWithCardLayout.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeHandlerWithCardLayout.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeHandlerWithCardLayout.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -26,49 +26,55 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import javax.swing.JPanel; -import java.awt.Component; -import java.util.List; +import javax.swing.*; +import java.awt.*; +import java.lang.reflect.Constructor; /** - * Simple {@link NavigationTreeHandler} implementation with a {@link CardLayout2} to manage components to - * associated with tree's nodes. + * Simple {@link NavigationTreeHandler} implementation with a {@link + * CardLayout2} to manage components to associated with tree's nodes. * <p/> - * For each node, the ui associated has a constraints in a cardlayout which is the node context path. + * For each node, the ui associated has a constraints in a cardlayout which is + * the node context path. * <p/> - * A single container managed by the cardlayout is used to display the components associated with tree's nodes. + * A single container managed by the cardlayout is used to display the + * components associated with tree's nodes. * * @author chemit */ public abstract class NavigationTreeHandlerWithCardLayout extends NavigationTreeHandler { - /** - * Logger - */ + /** Logger */ static private final Log log = LogFactory.getLog(NavigationTreeHandlerWithCardLayout.class); /** - * All components associated with a tree's node is displayed in a single container. + * All components associated with a tree's node is displayed in a single + * container. * * @return the containter of components */ protected abstract JPanel getContentContainer(); /** - * the cardlayout managing components associated with tree node. The constraints - * of each component is the node contextPath. + * the cardlayout managing components associated with tree node. The + * constraints of each component is the node contextPath. * - * @return the layout used to display components associated with tree's nodes. + * @return the layout used to display components associated with tree's + * nodes. */ protected abstract CardLayout2 getContentLayout(); - public NavigationTreeHandlerWithCardLayout(String contextPrefix, JAXXObject context, Strategy strategy) { + public NavigationTreeHandlerWithCardLayout(String contextPrefix, + JAXXObject context, + Strategy strategy) { super(contextPrefix, context, strategy); if (getContentContainer() == null) { - throw new IllegalArgumentException("could not have a null 'contentContainer' in ui " + context); + throw new IllegalArgumentException( + "could not have a null 'contentContainer' in ui " + context); } if (getContentLayout() == null) { - throw new IllegalArgumentException("could not have a null 'contentLayout' in ui " + context); + throw new IllegalArgumentException( + "could not have a null 'contentLayout' in ui " + context); } } @@ -84,11 +90,13 @@ CardLayout2 layout = getContentLayout(); JPanel container = getContentContainer(); String constraints = strategy.getId(node); - return layout.contains(constraints) ? layout.getComponent(container, constraints) : null; + return layout.contains(constraints) ? + layout.getComponent(container, constraints) : null; } @Override - protected void openUI(Component newUI, NavigationTreeNode node) throws Exception { + protected void openUI(Component newUI, NavigationTreeNode node) throws + Exception { CardLayout2 layout = getContentLayout(); JPanel container = getContentContainer(); @@ -108,7 +116,9 @@ JAXXContext uiContext = createUIContext(node); - JAXXObject newUI = node.getUIClass().getConstructor(JAXXContext.class).newInstance(uiContext); + Constructor<? extends JAXXObject> constructor = + node.getUIClass().getConstructor(JAXXContext.class); + JAXXObject newUI = constructor.newInstance(uiContext); if (log.isDebugEnabled()) { log.debug("instanciate new ui " + newUI); Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeHelper.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeHelper.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeHelper.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -20,17 +20,6 @@ */ package jaxx.runtime.swing.navigation; -import java.lang.reflect.InvocationTargetException; -import java.util.Enumeration; -import java.util.regex.Pattern; -import javax.swing.JTree; -import javax.swing.tree.TreePath; -import jaxx.runtime.JAXXContext; -import jaxx.runtime.JAXXObject; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.jdesktop.swingx.JXTreeTable; - /** * Helper object associated to a given navigation tree system. * Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeModel.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeModel.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeModel.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -32,6 +32,8 @@ */ public class NavigationTreeModel extends GenericNavigationTreeModel<NavigationTreeNode> { + private static final long serialVersionUID = 1L; + public NavigationTreeModel(String pathSeparator, JAXXContext context) { super(pathSeparator, context); } Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeModelBuilder.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeModelBuilder.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeModelBuilder.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -20,51 +20,71 @@ */ package jaxx.runtime.swing.navigation; -import java.util.Enumeration; import jaxx.runtime.JAXXAction; import jaxx.runtime.JAXXContext; +import jaxx.runtime.JAXXObject; import jaxx.runtime.context.JAXXContextEntryDef; -import jaxx.runtime.JAXXObject; -import jaxx.runtime.decorator.Decorator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * This object is design to build a {@link NavigationTreeModel}. * + * @author chemit * @see NavigationModelBuilder - * - * @author chemit * @since 17.2 */ -public class NavigationTreeModelBuilder extends AbstractNavigationModelBuilder<NavigationTreeNode>{ +public class NavigationTreeModelBuilder extends AbstractNavigationModelBuilder<NavigationTreeNode> { - /** - * Logger - */ - static private final Log log = LogFactory.getLog(NavigationTreeModelBuilder.class); + /** Logger */ + static private final Log log = + LogFactory.getLog(NavigationTreeModelBuilder.class); - public NavigationTreeModelBuilder(String pathSeparator, JAXXContext context, Class<? extends JAXXObject> defaultUIClass, Class<? extends JAXXAction> defaultUIHandlerClass) { - this(defaultUIClass, defaultUIHandlerClass, new NavigationTreeModel(pathSeparator, context)); + public NavigationTreeModelBuilder( + String pathSeparator, + JAXXContext context, + Class<? extends JAXXObject> defaultUIClass, + Class<? extends JAXXAction> defaultUIHandlerClass) { + this(defaultUIClass, + defaultUIHandlerClass, + new NavigationTreeModel(pathSeparator, context) + ); } - public NavigationTreeModelBuilder(Class<? extends JAXXObject> defaultUIClass, Class<? extends JAXXAction> defaultUIHandlerClass, NavigationTreeModel model) { + @Override + public NavigationTreeModel getModel() { + return (NavigationTreeModel) super.getModel(); + } + + public NavigationTreeModelBuilder( + Class<? extends JAXXObject> defaultUIClass, + Class<? extends JAXXAction> defaultUIHandlerClass, + NavigationTreeModel model) { super(defaultUIClass, defaultUIHandlerClass, model); } @Override - public NavigationTreeNode createNavigationTreeNode(String pathSeparator, String contextName, JAXXContextEntryDef<?> jaxxContextEntryDef, String jaxxContextEntryPath) { - return new NavigationTreeNode(pathSeparator, contextName, jaxxContextEntryDef, jaxxContextEntryPath); + public NavigationTreeNode createNavigationTreeNode( + String pathSeparator, + String contextName, + JAXXContextEntryDef<?> jaxxContextEntryDef, + String jaxxContextEntryPath) { + return new NavigationTreeNode( + pathSeparator, + contextName, + jaxxContextEntryDef, + jaxxContextEntryPath + ); } - // TODO : to remove - /** - * @deprecated please use NavigationModel for return type - * @return the tree model - */ - @Override - @Deprecated - public NavigationTreeModel getModel() { - return (NavigationTreeModel)super.getModel(); - } +// // TODO : to remove +// /** +// * @deprecated please use NavigationModel for return type +// * @return the tree model +// */ +// @Override +// @Deprecated +// public NavigationTreeModel getModel() { +// return (NavigationTreeModel)super.getModel(); +// } } Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNode.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNode.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNode.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -58,7 +58,7 @@ * <p/> * To display the node we use a {@link NavigationTreeNodeRenderer} which is in * fact the {@link #userObject}, the object can be synch with the bean via the - * {@link NavigationTreeNodeRenderer#reload(java.lang.Object)} method. + * {@link NavigationTreeNodeRenderer#reload(Object)} method. * * @author chemit * @see NavigationTreeModel @@ -165,24 +165,28 @@ */ protected Class<?> internalClass; - public NavigationTreeNode(String pathSeparator, String navigationPath, Object jaxxContextEntryDef) { - super(); + public NavigationTreeNode(String pathSeparator, + String navigationPath, + Object jaxxContextEntryDef) { this.pathSeparator = pathSeparator; - this.path = navigationPath; + path = navigationPath; if (jaxxContextEntryDef instanceof JAXXContextEntryDef<?>) { this.jaxxContextEntryDef = ((JAXXContextEntryDef<?>) jaxxContextEntryDef); } else if (jaxxContextEntryDef instanceof String) { - this.jaxxContextEntryPath = (String) jaxxContextEntryDef; + jaxxContextEntryPath = (String) jaxxContextEntryDef; } else if (jaxxContextEntryDef != null) { // wrong context definition type - throw new IllegalArgumentException("to define a context link, must be a String (jxpath) or a " + JAXXContextEntryDef.class + ", but was " + jaxxContextEntryDef); + throw new IllegalArgumentException( + "to define a context link, must be a String (jxpath) or a " + JAXXContextEntryDef.class + ", but was " + jaxxContextEntryDef); } } - public NavigationTreeNode(String pathSeparator, String navigationPath, JAXXContextEntryDef<?> jaxxContextEntryDef, String jaxxContextEntryPath) { - super(); + public NavigationTreeNode(String pathSeparator, + String navigationPath, + JAXXContextEntryDef<?> jaxxContextEntryDef, + String jaxxContextEntryPath) { this.pathSeparator = pathSeparator; - this.path = navigationPath; + path = navigationPath; this.jaxxContextEntryDef = jaxxContextEntryDef; this.jaxxContextEntryPath = jaxxContextEntryPath; } @@ -212,7 +216,7 @@ } public void setNodePath(String navigationPath) { - this.path = navigationPath; + path = navigationPath; } public Class<? extends JAXXObject> getUIClass() { @@ -316,7 +320,8 @@ NavigationTreeNodeRenderer renderer = getRenderer(); if (renderer == null) { // this can't be ! - throw new NullPointerException("could not find the renderer for node " + this); + throw new NullPointerException( + "could not find the renderer for node " + this); } String s = getFullPath(); @@ -354,7 +359,8 @@ // find the first ancestor node with a context def NavigationTreeNode parentNode = getFirstAncestorWithDef(); if (parentNode == null) { - log.warn("could not find a ancestor node with a definition of a context entry from node (" + this + ")"); + log.warn("could not find a ancestor node with a definition of" + + " a context entry from node (" + this + ")"); // todo must be an error // no parent found return null; @@ -362,7 +368,8 @@ Object parentBean = parentNode.getJaxxContextEntryDef().getContextValue(context); if (parentBean == null) { // must be an error no bean found - log.warn("could not find a bean attached in context from context entry definition " + parentNode.getJaxxContextEntryDef()); + log.warn("could not find a bean attached in context from context" + + " entry definition " + parentNode.getJaxxContextEntryDef()); return null; } if (parentNode.jaxxContextEntryPath != null) { @@ -372,19 +379,23 @@ } // save in cache parentNode.setBean(parentBean); - if (this == parentNode) { - // current node is the node matching the context entry value and no jxpath is found + if (parentNode.equals(this)) { + // current node is the node matching the context entry value and + // no jxpath is found return parentBean; } if (jaxxContextEntryPath == null) { // todo must be an error - log.warn("must find a jaxxContextEntryPath on node (" + this + ")"); + log.warn("must find a jaxxContextEntryPath on node (" + this + + ")"); return null; } - String jxpathExpression = computeJXPath(jaxxContextEntryPath, parentNode); + String jxpathExpression = computeJXPath(jaxxContextEntryPath, + parentNode); if (jxpathExpression == null) { /// todo must be an error - log.warn("could not build jxpath from node " + parentNode + " to " + this); + log.warn("could not build jxpath from node " + parentNode + + " to " + this); // could not retreave the jxpath... return null; } @@ -418,7 +429,7 @@ } protected String computeJXPath(String expr, NavigationTreeNode parentNode) { - if (parentNode == this) { + if (this == parentNode) { // reach the parent limit node, return the expr computed return expr; } @@ -427,11 +438,13 @@ if (firstIndex == -1) { // this is a error, since current node is not parent limit node, // we must find somewhere a way to go up in nodes - throw new IllegalArgumentException(expr + " should contains at least one \"..\""); + throw new IllegalArgumentException( + expr + " should contains at least one \"..\""); } if (firstIndex != 0) { // this is a error, the ../ must be at the beginning of the expression - throw new IllegalArgumentException("\"..\" must be at the beginning but was : " + expr); + throw new IllegalArgumentException( + "\"..\" must be at the beginning but was : " + expr); } NavigationTreeNode ancestor = getParent(); if (firstIndex == lastIndex) { @@ -444,17 +457,27 @@ } // ancestor must have a jaxxContextEntryPath if (ancestor.jaxxContextEntryPath == null) { - throw new IllegalArgumentException("with the expression " + expr + ", the ancestor node (" + ancestor + ") must have a jaxxContextEntryPath definition, but was not "); + throw new IllegalArgumentException( + "with the expression " + expr + ", the ancestor node (" + + ancestor + ") must have a jaxxContextEntryPath " + + "definition, but was not "); } newExpr = ancestor.jaxxContextEntryPath + newExpr; return ancestor.computeJXPath(newExpr, parentNode); } - // have more than one go up, so the ancestor node can not have a jaxxContextEntryPath + // have more than one go up, so the ancestor node can not have a + // jaxxContextEntryPath if (ancestor.jaxxContextEntryPath != null) { - throw new IllegalArgumentException("with the expression " + expr + ", the ancestor node can not have a jaxxContextEntryPath definition"); + throw new IllegalArgumentException( + "with the expression " + expr + ", the ancestor node can " + + "not have a jaxxContextEntryPath definition"); } // substitute the last ..[/] and delegate to ancestor - String newExpr = expr.substring(0, lastIndex - 1) + expr.substring(lastIndex + (expr.charAt(lastIndex + 3) == '/' ? 3 : 2)); + String newExpr = expr.substring(0, lastIndex - 1) + + expr.substring( + lastIndex + + (expr.charAt(lastIndex + 3) == '/' ? 3 : 2) + ); return ancestor.computeJXPath(newExpr, parentNode); } } Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNodeRenderer.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNodeRenderer.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNodeRenderer.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -21,6 +21,7 @@ package jaxx.runtime.swing.navigation; import javax.swing.tree.TreeCellRenderer; +import java.io.Serializable; /** * Text Renderer of a {@link NavigationTreeNode}. @@ -38,7 +39,7 @@ * @author chemit * @since 1.7.2, replace {@code NavigationUtil#NodeRenderer} which disappear soon... */ -public interface NavigationTreeNodeRenderer extends java.io.Serializable { +public interface NavigationTreeNodeRenderer extends Serializable { /** * Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNodeRendererDecoratorImpl.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNodeRendererDecoratorImpl.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNodeRendererDecoratorImpl.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -24,30 +24,28 @@ /** * Decorator Renderer of a {@link NavigationTreeNode}. - * + * <p/> * Apply a {@link Decorator} to the {@code bean} associated to the node. - * + * * @author chemit - * @since 1.7.2, replace {@code NavigationUtil#NodeRenderer} which disappear soon... + * @since 1.7.2, replace {@code NavigationUtil#NodeRenderer} which disappear + * soon... */ public class NavigationTreeNodeRendererDecoratorImpl implements NavigationTreeNodeRenderer { private static final long serialVersionUID = -1L; - /** - * Decorator - */ + + /** Decorator */ protected final Decorator<?> decorator; - /** - * internal class of representing data - */ + + /** internal class of representing data */ protected final Class<?> internalClass; - /** - * last renderered value - */ + + /** last renderered value */ protected String text; public NavigationTreeNodeRendererDecoratorImpl(Decorator<?> decorator) { - this.internalClass = decorator.getInternalClass(); + internalClass = decorator.getInternalClass(); this.decorator = decorator; } Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNodeRendererI18nImpl.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNodeRendererI18nImpl.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNodeRendererI18nImpl.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -48,7 +48,7 @@ public NavigationTreeNodeRendererI18nImpl(String libelle) { this.libelle = libelle; - this.internalClass = String.class; + internalClass = String.class; } @Override Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeTableModel.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeTableModel.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeTableModel.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -25,7 +25,6 @@ import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.tree.TreeModelSupport; import org.jdesktop.swingx.treetable.DefaultTreeTableModel; -import org.jdesktop.swingx.treetable.TreeTableNode; import javax.swing.tree.MutableTreeNode; import javax.swing.tree.TreeNode; @@ -40,9 +39,9 @@ * Model of the tree table used for a navigation tree table. * <p/> * Il est composé de {@link NavigationTreeNode} + * <p/> + * FIXME : Essayer d'enlever les copier coller {@link NavigationTreeModel} * - * FIXME : Essayer d'enlever les copier coller {@link NavigationTreeModel} - * * @author sletellier * @since 2.0.0 */ @@ -50,10 +49,9 @@ static private final long serialVersionUID = 1L; - /** - * Logger - */ - static private final Log log = LogFactory.getLog(NavigationTreeTableModel.class); + /** Logger */ + static private final Log log = + LogFactory.getLog(NavigationTreeTableModel.class); /** * The path separator used to build the {@link NavigationTreeNode#fullPath}. @@ -63,9 +61,7 @@ */ protected final String pathSeparator; - /** - * Context to retrieve beans - */ + /** Context to retrieve beans */ private JAXXContext context; protected List<String> columnsName; @@ -77,20 +73,17 @@ this.columnsName = columnsName; } - /** - * @see NavigationModel#getRoot() - */ @Override public NavigationTreeTableNode getRoot() { return (NavigationTreeTableNode) super.root; } @Override - public TreeNode[] getPathToRoot(TreeNode aNode) { - if (aNode == null){ + public NavigationTreeTableNode[] getPathToRoot(NavigationTreeTableNode aNode) { + if (aNode == null) { return null; } - return super.getPathToRoot((TreeTableNode)aNode); + return (NavigationTreeTableNode[]) super.getPathToRoot(aNode); } @@ -106,8 +99,8 @@ * way to remove a node as it handles the event creation for you. */ @Override - public void removeNodeFromParent(MutableTreeNode node) { - NavigationTreeTableNode parent = (NavigationTreeTableNode)node.getParent(); + public void removeNodeFromParent(NavigationTreeTableNode node) { + NavigationTreeTableNode parent = node.getParent(); if (parent == null) { throw new IllegalArgumentException("node does not have a parent."); @@ -117,54 +110,42 @@ node.removeFromParent(); modelSupport.fireChildRemoved(new TreePath(getPathToRoot(parent)), - index, node); + index, node); } - /** - * @see NavigationModel#findNode(String) - */ @Override public NavigationTreeTableNode findNode(String path) { return findNode(getRoot(), path, (Pattern) null); } - /** - * @see NavigationModel#findNode(String, String) - */ @Override public NavigationTreeTableNode findNode(String path, String regex) { return findNode(getRoot(), path, regex); } - /** - * @see NavigationModel#findNode(String, Pattern) - */ @Override public NavigationTreeTableNode findNode(String path, Pattern regex) { return findNode(getRoot(), path, regex); } - /** - * @see NavigationModel#findNode(NavigationTreeNode, String) - */ @Override - public NavigationTreeTableNode findNode(NavigationTreeTableNode root, String path) { + public NavigationTreeTableNode findNode(NavigationTreeTableNode root, + String path) { return findNode(root, path, (Pattern) null); } - /** - * @see NavigationModel#findNode(NavigationTreeNode, String, String) - */ @Override - public NavigationTreeTableNode findNode(NavigationTreeTableNode root, String path, String regex) { - return findNode(root, path, regex == null ? null : Pattern.compile(regex)); + public NavigationTreeTableNode findNode(NavigationTreeTableNode root, + String path, + String regex) { + return findNode(root, path, regex == null ? + null : Pattern.compile(regex)); } - /** - * @see NavigationModel#findNode(NavigationTreeNode, String, Pattern) - */ @Override - public NavigationTreeTableNode findNode(NavigationTreeTableNode root, String path, Pattern regex) { + public NavigationTreeTableNode findNode(NavigationTreeTableNode root, + String path, + Pattern regex) { if (regex != null) { Matcher matcher = regex.matcher(path); if (!matcher.matches() || matcher.groupCount() < 1) { @@ -191,16 +172,11 @@ return result; } - /** - * @see NavigationModel#getContext() - */ + @Override public JAXXContext getContext() { return context; } - /** - * @see NavigationModel#getBean(String) - */ @Override public Object getBean(String navigationPath) { Object result; @@ -209,9 +185,6 @@ return result; } - /** - * @see NavigationModel#getBean(NavigationTreeNode) - */ @Override public Object getBean(NavigationTreeTableNode node) { if (node == null) { @@ -232,60 +205,71 @@ return modelSupport; } - /** - * @see NavigationModel#nodeChanged(TreeNode) - */ - public void nodeChanged(TreeNode node) { - if (node != null){ - MutableTreeNode parent = (MutableTreeNode)node.getParent(); - TreeNode[] treeNodes = getPathToRoot(parent); - if (treeNodes != null){ - modelSupport.fireChildChanged(new TreePath(treeNodes), parent.getIndex(node), node); + @Override + public void nodeChanged(NavigationTreeTableNode node) { + if (node != null) { + NavigationTreeTableNode parent = node.getParent(); + NavigationTreeTableNode[] treeNodes = getPathToRoot(parent); + if (treeNodes != null) { + modelSupport.fireChildChanged( + new TreePath(treeNodes), parent.getIndex(node), node); } else { log.error("[Node changed] Path to root is null !"); } - reload((NavigationTreeTableNode)node, true); + reload((NavigationTreeTableNode) node, true); } else { log.error("Node is null !"); } } - /** - * @see NavigationModel#nodeStructureChanged(TreeNode) - */ - public void nodeStructureChanged(TreeNode node) { - if (node != null){ - MutableTreeNode parent = (MutableTreeNode)node.getParent(); + @Override + public void nodeStructureChanged(NavigationTreeTableNode node) { + if (node != null) { + NavigationTreeTableNode parent = node.getParent(); TreeNode[] treeNodes = getPathToRoot(parent); - if (treeNodes != null){ + if (treeNodes != null) { modelSupport.fireTreeStructureChanged(new TreePath(treeNodes)); } else { log.error("[Node structure changed] Path to root is null !"); } - reload((NavigationTreeTableNode)node, true); + reload(node, true); } else { log.error("Node is null !"); } } - /** - * @see NavigationModel#nodeChanged(TreeNode, boolean) - */ - public void nodeChanged(TreeNode node, boolean deep) { - if (node != null){ - MutableTreeNode parent = (MutableTreeNode)node.getParent(); + @Override + public void nodeChanged(NavigationTreeTableNode node, boolean deep) { + if (node != null) { + NavigationTreeTableNode parent = node.getParent(); TreeNode[] treeNodes = getPathToRoot(parent); - if (treeNodes != null){ - modelSupport.fireChildChanged(new TreePath(treeNodes), parent.getIndex(node), node); + if (treeNodes != null) { + modelSupport.fireChildChanged( + new TreePath(treeNodes), parent.getIndex(node), node); } else { log.error("[Node changed] Path to root is null !"); } - reload((NavigationTreeTableNode)node, deep); + reload(node, deep); } else { log.error("Node is null !"); } } + @Override + public String getPathSeparator() { + return pathSeparator; + } + + @Override + public int getColumnCount() { + return columnsName.size(); + } + + @Override + public String getColumnName(int column) { + return columnsName.get(column); + } + protected void reload(NavigationTreeTableNode node) { reload(node, false); } @@ -305,21 +289,4 @@ } } - /** - * @see NavigationModel#getPathSeparator() - */ - public String getPathSeparator() { - return pathSeparator; - } - - @Override - public int getColumnCount(){ - return columnsName.size(); - } - - @Override - public String getColumnName(int column){ - return columnsName.get(column); - } - } Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeTableNode.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeTableNode.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeTableNode.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -28,19 +28,27 @@ /** * Node of the {@link NavigationTreeTableModel}. * + * @author sletellier * @see NavigationTreeNode - * - * @author sletellier * @since 2.0.0 */ -public abstract class NavigationTreeTableNode extends NavigationTreeNode implements TreeTableNode{ +public abstract class NavigationTreeTableNode extends NavigationTreeNode implements TreeTableNode { - public NavigationTreeTableNode(String pathSeparator, String navigationPath, Object jaxxContextEntryDef) { + public NavigationTreeTableNode(String pathSeparator, + String navigationPath, + Object jaxxContextEntryDef) { super(pathSeparator, navigationPath, jaxxContextEntryDef); } - public NavigationTreeTableNode(String pathSeparator, String navigationPath, JAXXContextEntryDef<?> jaxxContextEntryDef, String jaxxContextEntryPath) { - super(pathSeparator, navigationPath, jaxxContextEntryDef, jaxxContextEntryPath); + public NavigationTreeTableNode(String pathSeparator, + String navigationPath, + JAXXContextEntryDef<?> jaxxContextEntryDef, + String jaxxContextEntryPath) { + super(pathSeparator, + navigationPath, + jaxxContextEntryDef, + jaxxContextEntryPath + ); } @Override @@ -53,14 +61,12 @@ return (NavigationTreeTableNode) super.getParent(); } - /** - * @see NavigationTreeNode#getChild(String) - */ @Override public NavigationTreeTableNode getChild(String path) { Enumeration<?> childs = children(); while (childs.hasMoreElements()) { - NavigationTreeTableNode son = (NavigationTreeTableNode) childs.nextElement(); + NavigationTreeTableNode son = + (NavigationTreeTableNode) childs.nextElement(); if (path.equals(son.getNodePath())) { return son; } @@ -68,11 +74,15 @@ return null; } + @Override public abstract Object getValueAt(int column); + @Override public abstract int getColumnCount(); + @Override public abstract boolean isEditable(int column); + @Override public abstract void setValueAt(Object aValue, int column); } Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/SortedNavigationTreeModelBuilder.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/SortedNavigationTreeModelBuilder.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/SortedNavigationTreeModelBuilder.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -27,26 +27,37 @@ import org.apache.commons.logging.LogFactory; /** - * This object is design to build a {@link NavigationTreeModel} with sorted nodes {@link SortedNavigationTreeNode} . + * This object is design to build a {@link NavigationTreeModel} with sorted + * nodes {@link SortedNavigationTreeNode} . * + * @author sletellier * @see NavigationModelBuilder - * - * @author sletellier * @since 2.0.1 */ public class SortedNavigationTreeModelBuilder extends AbstractNavigationModelBuilder<SortedNavigationTreeNode> { - /** - * Logger - */ - static private final Log log = LogFactory.getLog(SortedNavigationTreeModelBuilder.class); + /** Logger */ + static private final Log log = + LogFactory.getLog(SortedNavigationTreeModelBuilder.class); - public SortedNavigationTreeModelBuilder(Class<? extends JAXXObject> defaultUIClass, Class<? extends JAXXAction> defaultUIHandlerClass, NavigationModel<SortedNavigationTreeNode> navigationModel) { + public SortedNavigationTreeModelBuilder( + Class<? extends JAXXObject> defaultUIClass, + Class<? extends JAXXAction> defaultUIHandlerClass, + NavigationModel<SortedNavigationTreeNode> navigationModel) { super(defaultUIClass, defaultUIHandlerClass, navigationModel); } @Override - public SortedNavigationTreeNode createNavigationTreeNode(String pathSeparator, String contextName, JAXXContextEntryDef<?> jaxxContextEntryDef, String jaxxContextEntryPath) { - return new SortedNavigationTreeNode(pathSeparator, contextName, jaxxContextEntryDef, jaxxContextEntryPath); + public SortedNavigationTreeNode createNavigationTreeNode( + String pathSeparator, + String contextName, + JAXXContextEntryDef<?> jaxxContextEntryDef, + String jaxxContextEntryPath) { + return new SortedNavigationTreeNode( + pathSeparator, + contextName, + jaxxContextEntryDef, + jaxxContextEntryPath + ); } } Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/SortedNavigationTreeNode.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/SortedNavigationTreeNode.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/SortedNavigationTreeNode.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -20,29 +20,31 @@ */ package jaxx.runtime.swing.navigation; -import jaxx.runtime.JAXXContext; import jaxx.runtime.context.JAXXContextEntryDef; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.swing.tree.MutableTreeNode; -import java.util.*; +import java.util.Collections; +import java.util.Comparator; +import java.util.Enumeration; +import java.util.List; /** * Sprted node * + * @author sletellier * @see NavigationTreeNode - * - * @author sletellier * @since 2.0.1 */ public class SortedNavigationTreeNode extends NavigationTreeNode { - /** - * Logger - */ - static private final Log log = LogFactory.getLog(SortedNavigationTreeNode.class); + private static final long serialVersionUID = -1L; + /** Logger */ + static private final Log log = + LogFactory.getLog(SortedNavigationTreeNode.class); + @Override public SortedNavigationTreeNode getChildAt(int index) { return (SortedNavigationTreeNode) super.getChildAt(index); @@ -52,13 +54,19 @@ public SortedNavigationTreeNode getParent() { return (SortedNavigationTreeNode) super.getParent(); } - + @Override + public Enumeration<SortedNavigationTreeNode> children() { + return super.children(); + } + + @Override public void add(MutableTreeNode newChild) { - List<SortedNavigationTreeNode> children = Collections.list(children()); + List<SortedNavigationTreeNode> children = + Collections.list(children()); - if (children.isEmpty()){ + if (children.isEmpty()) { insert(newChild, 0); return; } @@ -70,19 +78,29 @@ Collections.sort(children, rendererDecorator); int index = children.indexOf(newChild); - log.info("Insert node : " + newNode.getRenderer().toString() + " in " + index + " of parent " + this.getRenderer().toString()); + log.info("Insert node : " + newNode.getRenderer().toString() + " in " + + index + " of parent " + this.getRenderer().toString()); insert(newChild, index); } - public SortedNavigationTreeNode(String pathSeparator, String navigationPath, Object jaxxContextEntryDef) { + public SortedNavigationTreeNode(String pathSeparator, + String navigationPath, + Object jaxxContextEntryDef) { super(pathSeparator, navigationPath, jaxxContextEntryDef); // sort(); } - public SortedNavigationTreeNode(String pathSeparator, String navigationPath, JAXXContextEntryDef<?> jaxxContextEntryDef, String jaxxContextEntryPath) { - super(pathSeparator, navigationPath, jaxxContextEntryDef, jaxxContextEntryPath); + public SortedNavigationTreeNode(String pathSeparator, + String navigationPath, + JAXXContextEntryDef<?> jaxxContextEntryDef, + String jaxxContextEntryPath) { + super(pathSeparator, + navigationPath, + jaxxContextEntryDef, + jaxxContextEntryPath + ); // sort(); } @@ -114,12 +132,12 @@ // } // } - final Comparator rendererDecorator = new Comparator() { + final Comparator<NavigationTreeNode> rendererDecorator = new Comparator<NavigationTreeNode>() { @Override - public int compare(Object o1, Object o2) { + public int compare(NavigationTreeNode o1, NavigationTreeNode o2) { try { - String label1 = ((NavigationTreeNode)o1).getRenderer().toString(); - String label2 = ((NavigationTreeNode)o2).getRenderer().toString(); + String label1 = ((NavigationTreeNode) o1).getRenderer().toString(); + String label2 = ((NavigationTreeNode) o2).getRenderer().toString(); return label1.compareToIgnoreCase(label2); } catch (Exception eee) { return 0; Modified: trunk/jaxx-runtime/src/test/java/jaxx/runtime/swing/navigation/NavigationTreeModelTest.java =================================================================== --- trunk/jaxx-runtime/src/test/java/jaxx/runtime/swing/navigation/NavigationTreeModelTest.java 2010-03-25 13:20:44 UTC (rev 1807) +++ trunk/jaxx-runtime/src/test/java/jaxx/runtime/swing/navigation/NavigationTreeModelTest.java 2010-03-25 16:35:00 UTC (rev 1808) @@ -20,9 +20,9 @@ */ package jaxx.runtime.swing.navigation; +import jaxx.runtime.JAXXContext; import jaxx.runtime.JAXXUtil; import jaxx.runtime.context.DefaultJAXXContext; -import jaxx.runtime.JAXXContext; import org.junit.Assert; import org.junit.Test; @@ -38,7 +38,9 @@ public class NavigationTreeModelTest { private static final String ROOT_CONTEXT = "$root"; + private static final String FAKE = "-fake"; + private static final String separator = "/"; @Test @@ -58,7 +60,7 @@ } } - NavigationTreeModel model = builder.getModel(); + NavigationModel<?> model = builder.getModel(); NavigationTreeNode node; String contextPath; @@ -151,10 +153,10 @@ context.setContextValue( new Model("modelName", 10, - Arrays.asList( - new Model("one", 1, Collections.<Model>emptyList()), - new Model("two", 2, Collections.<Model>emptyList()), - new Model("three", 3, Collections.<Model>emptyList())))); + Arrays.asList( + new Model("one", 1, Collections.<Model>emptyList()), + new Model("two", 2, Collections.<Model>emptyList()), + new Model("three", 3, Collections.<Model>emptyList())))); NavigationTreeModelBuilder builder = new NavigationTreeModelBuilder(separator, context, null, null); @@ -193,32 +195,32 @@ builder.build(sonSonSonNode, (String) null, "../..[3]/integerValue", "integerValue", null, null); builder.build(sonSonSonNode, (String) null, "../..[3]/sons", "sons", null, null); - NavigationTreeModel model = builder.getModel(); + NavigationModel<?> model = builder.getModel(); Assert.assertNull(model.getBean("$root.name" + FAKE)); - testBinding(model, context, "$root/name", context.getContextValue(String.class, "name")); - testBinding(model, context, "$root/name2", context.getContextValue(String.class, "name2")); + testBinding(model, "$root/name", context.getContextValue(String.class, "name")); + testBinding(model, "$root/name2", context.getContextValue(String.class, "name2")); Model bean = context.getContextValue(Model.class); - testBinding(model, context, "$root/model", bean); - testBinding(model, context, "$root/model/name", bean.getName()); - testBinding(model, context, "$root/model/integerValue", bean.getIntegerValue()); - testBinding(model, context, "$root/model/sons", bean.getSons()); + testBinding(model, "$root/model", bean); + testBinding(model, "$root/model/name", bean.getName()); + testBinding(model, "$root/model/integerValue", bean.getIntegerValue()); + testBinding(model, "$root/model/sons", bean.getSons()); - testBinding(model, context, "$root/model/sons/0/name", bean.getSons().get(0).getName()); - testBinding(model, context, "$root/model/sons/0/integerValue", bean.getSons().get(0).getIntegerValue()); - testBinding(model, context, "$root/model/sons/0/sons", bean.getSons().get(0).getSons()); + testBinding(model, "$root/model/sons/0/name", bean.getSons().get(0).getName()); + testBinding(model, "$root/model/sons/0/integerValue", bean.getSons().get(0).getIntegerValue()); + testBinding(model, "$root/model/sons/0/sons", bean.getSons().get(0).getSons()); - testBinding(model, context, "$root/model/sons/1/name", bean.getSons().get(1).getName()); - testBinding(model, context, "$root/model/sons/1/integerValue", bean.getSons().get(1).getIntegerValue()); - testBinding(model, context, "$root/model/sons/1/sons", bean.getSons().get(1).getSons()); + testBinding(model, "$root/model/sons/1/name", bean.getSons().get(1).getName()); + testBinding(model, "$root/model/sons/1/integerValue", bean.getSons().get(1).getIntegerValue()); + testBinding(model, "$root/model/sons/1/sons", bean.getSons().get(1).getSons()); - testBinding(model, context, "$root/model/sons/2/name", bean.getSons().get(2).getName()); - testBinding(model, context, "$root/model/sons/2/integerValue", bean.getSons().get(2).getIntegerValue()); - testBinding(model, context, "$root/model/sons/2/sons", bean.getSons().get(2).getSons()); + testBinding(model, "$root/model/sons/2/name", bean.getSons().get(2).getName()); + testBinding(model, "$root/model/sons/2/integerValue", bean.getSons().get(2).getIntegerValue()); + testBinding(model, "$root/model/sons/2/sons", bean.getSons().get(2).getSons()); } /** @@ -259,20 +261,20 @@ List<Model> list = Arrays.asList( new Model("entryOne", 10, - Arrays.asList( - new Model("one", 1, Collections.<Model>emptyList()), - new Model("two", 2, Collections.<Model>emptyList()), - new Model("three", 3, Collections.<Model>emptyList()))), + Arrays.asList( + new Model("one", 1, Collections.<Model>emptyList()), + new Model("two", 2, Collections.<Model>emptyList()), + new Model("three", 3, Collections.<Model>emptyList()))), new Model("entryTwo", 20, - Arrays.asList( - new Model("2one", 1, Collections.<Model>emptyList()), - new Model("2two", 2, Collections.<Model>emptyList()), - new Model("2three", 3, Collections.<Model>emptyList()))), + Arrays.asList( + new Model("2one", 1, Collections.<Model>emptyList()), + new Model("2two", 2, Collections.<Model>emptyList()), + new Model("2three", 3, Collections.<Model>emptyList()))), new Model("entryThree", 30, - Arrays.asList( - new Model("3one", 1, Collections.<Model>emptyList()), - new Model("3two", 2, Collections.<Model>emptyList()), - new Model("3three", 3, Collections.<Model>emptyList())))); + Arrays.asList( + new Model("3one", 1, Collections.<Model>emptyList()), + new Model("3two", 2, Collections.<Model>emptyList()), + new Model("3three", 3, Collections.<Model>emptyList())))); JAXXContext context = new DefaultJAXXContext(); context.setContextValue(list, "models"); @@ -312,35 +314,37 @@ builder.build(sonSonNode, (String) null, "../integerValue", "integerValue", null, null); builder.build(sonSonNode, (String) null, "../sons", "sons", null, null); - NavigationTreeModel model = builder.getModel(); + NavigationModel<?> model = builder.getModel(); Model bean; - testBinding(model, context, "$root/models", list); + testBinding(model, "$root/models", list); bean = list.get(0); - testBinding(model, context, "$root/models/0", bean); - testBinding(model, context, "$root/models/0/name", bean.getName()); - testBinding(model, context, "$root/models/0/integerValue", bean.getIntegerValue()); - testBinding(model, context, "$root/models/0/sons", bean.getSons()); - testBinding(model, context, "$root/models/0/sons/0", bean.getSons().get(0)); - testBinding(model, context, "$root/models/0/sons/0/name", bean.getSons().get(0).getName()); + testBinding(model, "$root/models/0", bean); + testBinding(model, "$root/models/0/name", bean.getName()); + testBinding(model, "$root/models/0/integerValue", bean.getIntegerValue()); + testBinding(model, "$root/models/0/sons", bean.getSons()); + testBinding(model, "$root/models/0/sons/0", bean.getSons().get(0)); + testBinding(model, "$root/models/0/sons/0/name", bean.getSons().get(0).getName()); bean = list.get(1); - testBinding(model, context, "$root/models/1", bean); - testBinding(model, context, "$root/models/1/name", bean.getName()); - testBinding(model, context, "$root/models/1/integerValue", bean.getIntegerValue()); - testBinding(model, context, "$root/models/1/sons", bean.getSons()); + testBinding(model, "$root/models/1", bean); + testBinding(model, "$root/models/1/name", bean.getName()); + testBinding(model, "$root/models/1/integerValue", bean.getIntegerValue()); + testBinding(model, "$root/models/1/sons", bean.getSons()); bean = list.get(2); - testBinding(model, context, "$root/models/2", bean); - testBinding(model, context, "$root/models/2/name", bean.getName()); - testBinding(model, context, "$root/models/2/integerValue", bean.getIntegerValue()); - testBinding(model, context, "$root/models/2/sons", bean.getSons()); + testBinding(model, "$root/models/2", bean); + testBinding(model, "$root/models/2/name", bean.getName()); + testBinding(model, "$root/models/2/integerValue", bean.getIntegerValue()); + testBinding(model, "$root/models/2/sons", bean.getSons()); } - protected void testBinding(NavigationTreeModel model, JAXXContext context, String contextPath, Object expected) throws Exception { + protected void testBinding(NavigationModel<?> model, + String contextPath, + Object expected) throws Exception { Object value; value = model.getBean(contextPath); @@ -368,7 +372,9 @@ public static class Model { protected String name; + protected int integerValue; + protected List<Model> sons; public Model(String name, int integerValue, List<Model> sons) {
participants (1)
-
tchemit@users.nuiton.org