Author: tchemit Date: 2010-06-08 12:00:28 +0200 (Tue, 08 Jun 2010) New Revision: 1954 Url: http://nuiton.org/repositories/revision/jaxx/1954 Log: finalize tree api Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/AbstractJaxxTreeCellRenderer.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/DataProvider.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/JaxxNode.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/JaxxNodeChildLoador.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/JaxxTreeHelper.java Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/AbstractJaxxTreeCellRenderer.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/AbstractJaxxTreeCellRenderer.java 2010-06-07 14:50:20 UTC (rev 1953) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/AbstractJaxxTreeCellRenderer.java 2010-06-08 10:00:28 UTC (rev 1954) @@ -24,7 +24,6 @@ */ package jaxx.runtime.swing.tree; -import jaxx.runtime.swing.navigation.tree.NavigationTreeNode; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -41,42 +40,38 @@ * @author chemit <chemit@codelutin.com> * @since 1.2 */ -public abstract class AbstractJaxxTreeCellRenderer extends DefaultTreeCellRenderer { +public abstract class AbstractJaxxTreeCellRenderer<N extends JaxxNode<N>> extends DefaultTreeCellRenderer { /** Logger */ protected static final Log log = LogFactory.getLog(AbstractJaxxTreeCellRenderer.class); /** source de donnée */ - protected DataProvider dataSource; + protected DataProvider dataProvider; /** le cache de rendu */ - protected final Map<JaxxNode, String> renderCache = new HashMap<JaxxNode, String>(); + protected final Map<N, String> renderCache = new HashMap<N, String>(); /** - * Determines the text render of a node using the {@link #dataSource}. + * Determines the text render of a node using the {@link #dataProvider}. * - * @param node - * @return + * @param node the node to render + * @return the text render of the node */ - protected abstract String computeNodeRender(JaxxNode node); + protected abstract String computeNodeText(N node); protected AbstractJaxxTreeCellRenderer() { } - public DataProvider getDataSource() { - - return dataSource; + public DataProvider getDataProvider() { + return dataProvider; } + public void setDataProvider(DataProvider dataProvider) { + this.dataProvider = dataProvider; - public void setDataSource(DataProvider dataSource) { - this.dataSource = dataSource; - if (dataSource != null) { - - // une nouvelle source utilisée, on vide le cache - clearCache(); - } + // une nouvelle source utilisée, on vide le cache + clearCache(); } public void clearCache() { @@ -89,7 +84,7 @@ clearCache(); } - public String getNodeText(JaxxNode node) { + public String getNodeText(N node) { if (node == null) { return null; } @@ -97,55 +92,32 @@ if (node.isDirty() || !renderCache.containsKey(node)) { - // il calculer le rendu du noeud - text = computeRender(node); + // calculer le rendu du noeud + if (node.isStringNode()) { + text = _(node.getId()); + } else { + + text = computeNodeText(node); + } + if (log.isDebugEnabled()) { - log.debug("render for node [" + node + "] = " + text); + log.debug("text for node [" + node + "] = <" + text + ">"); } // sauvegarde dans le cache renderCache.put(node, text); + // le noeud est de nouveau propre node.setDirty(false); } else { + + // recupération directement du rendu dans le cache text = renderCache.get(node); } return text; } - protected String computeRender(JaxxNode node) { - - if (log.isDebugEnabled()) { - log.debug("for node : " + node.getId()); - } - - String text; - - if (node.isStringNode()) { - text = _(node.getId()); - return text; - } - - // not a static node - text = computeNodeRender(node); - - return text; - } - - /** - * @param value the value which should be a node - * @return the cast {@link NavigationTreeNode}, or <code>null</code> if - * value is null. - */ - public static JaxxNode getNode(Object value) { - JaxxNode node = null; - if (value instanceof JaxxNode) { - node = (JaxxNode) value; - } - return node; - } - } Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/DataProvider.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/DataProvider.java 2010-06-07 14:50:20 UTC (rev 1953) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/DataProvider.java 2010-06-08 10:00:28 UTC (rev 1954) @@ -25,13 +25,17 @@ package jaxx.runtime.swing.tree; /** - * Contract of provider of data from theire ids. + * Contract of provider of data from their ids. * * @author tchemit <chemit@codelutin.com> * @since 2.1 */ public interface DataProvider { - Object getData(String id) throws Exception; + /** + * @return {@code true} is provider is enabled and can provide datas, + * {@code false} otherwise. + */ + boolean isEnabled(); } Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/JaxxNode.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/JaxxNode.java 2010-06-07 14:50:20 UTC (rev 1953) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/JaxxNode.java 2010-06-08 10:00:28 UTC (rev 1954) @@ -37,7 +37,7 @@ * @author tchemit <chemit@codelutin.com> * @since 2.1 */ -public class JaxxNode extends DefaultMutableTreeNode { +public class JaxxNode<N extends JaxxNode<N>> extends DefaultMutableTreeNode { /** Logger */ static private final Log log = LogFactory.getLog(JaxxNode.class); @@ -47,33 +47,39 @@ /** le type de l'objet encapsule dans le noeud */ protected final Class<?> internalClass; + /** + * un nom de context optionnel de context pour pouvoir gérer plusieurs + * types de noeud ayant la même {@link #internalClass}. + */ protected final String context; /** l'id de l'objet encapsule dans le noeud */ protected final String id; - /** un drapeau pour savoir quand il faut recalculer le rendu du noeud */ + /** un drapeau pour savoir quand il faut recalculer les données du noeud */ protected boolean dirty = true; - /** un drapeau a faux tant que les fils n'ont pas ete chargés */ protected boolean loaded; - /** l'objet pour créer les noeuds fils */ - protected final JaxxNodeChildLoador<?> childLoador; + /** l'objet (optionnel) pour créer les noeuds fils */ + protected final JaxxNodeChildLoador<?, N> childLoador; - public JaxxNode(String id) { this(String.class, id, null, null); } - public JaxxNode(Class<?> internalClass, String id, String context, JaxxNodeChildLoador<?> childLoador) { + public JaxxNode(Class<?> internalClass, + String id, + String context, + JaxxNodeChildLoador<?, N> childLoador) { this.internalClass = internalClass; this.id = id; this.context = context; this.childLoador = childLoador; - if (childLoador == null) { - // no child loador, this is a static node + if (isStaticNode()) { + + // A static node is always full loaded loaded = true; } if (log.isDebugEnabled()) { @@ -81,16 +87,6 @@ } } - @Override - public Object getUserObject() { - return id; - } - - @Override - public JaxxNode getParent() { - return (JaxxNode) super.getParent(); - } - public String getId() { return id; } @@ -111,12 +107,70 @@ return dirty; } + @Override + public Object getUserObject() { + return id; + } + + @Override + public N getParent() { + return (N) super.getParent(); + } + + @Override + public N getRoot() { + return (N) super.getRoot(); + } + + @Override + public N getChildAt(int index) { + return (N) super.getChildAt(index); + } + + @Override + public Enumeration<N> children() { + return (Enumeration<N>) super.children(); + } + + @Override + public boolean isLeaf() { + // there is two behaviours for the test : + // 1 - when the node is static, then can directly use his number of child + // to determine if node is a leaf (no child) + // 2 - when the node is dynamic, then ALWAYS says the node is NOT a leaf until + // it is loaded, otherwise the WillExpand listener will not load the childs... + // Once the node is loaded, use back the normal behaviour (count number of childs) + return isStaticNode() ? getChildCount() == 0 : isLoaded() && getChildCount() == 0; + } + + /** + * Convinient method to known if we are on a String typed node. + * + * @return {@code true} if the type of node if + */ public boolean isStringNode() { return String.class.equals(internalClass); } + /** + * To know if the node is static. + * <p/> + * A {@code static} node has no {@link #childLoador}. + * + * @return {@code true} when the node is static : says, the node has + * no {@link #childLoador}. + */ + public boolean isStaticNode() { + return childLoador == null; + } - public JaxxNode getContainerNode() { + /** + * Get the first node form this one to the root which has a none + * {@code String} type. + * + * @return the first concrete node type + */ + public N getContainerNode() { if (isRoot()) { // si on arrive sur le root, quelque chose ne va pas, // on bloque par null, a defaut de declancher une exception @@ -129,85 +183,118 @@ } // cas final : sur un noeud de donnee + classe interne de donnee - return this; + return (N) this; } - @Override - public boolean isLeaf() { - return !loaded || getChildCount() == 0; - } - + /** + * Changes the {@link #dirty} state. + * <p/> + * As a side effect, when a render will use this node, it will force to reload + * the datas from the {@link DataProvider}. + * + * @param dirty the new dirty value + */ public void setDirty(boolean dirty) { this.dirty = dirty; } - @Override - public String toString() { - return System.identityHashCode(this) + " :" + id; - } + public N findNodeById(String id, + DefaultTreeModel model, + DataProvider source) { + if (id == null) { - public JaxxNode findNodeById(String id, - DefaultTreeModel model, - DataProvider source) { - if (id == null) { + // id null ? donc rien a faire return null; } if (id.equals(getId())) { - return this; + + // on a trouve le bon noeud + return (N) this; } + if (!isLoaded()) { - // il faut ouvrir le noeud pour effectuer la recherche + // il faut charger les fils du noeud pour effectuer la recherche populateChilds(model, source); } - if (getChildCount() == 0) { + + if (isLeaf()) { + + // au final le noeud est une feuille, donc ne convient pas return null; } - Enumeration<?> enumeration = children(); + + // on recherche dans les fils + Enumeration<N> enumeration = children(); while (enumeration.hasMoreElements()) { - JaxxNode node = (JaxxNode) enumeration.nextElement(); - JaxxNode nodeById = node.findNodeById(id, model, source); + N node = enumeration.nextElement(); + N nodeById = node.findNodeById(id, model, source); if (nodeById != null) { return nodeById; } } + + // aucun des noeud fils ne convient return null; } - public void populateChilds(DefaultTreeModel model, DataProvider source) { - if (childLoador == null) { - // pas de fils constructible - return; - } - try { - if (log.isDebugEnabled()) { - log.debug("Will load childs for " + this); - } - childLoador.loadChilds(model, this, source); - } catch (Exception e) { - throw new RuntimeException(e); - } finally { - loaded = true; - } - } - + /** + * Pour charger un noeud et optionnellement ces fils. + * <p/> + * Tous les noeuds modifiés (ou chargés) passent à l'état {@code dirty}, et + * donc les rendus seront recalculés. + * + * @param model le modèles content le noeud + * @param provider le provider de données + * @param populateChilds un drapeau pour charger aussi les fils du noeud courant + */ public void populateNode(DefaultTreeModel model, - DataProvider source, + DataProvider provider, boolean populateChilds) { + // on indique que le noeud n'est plus propre setDirty(true); if (populateChilds) { // chargement des fils - populateChilds(model, source); + populateChilds(model, provider); } + } - if (isStringNode()) { + /** + * Pour charger les fils d'un noeud en utilisant le {@link #childLoador}. + * <p/> + * Si le noeud est static (i.e n'a pas de childLoador), on ne fait rien. + * + * @param model le modèle contenant le noeud + * @param provider le provider de données + */ + public void populateChilds(DefaultTreeModel model, DataProvider provider) { + if (isStaticNode()) { + + // noeud static, rien a faire return; } - throw new IllegalStateException("Cano not populate node [" + internalClass + ":" + id + "]"); + // chargement des noeuds fils du noeud courant + try { + if (log.isDebugEnabled()) { + log.debug("Will load childs for " + this); + } + childLoador.loadChilds(model, (N) this, provider); + } catch (Exception e) { + throw new RuntimeException(e.getMessage(), e); + } finally { + + // au final, on passe le noeud a l'état chargé + loaded = true; + } } + @Override + public String toString() { + return System.identityHashCode(this) + " :" + id; + } + } Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/JaxxNodeChildLoador.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/JaxxNodeChildLoador.java 2010-06-07 14:50:20 UTC (rev 1953) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/JaxxNodeChildLoador.java 2010-06-08 10:00:28 UTC (rev 1954) @@ -37,34 +37,44 @@ * @author tchemit <chemit@codelutin.com> * @since 1.4 */ -public abstract class JaxxNodeChildLoador<O> implements Serializable { +public abstract class JaxxNodeChildLoador<O, N extends JaxxNode<N>> implements Serializable { /** Logger */ - static private final Log log = - LogFactory.getLog(JaxxNodeChildLoador.class); + static private final Log log = LogFactory.getLog(JaxxNodeChildLoador.class); + /** Type of data of the node */ protected final Class<O> beanType; - protected transient DataProvider dataService; - - public JaxxNodeChildLoador(Class<O> beanType) { + protected JaxxNodeChildLoador(Class<O> beanType) { this.beanType = beanType; } + /** + * Obtain the list of data to put in childs. + * + * @param parentClass type of parent + * @param parentId id of parent + * @param dataProvider the data provider + * @return the list of data + * @throws Exception if any problem + */ public abstract List<O> getData(Class<?> parentClass, String parentId, - DataProvider dataService); + DataProvider dataProvider) throws Exception; - public abstract JaxxNode createNode(JaxxNode parentNode, O data); + /** + * Hook to create a child node given his {@code data}. + * + * @param parentNode the parent node + * @param data the data of the node to create + * @return the created node + */ + public abstract N createNode(N parentNode, O data); public Class<O> getBeanType() { return beanType; } - public DataProvider getDataService() { - return dataService; - } - /** * Charge les fils du noeud parent donne. * @@ -74,10 +84,10 @@ * @throws Exception pour tout probleme de recuperation de donnees */ public void loadChilds(DefaultTreeModel model, - JaxxNode parentNode, + N parentNode, DataProvider source) throws Exception { - JaxxNode containerNode = parentNode.getContainerNode(); + N containerNode = parentNode.getContainerNode(); if (containerNode == null) { @@ -109,19 +119,21 @@ model.nodesWereInserted(parentNode, indices); } - protected void addChildNodes(JaxxNode parentNode, List<O> datas) { + protected void addChildNodes(N parentNode, List<O> datas) { // creation des noeuds fils for (O o : datas) { - log.info("[" + parentNode + "] Will add child node for " + o); - JaxxNode node = createNode(parentNode, o); + if (log.isInfoEnabled()) { + log.info("[" + parentNode + "] Will add child node for " + o); + } + N node = createNode(parentNode, o); parentNode.add(node); } } - protected void notifyChildChildAdded(DefaultTreeModel model, JaxxNode parentNode) { + protected void notifyChildChildAdded(DefaultTreeModel model, N parentNode) { // notifie le modele d'un ajout de noeuds for (int i = 0; i < parentNode.getChildCount(); i++) { - JaxxNode at = (JaxxNode) parentNode.getChildAt(i); + N at = parentNode.getChildAt(i); model.nodesWereInserted(at, new int[]{0}); } } Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/JaxxTreeHelper.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/JaxxTreeHelper.java 2010-06-07 14:50:20 UTC (rev 1953) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/JaxxTreeHelper.java 2010-06-08 10:00:28 UTC (rev 1954) @@ -50,7 +50,7 @@ * @author tchemit <chemit@codelutin.com> * @since 2.1 */ -public class JaxxTreeHelper { +public class JaxxTreeHelper<N extends JaxxNode<N>> { /** Logger */ static private final Log log = LogFactory.getLog(JaxxTreeHelper.class); @@ -61,7 +61,8 @@ /** l'arbre utilisation le model */ protected JTree tree; - protected DataProvider dataSource; + /** data provider */ + protected DataProvider dataProvider; /** * pour charger les fils d'un noeud lorsqu'on l'ouvre. Cela permet de @@ -90,8 +91,8 @@ if (e.getPath() == null) { return; } - JaxxNode node = - (JaxxNode) e.getPath().getLastPathComponent(); + JaxxNode<?> node = + (JaxxNode<?>) e.getPath().getLastPathComponent(); if (log.isDebugEnabled()) { log.debug("for node " + node); @@ -123,7 +124,7 @@ DefaultTreeModel model = (DefaultTreeModel) ((JTree) event.getSource()).getModel(); - JaxxNode source = (JaxxNode) + JaxxNode<?> source = (JaxxNode<?>) event.getPath().getLastPathComponent(); if (log.isDebugEnabled()) { log.debug("will expand node " + source); @@ -147,9 +148,10 @@ treeModelListener = new TreeModelListener() { @Override public void treeNodesChanged(TreeModelEvent e) { - JaxxNode source = (JaxxNode) e.getTreePath().getLastPathComponent(); + JaxxNode<?> source = (JaxxNode<?>) e.getTreePath().getLastPathComponent(); DefaultTreeModel model = (DefaultTreeModel) e.getSource(); - source.populateNode(model, getDataProvider(), false); + DataProvider dataProvider = getDataProvider(); + source.populateNode(model, dataProvider, false); if (log.isDebugEnabled()) { String message = getLogMessage(e, source); log.debug(message); @@ -157,17 +159,18 @@ Object[] children = e.getChildren(); if (children != null) { for (Object o : children) { - JaxxNode child = (JaxxNode) o; - child.populateNode(model, getDataProvider(), false); + JaxxNode<?> child = (JaxxNode<?>) o; + child.populateNode(model, dataProvider, false); } } } @Override public void treeNodesInserted(TreeModelEvent e) { - JaxxNode source = (JaxxNode) e.getTreePath().getLastPathComponent(); + JaxxNode<?> source = (JaxxNode<?>) e.getTreePath().getLastPathComponent(); DefaultTreeModel model = (DefaultTreeModel) e.getSource(); - source.populateNode(model, getDataProvider(), false); + DataProvider dataProvider = getDataProvider(); + source.populateNode(model, dataProvider, false); if (log.isDebugEnabled()) { String message = getLogMessage(e, source); log.debug(message); @@ -175,15 +178,15 @@ Object[] children = e.getChildren(); if (children != null) { for (Object o : children) { - JaxxNode child = (JaxxNode) o; - child.populateNode(model, getDataProvider(), false); + JaxxNode<?> child = (JaxxNode<?>) o; + child.populateNode(model, dataProvider, false); } } } @Override public void treeNodesRemoved(TreeModelEvent e) { - JaxxNode source = (JaxxNode) e.getTreePath().getLastPathComponent(); + JaxxNode<?> source = (JaxxNode<?>) e.getTreePath().getLastPathComponent(); if (log.isDebugEnabled()) { String message = getLogMessage(e, source); log.debug(message); @@ -192,9 +195,10 @@ @Override public void treeStructureChanged(TreeModelEvent e) { - JaxxNode source = (JaxxNode) e.getTreePath().getLastPathComponent(); + JaxxNode<?> source = (JaxxNode<?>) e.getTreePath().getLastPathComponent(); DefaultTreeModel model = (DefaultTreeModel) e.getSource(); - source.populateNode(model, getDataProvider(), false); + DataProvider dataProvider = getDataProvider(); + source.populateNode(model, dataProvider, false); if (log.isDebugEnabled()) { String message = getLogMessage(e, source); log.debug(message); @@ -202,13 +206,13 @@ Object[] children = e.getChildren(); if (children != null) { for (Object o : children) { - JaxxNode child = (JaxxNode) o; - child.populateNode(model, getDataProvider(), true); + JaxxNode<?> child = (JaxxNode<?>) o; + child.populateNode(model, dataProvider, true); } } } - protected String getLogMessage(TreeModelEvent e, JaxxNode source) { + protected String getLogMessage(TreeModelEvent e, JaxxNode<?> source) { String message = source.getInternalClass() + " - " + source.getId() + " : " + source.getUserObject() + "\n" + "children indices : " + @@ -219,7 +223,7 @@ } protected DataProvider getDataProvider() { - return dataSource; + return dataProvider; } public void setTree(JTree tree, TreeSelectionListener listener) { @@ -231,10 +235,10 @@ this.tree.getSelectionModel().addTreeSelectionListener(selectionListener); } - public AbstractJaxxTreeCellRenderer getTreeCellRenderer() { + public AbstractJaxxTreeCellRenderer<N> getTreeCellRenderer() { JTree t = getTree(); TreeCellRenderer r = t.getCellRenderer(); - return (AbstractJaxxTreeCellRenderer) + return (AbstractJaxxTreeCellRenderer<N>) (r instanceof AbstractJaxxTreeCellRenderer ? r : null); } @@ -252,27 +256,25 @@ * @param deep un flag pour activer la repainte de la descendance du * noeud */ - public void refreshNode(JaxxNode node, boolean deep) { + public void refreshNode(N node, boolean deep) { if (log.isDebugEnabled()) { log.debug(node); } model.nodeChanged(node); if (deep) { // repaint childs nodes - //todo we should only repaint necessary nodes ? - Enumeration<?> e = node.children(); + Enumeration<N> e = node.children(); while (e.hasMoreElements()) { - JaxxNode child = (JaxxNode) e.nextElement(); + N child = e.nextElement(); refreshNode(child, true); } } } - /** Sélection du parent du noeud selectionne dans l'arbre de navigation. */ public void selectParentNode() { - JaxxNode node = getSelectedNode(); + N node = getSelectedNode(); if (node == null) { // pas de noeud selectionne @@ -283,19 +285,19 @@ selectNode(node); } - public JaxxNode getSelectedNode() { + public N getSelectedNode() { JTree tree = getTree(); TreePath path = tree.getSelectionPath(); - JaxxNode node = null; + N node = null; if (path != null) { - node = (JaxxNode) path.getLastPathComponent(); + node = (N) path.getLastPathComponent(); } return node; } public String[] getSelectedIds() { List<String> result = new ArrayList<String>(); - JaxxNode selectedNode = getSelectedNode(); + JaxxNode<?> selectedNode = getSelectedNode(); while (selectedNode != null && !selectedNode.isRoot()) { result.add(selectedNode.getId()); @@ -311,8 +313,8 @@ * @param path le path absolue du noeud dans l'arbre */ public void selectNode(String... path) { - JaxxNode root = (JaxxNode) model.getRoot(); - JaxxNode node = findNode(root, path); + N root = (N) model.getRoot(); + N node = findNode(root, path); if (log.isDebugEnabled()) { log.debug(Arrays.toString(path) + " :: " + node); } @@ -326,7 +328,7 @@ * * @param node le noeud à sélectionner dans l'arbre */ - public void selectNode(JaxxNode node) { + public void selectNode(N node) { if (log.isDebugEnabled()) { log.debug(node); @@ -337,8 +339,8 @@ tree.scrollPathToVisible(path); } - public JaxxNode findNode(JaxxNode node, String... ids) { - JaxxNode result = null; + public N findNode(N node, String... ids) { + N result = null; for (String id : ids) { result = node.findNodeById(id, model, getDataProvider()); @@ -353,135 +355,35 @@ return result; } - public JaxxNode removeChildNode(JaxxNode node) { - JaxxNode parentNode = node.getParent(); + public N removeChildNode(N node) { + N parentNode = node.getParent(); model.removeNodeFromParent(node); return parentNode; } - public void moveNode(JaxxNode parentNode, JaxxNode node, int position) { + public void moveNode(N parentNode, N node, int position) { parentNode.remove(node); parentNode.insert(node, position); model.nodeStructureChanged(parentNode); } -// public JaxxNode addUnsavedNode(JaxxNode parentNode, Class<?> type) { -// -// // noeud en mode creation -// String label = decoratorService.getEntityLabel(type) + ".unsaved"; -// JaxxNode result = new JaxxNode(type, null, label, false, null); -// parentNode.add(result); -// model.nodesWereInserted(parentNode, new int[]{parentNode.getIndex(result)}); -// return result; -// } -// -// public JaxxNode addMaree(JaxxNode parentNode, Maree bean) { -// JaxxNode result; -// if (bean == null) { -// throw new NullPointerException("Ne peut pas ajouter un objet null"); -// } -// -// result = new JaxxNode(Maree.class, bean.getTopiaId(), false, null); -// -// // Creation d'un node routes -// JaxxNode child = new JaxxNode( -// String.class, -// n_("observe.common.routes"), -// Maree.PROPERTY_ROUTE, -// false, -// new RoutesNodeChildLoador() -// ); -// result.add(child); -// parentNode.add(result); -// -// model.nodesWereInserted(parentNode, new int[]{parentNode.getIndex(result)}); -// model.nodesWereInserted(result, new int[]{result.getIndex(child)}); -// return result; -// } -// -// public JaxxNode addRoute(JaxxNode parentNode, Route bean) { -// JaxxNode result; -// if (bean == null) { -// throw new NullPointerException("Ne peut pas ajouter un objet null"); -// } -// result = new JaxxNode(Route.class, bean.getTopiaId(), false, null); -// -// // Creation d'un node activites -// JaxxNode child = new JaxxNode( -// String.class, -// n_("observe.common.activites"), -// Route.PROPERTY_ACTIVITE, -// false, -// new ActivitesNodeChildLoador() -// ); -// result.add(child); -// parentNode.add(result); -// -// model.nodesWereInserted(parentNode, new int[]{parentNode.getIndex(result)}); -// model.nodesWereInserted(result, new int[]{result.getIndex(child)}); -// return result; -// } -// -// public JaxxNode addActivite(JaxxNode parentNode, Activite bean) { -// JaxxNode result; -// if (bean == null) { -// throw new NullPointerException("Ne peut pas ajouter un objet null"); -// } -// result = new JaxxNode(Activite.class, -// bean.getTopiaId(), -// false, -// new ActiviteNodeChildLoador()); -// parentNode.add(result); -// -// model.nodesWereInserted(parentNode, new int[]{parentNode.getIndex(result)}); -// return result; -// } -// -// public JaxxNode addObjetFlottant(JaxxNode parentNode, ObjetFlottant bean) { -// JaxxNode result; -// if (bean == null) { -// throw new NullPointerException("Ne peut pas ajouter un objet null"); -// } -// result = new JaxxNode(ObjetFlottant.class, bean.getTopiaId(), false, new ObjetFlottantNodeChildLoador()); -// parentNode.add(result); -// -// model.nodesWereInserted(parentNode, new int[]{parentNode.getIndex(result)}); -// return result; -// } -// -// public JaxxNode addCalee(JaxxNode parentNode, Calee bean) { -// JaxxNode result; -// if (bean == null) { -// throw new NullPointerException("Ne peut pas ajouter un objet null"); -// } -// result = new JaxxNode(Calee.class, bean.getTopiaId(), false, new CaleeNodeChildLoador()); -// parentNode.add(result); -// -// model.nodesWereInserted(parentNode, new int[]{parentNode.getIndex(result)}); -// return result; -// } - protected JTree getTree() { return tree; } - protected DefaultTreeModel createModel(JaxxNode node) { + protected DefaultTreeModel createModel(N node) { model = new DefaultTreeModel(node); model.addTreeModelListener(treeModelListener); return model; } public void reloadModel(JTree tree) { - -// DataSelectionTreeCellRenderer r = (DataSelectionTreeCellRenderer) tree.getCellRenderer(); -// r.clearCache(); -// tree.clearSelection(); DefaultTreeModel model = (DefaultTreeModel) tree.getModel(); TreeNode node = (TreeNode) model.getRoot(); reload(model, node); } - private void reload(DefaultTreeModel model, TreeNode node) { + protected void reload(DefaultTreeModel model, TreeNode node) { model.nodeChanged(node); Enumeration<?> enumeration = node.children(); while (enumeration.hasMoreElements()) { @@ -491,7 +393,7 @@ } } - public void setDataProvider(DataProvider dataSource) { - this.dataSource = dataSource; + public void setDataProvider(DataProvider dataProvider) { + this.dataProvider = dataProvider; } }
participants (1)
-
tchemit@users.nuiton.org