r1741 - in trunk: jaxx-demo/src/main/java/jaxx/demo jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation jaxx-runtime/src/main/java/jaxx/runtime jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation
Author: sletellier Date: 2010-02-15 17:29:38 +0100 (Mon, 15 Feb 2010) New Revision: 1741 Removed: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationHandler.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationInstanciationStrategy.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeTableHandler.java Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/DemoTreeHelper.java trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/FullNavigationTreeHelper.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/SwingUtil.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/NavigationTreeTableModel.java Log: Final implementation of NavigationTreeTable : - remove hack - NavigationTreeHandler is a TreeSelectionListener and TreeSelectionModel - adding expandTreeTable and addExpendOnClickListener method for JXTreeTable in swingUtil Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/DemoTreeHelper.java =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/DemoTreeHelper.java 2010-02-15 12:35:35 UTC (rev 1740) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/DemoTreeHelper.java 2010-02-15 16:29:38 UTC (rev 1741) @@ -42,7 +42,6 @@ import jaxx.runtime.swing.CardLayout2; import jaxx.runtime.swing.ErrorDialogUI; import jaxx.runtime.swing.navigation.*; -import jaxx.runtime.swing.navigation.NavigationInstanciationStrategy; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import static org.nuiton.i18n.I18n.n_; @@ -149,7 +148,7 @@ handler = new NavigationTreeHandlerWithCardLayout( getPrefix(), context, - NavigationInstanciationStrategy.PER_UI_TYPE) { + NavigationTreeHandler.Strategy.PER_UI_TYPE) { private static final long serialVersionUID = 1L; Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/FullNavigationTreeHelper.java =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/FullNavigationTreeHelper.java 2010-02-15 12:35:35 UTC (rev 1740) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/FullNavigationTreeHelper.java 2010-02-15 16:29:38 UTC (rev 1741) @@ -27,7 +27,6 @@ import jaxx.runtime.swing.CardLayout2; import jaxx.runtime.swing.ErrorDialogUI; import jaxx.runtime.swing.navigation.*; -import jaxx.runtime.swing.navigation.NavigationInstanciationStrategy; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -123,7 +122,7 @@ handler = new NavigationTreeHandlerWithCardLayout( getPrefix(), context, - NavigationInstanciationStrategy.PER_UI_TYPE) { + NavigationTreeHandler.Strategy.PER_UI_TYPE) { private static final long serialVersionUID = 1L; Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/SwingUtil.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/SwingUtil.java 2010-02-15 12:35:35 UTC (rev 1740) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/SwingUtil.java 2010-02-15 16:29:38 UTC (rev 1741) @@ -36,7 +36,7 @@ import java.io.InputStream; import java.util.List; import javax.swing.*; -import javax.swing.event.TreeSelectionEvent; +import javax.swing.event.*; import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; @@ -55,12 +55,11 @@ import java.util.Map.Entry; import java.util.NoSuchElementException; import java.util.Properties; -import javax.swing.event.HyperlinkEvent; -import javax.swing.event.TreeSelectionListener; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; +import jaxx.runtime.swing.navigation.NavigationTreeNode; import jaxx.runtime.swing.renderer.BooleanCellRenderer; import jaxx.runtime.swing.renderer.EmptyNumberTableCellRenderer; import jaxx.runtime.swing.renderer.EnumTableCellRenderer; @@ -70,6 +69,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.jxlayer.JXLayer; +import org.jdesktop.swingx.JXTreeTable; /** * The runtime swing util class with some nice stuff. @@ -793,6 +793,26 @@ } /** + * Expand all childs of a tree table. + * + * FIXME : Voir pour enlever le copier coller + * + * @param treeTable the tree to expand + */ + public static void expandTreeTable(final JXTreeTable treeTable) { + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + int i = 0; + while (i < treeTable.getRowCount()) { + treeTable.expandRow(i++); + } + } + }); + } + + /** * Add a listener of tree selection model to expand a new selected node * when it is selected. * @@ -826,6 +846,41 @@ } /** + * Add a listener of tree table selection model to expand a new selected node + * when it is selected. + * + * FIXME : Voir pour enlever le copier coller + * + * @param treeTable the tree to treate + */ + public static void addExpandOnClickListener(final JXTreeTable treeTable) { + + treeTable.addTreeSelectionListener(new TreeSelectionListener() { + + @Override + public void valueChanged(final TreeSelectionEvent e) { + TreeNode node = (TreeNode) e.getPath().getLastPathComponent(); + if (node != null && !node.isLeaf()) { + + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + for (TreePath path : e.getPaths()) { + if (e.isAddedPath(path) && !treeTable.isExpanded(path)) { + log.info("expand node [" + path + "]"); + // will expand the node + treeTable.expandPath(path); + } + } + } + }); + } + } + }); + } + + /** * Set the width of the given component * * @param component the component to resize Deleted: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationHandler.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationHandler.java 2010-02-15 12:35:35 UTC (rev 1740) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationHandler.java 2010-02-15 16:29:38 UTC (rev 1741) @@ -1,45 +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 jaxx.runtime.JAXXContext; - -/** - * Interface to create an handler of a navigation tree. - * - * @author sletellier - * @since 2.0.0 - */ -public interface NavigationHandler { - - /** - * To get the context will be used by handler - * @return {@link JAXXContext} to use - */ - public JAXXContext getContext(); - - /** - * To get helper will be used by handler - * @return {@link NavigationTreeContextHelper} to use - */ - public NavigationTreeContextHelper getContextHelper(); - -} Deleted: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationInstanciationStrategy.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationInstanciationStrategy.java 2010-02-15 12:35:35 UTC (rev 1740) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationInstanciationStrategy.java 2010-02-15 16:29:38 UTC (rev 1741) @@ -1,33 +0,0 @@ -package jaxx.runtime.swing.navigation; - -/** - * Strategy of instanciation of ui. - * <p/> - * For a given {@code node}, the method {@link #getId(jaxx.runtime.swing.navigation.NavigationTreeNode)} - * returns the id of ui to use. - */ -public enum NavigationInstanciationStrategy { - - /** - * instanciate a ui for a node - */ - PER_NODE { - - @Override - public String getId(NavigationTreeNode node) { - return node.getFullPath(); - } - }, - /** - * instanciate only one a ui for a type,nodes will share the instanciation - */ - PER_UI_TYPE { - - @Override - public String getId(NavigationTreeNode node) { - return node.getUIClass().getName(); - } - }; - - public abstract String getId(NavigationTreeNode node); -} 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-02-15 12:35:35 UTC (rev 1740) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeContextHelper.java 2010-02-15 16:29:38 UTC (rev 1741) @@ -66,7 +66,7 @@ protected JAXXContextEntryDef<Object> selectedBeanContextEntry; protected JAXXContextEntryDef<NavigationTreeNode> selectedNodeContextEntry; protected JAXXContextEntryDef<NavigationModel> modelContextEntry; - protected JAXXContextEntryDef<NavigationHandler> handlerContextEntry; + protected JAXXContextEntryDef<NavigationTreeHandler> handlerContextEntry; protected JAXXContextEntryDef<JTree> treeContextEntry; protected JAXXContextEntryDef<JXTreeTable> treeTableContextEntry; // protected JAXXContextEntryDef<Component> selectedUIContextEntry; @@ -76,7 +76,7 @@ treeContextEntry = JAXXUtil.newContextEntryDef(prefix + "-tree", JTree.class); treeTableContextEntry = JAXXUtil.newContextEntryDef(prefix + "-tree-table", JXTreeTable.class); modelContextEntry = JAXXUtil.newContextEntryDef(prefix + "-model", NavigationModel.class); - handlerContextEntry = JAXXUtil.newContextEntryDef(prefix + "-handler", NavigationHandler.class); + handlerContextEntry = JAXXUtil.newContextEntryDef(prefix + "-handler", NavigationTreeHandler.class); selectedBeanContextEntry = JAXXUtil.newContextEntryDef(prefix + "-selected-bean", Object.class); selectedNodeContextEntry = JAXXUtil.newContextEntryDef(prefix + "-selected-node", NavigationTreeNode.class); selectedPathContextEntry = JAXXUtil.newContextEntryDef(prefix + "-selected-path", String.class); @@ -111,14 +111,8 @@ return null; } - /** - * @deprecated please use {@link #getHandler(JAXXContext)}, will be remove soon - * @param context - * @return handler - */ - @Deprecated - public NavigationHandler getTreeHandler(JAXXContext context) { - NavigationHandler r = getTreeHandlerContextEntry().getContextValue(context); + public NavigationTreeHandler getTreeHandler(JAXXContext context) { + NavigationTreeHandler r = getTreeHandlerContextEntry().getContextValue(context); return r; } @@ -164,20 +158,10 @@ getTreeTableContextEntry().setContextValue(context, treeTable); } - /** - * @deprecated please use {@link #setHandler(JAXXContext, NavigationHandler)}, will be remove soon - * @param context - * @param handler - */ - @Deprecated - public void setTreeHandler(JAXXContext context, NavigationHandler handler) { + public void setTreeHandler(JAXXContext context, NavigationTreeHandler handler) { getTreeHandlerContextEntry().setContextValue(context, handler); } - public void setHandler(JAXXContext context, NavigationHandler handler) { - getHandlerContextEntry().setContextValue(context, handler); - } - public void setSelectedPath(JAXXContext context, String path) { if (path == null) { getSelectedPathContextEntry().removeContextValue(context); @@ -214,15 +198,10 @@ return modelContextEntry; } - @Deprecated - protected JAXXContextEntryDef<NavigationHandler> getTreeHandlerContextEntry() { + protected JAXXContextEntryDef<NavigationTreeHandler> getTreeHandlerContextEntry() { return handlerContextEntry; } - public JAXXContextEntryDef<NavigationHandler> getHandlerContextEntry() { - return handlerContextEntry; - } - protected JAXXContextEntryDef<Object> getSelectedBeanContextEntry() { return selectedBeanContextEntry; } 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-02-15 12:35:35 UTC (rev 1740) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeHandler.java 2010-02-15 16:29:38 UTC (rev 1741) @@ -42,7 +42,7 @@ * @author tony * @since 1.7.2 */ -public abstract class NavigationTreeHandler extends DefaultTreeSelectionModel implements NavigationHandler{ +public abstract class NavigationTreeHandler extends DefaultTreeSelectionModel implements TreeSelectionListener{ private static final long serialVersionUID = 1L; /** @@ -51,13 +51,44 @@ static private final Log log = LogFactory.getLog(NavigationTreeHandler.class); /** + * Strategy of instanciation of ui. + * <p/> + * For a given {@code node}, the method {@link #getId(NavigationTreeNode)} + * returns the id of ui to use. + */ + public enum Strategy { + + /** + * instanciate a ui for a node + */ + PER_NODE { + + @Override + public String getId(NavigationTreeNode node) { + return node.getFullPath(); + } + }, + /** + * instanciate only one a ui for a type,nodes will share the instanciation + */ + PER_UI_TYPE { + + @Override + public String getId(NavigationTreeNode node) { + return node.getUIClass().getName(); + } + }; + + public abstract String getId(NavigationTreeNode node); + } + /** * UI which contains navigation tree */ protected JAXXContext context; /** * UI Instanciation strategy */ - protected NavigationInstanciationStrategy strategy; + protected Strategy strategy; /** * JAXXContext access helper. @@ -66,22 +97,25 @@ */ protected NavigationTreeContextHelper contextHelper; - protected NavigationTreeHandler(String contextPrefix, JAXXObject context, NavigationInstanciationStrategy strategy) { + protected NavigationTreeHandler(String contextPrefix, JAXXObject context, Strategy strategy) { this.contextHelper = new NavigationTreeContextHelper(contextPrefix); this.context = context; this.strategy = strategy; - addTreeSelectionListener(new TreeSelectionListener() { + addTreeSelectionListener(this); + } - @Override - public void valueChanged(TreeSelectionEvent event) { - if (event.getOldLeadSelectionPath() != null && event.getOldLeadSelectionPath().equals(event.getPath())) { - // do not treate this if no path changed - return; - } - NavigationTreeNode node = (NavigationTreeNode) event.getPath().getLastPathComponent(); - selectNodeUI(node); - } - }); + @Override + public void valueChanged(TreeSelectionEvent event) { + if (log.isDebugEnabled()){ + log.debug("Value changed for path : " + event.getPath()); + log.debug("Old lead selection path : " + event.getOldLeadSelectionPath()); + } + if (event.getOldLeadSelectionPath() != null && event.getOldLeadSelectionPath().equals(event.getPath())) { + // do not treate this if no path changed + return; + } + NavigationTreeNode node = (NavigationTreeNode) event.getPath().getLastPathComponent(); + selectNodeUI(node); } /** @@ -133,16 +167,10 @@ */ protected abstract void treateError(Exception e); - /** - * {@see NavigationHandler#getContext() - **/ public JAXXContext getContext() { return context; } - /** - * {@see NavigationHandler#getContextHelper() - **/ public NavigationTreeContextHelper getContextHelper() { return contextHelper; } 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-02-15 12:35:35 UTC (rev 1740) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeHandlerWithCardLayout.java 2010-02-15 16:29:38 UTC (rev 1741) @@ -61,7 +61,7 @@ */ protected abstract CardLayout2 getContentLayout(); - public NavigationTreeHandlerWithCardLayout(String contextPrefix, JAXXObject context, NavigationInstanciationStrategy 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); 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-02-15 12:35:35 UTC (rev 1740) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeHelper.java 2010-02-15 16:29:38 UTC (rev 1741) @@ -62,7 +62,7 @@ * @param context the context to associate with fresh handler * @return the new handler */ - public abstract NavigationHandler createTreeHandler(JAXXObject context); + public abstract NavigationTreeHandler createTreeHandler(JAXXObject context); public NavigationTreeHelper(String contextPrefix) { super(contextPrefix); @@ -141,7 +141,15 @@ log.debug(node); } TreePath path = new TreePath(navigationModel.getPathToRoot(node)); - JTree tree = getSafeTree(context); + JTree tree = getTree(context); + if (tree == null){ + // FIXME : Refactor in other helper ? + // If its JXTreeTable + JXTreeTable treeTable = getSafeTreeTable(context); + treeTable.getTreeSelectionModel().setSelectionPath(path); + treeTable.scrollPathToVisible(path); + return; + } tree.setSelectionPath(path); tree.scrollPathToVisible(path); } Deleted: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeTableHandler.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeTableHandler.java 2010-02-15 12:35:35 UTC (rev 1740) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeTableHandler.java 2010-02-15 16:29:38 UTC (rev 1741) @@ -1,253 +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 jaxx.runtime.JAXXAction; -import jaxx.runtime.JAXXContext; -import jaxx.runtime.JAXXObject; -import jaxx.runtime.context.JAXXInitialContext; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import javax.swing.*; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; -import javax.swing.event.TreeSelectionEvent; -import javax.swing.event.TreeSelectionListener; -import javax.swing.tree.TreePath; -import javax.swing.tree.TreeSelectionModel; -import java.awt.*; - -/** - * The handler of a navigation tree table. - * - * This is also the selection model to use, since we must check before moving - * from a node we can not just listen selection model changed, we must control - * it. - * - * TODO : Chercher une solution pour limiter le copier/coller.... @see {NavigationTreeHandler} - * - * @author sletellier - * @since 2.0.0 - */ -public abstract class NavigationTreeTableHandler extends DefaultListSelectionModel implements NavigationHandler { - - private static final long serialVersionUID = 1L; - /** - * Logger - */ - static private final Log log = LogFactory.getLog(NavigationTreeTableHandler.class); - - /** - * UI which contains navigation tree - */ - protected JAXXContext context; - /** - * UI Instanciation strategy - */ - protected NavigationInstanciationStrategy strategy; - /** - * JAXXContext access helper. - * - * @since 1.7.2 - */ - protected NavigationTreeContextHelper contextHelper; - - protected NavigationTreeTableHandler(String contextPrefix, final JAXXObject context, NavigationInstanciationStrategy strategy, TreeSelectionModel selectModel) { - this.contextHelper = new NavigationTreeContextHelper(contextPrefix); - this.context = context; - this.strategy = strategy; - addListSelectionListener(new ListSelectionListener(){ - @Override - public void valueChanged(ListSelectionEvent event) { - log.info("Value changed old : " + event.getFirstIndex() + " last " + event.getLastIndex() + " source " + event.getSource()); - if (event.getSource() == null || !event.getValueIsAdjusting()) { - // do not treate this if no path changed - return; - } - - // FIXME : event.getSource devrais retourner le navigationTreeNode.... - NavigationTreeNode node = (NavigationTreeNode) contextHelper.getTreeTable(context).getModel().getValueAt(event.getLastIndex(), 0); - selectNodeUI(node); - } - }); - } - - /** - * @return le modèle de navigation associé - */ - protected abstract NavigationModel getNavigationTreeModel(); - - /** - * @return le composent actuellement visible associé au noeud courant ou - * au noeud précédent lors d'un changement de noeud. - */ - protected abstract Component getCurrentUI(); - - /** - * @param node le noeud associé à l'ui à retrouver - * @return l'ui associé au novueau noeud sélectionné - */ - protected abstract Component getUI(NavigationTreeNode node); - - /** - * @param component le composent actuellement visible - * @return <code>true</code> si le composent a bien été fermé, <code>false</code> sinon - * @throws Exception if any - */ - protected abstract boolean closeUI(Component component) throws Exception; - - /** - * Instancie une nouvelle ui associé à un noeud de l'arbre de navigation - * - * @param node le noeud associé à l'ui à créer - * @return la nouvelle ui associée au noeud - * @throws Exception if any - */ - protected abstract Component createUI(NavigationTreeNode node) throws Exception; - - /** - * Ouvre l'ui associée au noeud sélectionné dans l'arbre de navigation. - * - * @param newUI l'ui associé au noeud sélectionné à ouvrir - * @param node le node de l'ui a ouvrir - * @throws Exception if any - */ - protected abstract void openUI(Component newUI, NavigationTreeNode node) throws Exception; - - /** - * Traitement des exceptions. - * - * @param e l'erreur recontrée (ou null si pas d"erreur) - */ - protected abstract void treateError(Exception e); - - /** - * @see NavigationHandler#getContext() - */ - public JAXXContext getContext() { - return context; - } - - /** - * @see NavigationHandler#getContextHelper() - */ - public NavigationTreeContextHelper getContextHelper() { - return contextHelper; - } - - protected void selectNodeUI(NavigationTreeNode node) { - - try { - - String path = node.getFullPath(); - - if (log.isTraceEnabled()) { - log.trace(path); - } - - Component newUI = getUI(node); - - // now, we are free to open the ui associated with the selected node in navigation - - // get the bean associated with the node - Object data = getNavigationTreeModel().getBean(path); - - // save it in context (must be done before init ui) - addSelectedBeanInContext(node, data); - - if (newUI == null) { - - // a new ui instance is required - newUI = createUI(node); - } - - JAXXContext ctxt = getContext(); - NavigationTreeContextHelper helper = getContextHelper(); - - // save in context current node context path - helper.setSelectedPath(ctxt, node.getFullPath()); - - // save in context current node - helper.setSelectedNode(ctxt, node); - - // save in context current ui -// helper.setSelectedUI(ctxt, newUI); - - // really open the ui associated with the selected node - // init ui before to be visible - if (newUI instanceof NavigationContentUI) { - ((NavigationContentUI) newUI).openUI(node); - } - - // set ui in content - openUI(newUI, node); - - } catch (Exception e) { - // remove data from context - - // if any error, go back to previvous node - treateError(e); - } - } - - /** - * Prepare le context a utiliser pour initialiser une nouvelle ui. - * - * @param node le noeud associé à l'ui à créer - * @return le context à utiliser pour instancier l'ui - * @throws Exception if any - */ - protected JAXXContext createUIContext(NavigationTreeNode node) throws Exception { - - if (node.getUIHandlerClass() == null) { - if (log.isWarnEnabled()) { - log.warn("no action associated with ui " + node.getUIClass()); - } - // no action associated, just - return getContext(); - } - - JAXXAction action = node.getUIHandlerClass().newInstance(); - - // init context with - JAXXInitialContext uiContext = action.init(getContext()); - return uiContext; - } - - protected void addSelectedBeanInContext(NavigationTreeNode node, Object data) { - - if (log.isDebugEnabled()) { - log.debug("find data for contextPath <" + node.getFullPath() + "> : " + (data == null ? null : data.getClass())); - } - JAXXContext ctxt = getContext(); - NavigationTreeContextHelper helper = getContextHelper(); - - // remove previous selected bean - //TODO-TC-20091004 should have an automatic clean context method while - helper.setSelectedBean(ctxt, null); - - if (data != null) { - - helper.setSelectedBean(ctxt, data); - } - } -} 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-02-15 12:35:35 UTC (rev 1740) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeTableModel.java 2010-02-15 16:29:38 UTC (rev 1741) @@ -103,8 +103,8 @@ * nodesWereRemoved to create the appropriate event. This is the preferred * way to remove a node as it handles the event creation for you. */ - public void removeNodeFromParent(MutableTreeNode node) { - MutableTreeTableNode parent = (MutableTreeTableNode) node.getParent(); + public void removeNodeFromParent(NavigationTreeNode node) { + NavigationTreeTableNode parent = (NavigationTreeTableNode)node.getParent(); if (parent == null) { throw new IllegalArgumentException("node does not have a parent.");
participants (1)
-
sletellier@users.nuiton.org