Author: tchemit Date: 2009-01-02 08:26:20 +0000 (Fri, 02 Jan 2009) New Revision: 1113 Modified: lutinjaxx/branches/storm_1/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeCellRenderer.java lutinjaxx/branches/storm_1/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeModel.java lutinjaxx/branches/storm_1/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeSelectionAdapter.java lutinjaxx/branches/storm_1/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation/NavigationUtil.java Log: naivgation divers... Modified: lutinjaxx/branches/storm_1/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeCellRenderer.java =================================================================== --- lutinjaxx/branches/storm_1/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeCellRenderer.java 2009-01-02 08:25:38 UTC (rev 1112) +++ lutinjaxx/branches/storm_1/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeCellRenderer.java 2009-01-02 08:26:20 UTC (rev 1113) @@ -8,7 +8,9 @@ import org.codelutin.util.StringUtil; import javax.swing.JTree; +import javax.swing.UIManager; import javax.swing.tree.DefaultTreeCellRenderer; +import javax.swing.tree.TreeCellRenderer; import javax.swing.tree.TreePath; import java.awt.Component; @@ -17,24 +19,33 @@ * * @author chemit */ -public class NavigationTreeCellRenderer extends DefaultTreeCellRenderer { +public class NavigationTreeCellRenderer implements TreeCellRenderer { /** to use log facility, just put in your code: log.info(\"...\"); */ static private final Log log = LogFactory.getLog(NavigationTreeCellRenderer.class); protected JAXXContext context; + protected DefaultTreeCellRenderer delegate; + protected static long t = 0; public NavigationTreeCellRenderer(JAXXContext context) { this.context = context; + UIManager.put("Tree.rendererFillBackground", false); + delegate = new DefaultTreeCellRenderer(); } + public NavigationTreeCellRenderer(JAXXContext context, DefaultTreeCellRenderer delegate) { + this.context = context; + this.delegate = delegate; + } + @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) { TreePath path = tree.getPathForRow(row); if (path == null) { - return this; + return delegate; } if (value != null) { @@ -50,7 +61,7 @@ } } - return super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); + return delegate.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); } protected NodeRenderer getNodeRenderer(Object value) { Modified: lutinjaxx/branches/storm_1/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeModel.java =================================================================== --- lutinjaxx/branches/storm_1/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeModel.java 2009-01-02 08:25:38 UTC (rev 1112) +++ lutinjaxx/branches/storm_1/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeModel.java 2009-01-02 08:26:20 UTC (rev 1113) @@ -197,9 +197,20 @@ @Override public void nodeChanged(TreeNode node) { + nodeChanged(node, false); + } + + public void nodeChanged(TreeNode node, boolean deep) { NavigationTreeNode n = (NavigationTreeNode) node; - n.clearCache(); + n.clearCache(!deep); super.nodeChanged(node); + if (deep) { + Enumeration childs = node.children(); + while (childs.hasMoreElements()) { + NavigationTreeNode o = (NavigationTreeNode) childs.nextElement(); + nodeChanged(o, true); + } + } } /** @@ -446,7 +457,7 @@ // save in cache setCachedBean(result); - + return result; } @@ -517,7 +528,11 @@ } public void clearCache() { + clearCache(false); + } + public void clearCache(boolean deep) { + // clear bean cache cachedBean = null; @@ -526,11 +541,13 @@ renderer.setRendererCachedValue(null); } - // clear cache in childs - Enumeration childs = this.children(); - while (childs.hasMoreElements()) { - NavigationTreeNode o = (NavigationTreeNode) childs.nextElement(); - o.clearCache(); + if (deep) { + // clear cache in childs + Enumeration childs = this.children(); + while (childs.hasMoreElements()) { + NavigationTreeNode o = (NavigationTreeNode) childs.nextElement(); + o.clearCache(); + } } } Modified: lutinjaxx/branches/storm_1/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeSelectionAdapter.java =================================================================== --- lutinjaxx/branches/storm_1/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeSelectionAdapter.java 2009-01-02 08:25:38 UTC (rev 1112) +++ lutinjaxx/branches/storm_1/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeSelectionAdapter.java 2009-01-02 08:26:20 UTC (rev 1113) @@ -19,12 +19,16 @@ /** to use log facility, just put in your code: log.info(\"...\"); */ static private final Log log = LogFactory.getLog(NavigationTreeSelectionAdapter.class); - static public final String NAVIGATION_CONTEXT_PATH = "navigation-context-path"; + //static public final String NAVIGATION_CONTEXT_PATH = "navigation-context-path"; - static public final String NAVIGATION_SELECTED_NODE = "navigation-selected-node"; + //static public final String NAVIGATION_SELECTED_NODE = "navigation-selected-node"; static public final String NAVIGATION_SELECTED_BEAN = "navigation-selected-bean"; + static public final JAXXContextEntryDef<String> NAVIGATION_SELECTED_PATH_ENTRY_DEF = JAXXContextEntryDef.newDef("navigation-selected-path", String.class); + + static public final JAXXContextEntryDef<NavigationTreeNode> NAVIGATION_SELECTED_NODE_ENTRY_DEF = JAXXContextEntryDef.newDef("navigation-selected-node", NavigationTreeNode.class); + static public final JAXXContextEntryDef<Boolean> GO_BACK_DEF = JAXXContextEntryDef.newDef("goBack", Boolean.class); /** defined the stategy of instanciation of ui */ @@ -179,10 +183,10 @@ } // save in context current node context path - context.setContextValue(node.getContextPath(), NAVIGATION_CONTEXT_PATH); + NAVIGATION_SELECTED_PATH_ENTRY_DEF.setContextValue(context, node.getContextPath()); // save in context current node - context.setContextValue(node, NAVIGATION_SELECTED_NODE); + NAVIGATION_SELECTED_NODE_ENTRY_DEF.setContextValue(context, node); // really open the ui associated with the selected node openUI(newUI, node); Modified: lutinjaxx/branches/storm_1/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation/NavigationUtil.java =================================================================== --- lutinjaxx/branches/storm_1/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation/NavigationUtil.java 2009-01-02 08:25:38 UTC (rev 1112) +++ lutinjaxx/branches/storm_1/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation/NavigationUtil.java 2009-01-02 08:26:20 UTC (rev 1113) @@ -23,11 +23,11 @@ static private final Log log = LogFactory.getLog(NavigationUtil.class); public static String getCurrentNavigationNath(JAXXContext context) { - return context.getContextValue(String.class, NavigationTreeSelectionAdapter.NAVIGATION_CONTEXT_PATH); + return NavigationTreeSelectionAdapter.NAVIGATION_SELECTED_PATH_ENTRY_DEF.getContextValue(context); } public static NavigationTreeNode getSelectedNode(JAXXContext context) { - return context.getContextValue(NavigationTreeNode.class, NavigationTreeSelectionAdapter.NAVIGATION_SELECTED_NODE); + return NavigationTreeSelectionAdapter.NAVIGATION_SELECTED_NODE_ENTRY_DEF.getContextValue(context); } public static <O> O getSelectedBean(JAXXContext context, Class<O> clazz) {