Save This Page
Home » jboss-5.0.0.CR1-src » org.jboss.console » navtree » [javadoc | source]
    1   /*
    2     * JBoss, Home of Professional Open Source
    3     * Copyright 2005, JBoss Inc., and individual contributors as indicated
    4     * by the @authors tag. See the copyright.txt in the distribution for a
    5     * full listing of individual contributors.
    6     *
    7     * This is free software; you can redistribute it and/or modify it
    8     * under the terms of the GNU Lesser General Public License as
    9     * published by the Free Software Foundation; either version 2.1 of
   10     * the License, or (at your option) any later version.
   11     *
   12     * This software is distributed in the hope that it will be useful,
   13     * but WITHOUT ANY WARRANTY; without even the implied warranty of
   14     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   15     * Lesser General Public License for more details.
   16     *
   17     * You should have received a copy of the GNU Lesser General Public
   18     * License along with this software; if not, write to the Free
   19     * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
   20     * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
   21     */
   22   package org.jboss.console.navtree;
   23   
   24   
   25   
   26   import org.jboss.console.manager.interfaces.TreeInfo;
   27   
   28   /**
   29    * TreeModel used to represent management information
   30    *
   31    * @see org.jboss.console.navtree.AdminTreeBrowser
   32    *
   33    * @author  <a href="mailto:sacha.labourey@cogito-info.ch">Sacha Labourey</a>.
   34    * @version $Revision: 37459 $
   35    *
   36    * <p><b>Revisions:</b>
   37    *
   38    * <p><b>17 decembre 2002 Sacha Labourey:</b>
   39    * <ul>
   40    * <li> First implementation </li>
   41    * </ul>
   42    */
   43   
   44   public class ConsoleTreeModel implements javax.swing.tree.TreeModel
   45   {
   46      
   47      // Constants -----------------------------------------------------
   48      
   49      // Attributes ----------------------------------------------------
   50      
   51      protected TreeInfo tree = null;
   52      protected RootWrapper root = null;
   53      protected java.util.Vector treeModelListeners = new java.util.Vector();
   54      //protected InitialContext ctx = null;
   55      //protected String pluginMgrJmxName = null;
   56      protected TreeContext context = null;
   57      protected TreeReopenerMemory reopenerMemory = null;
   58      
   59      protected javax.management.ObjectName targetPM = null;
   60      
   61      // Static --------------------------------------------------------
   62      
   63      // Constructors --------------------------------------------------
   64      
   65      public ConsoleTreeModel (TreeContext context) throws Exception
   66      {      
   67         //this.pluginMgrJmxName = context.getServiceJmxName();
   68         this.targetPM = new javax.management.ObjectName (context.getServiceJmxName());
   69         //this.ctx = new InitialContext (jndiProps);      
   70         this.context = context;
   71         //this.reopenerMemory = reopenerMemory;
   72         
   73         this.tree = loadTree ();      
   74         this.root = new RootWrapper (this.tree);
   75      }
   76      
   77      public boolean refreshTree (boolean force) throws Exception
   78      {
   79         TreeInfo tmpTree = null;
   80         
   81         if (!force && this.tree != null)
   82         {
   83            // first check if that is necessary
   84            //
   85            tmpTree = conditionalLoadTree (this.tree.getTreeVersion());  
   86         }
   87         else
   88         {
   89            tmpTree = loadTree ();
   90         }
   91         
   92         if (tmpTree != null)
   93         {
   94            RootWrapper oldRoot = this.root;                  
   95            
   96            this.tree = tmpTree;
   97            this.root = new RootWrapper (this.tree);
   98            
   99            fireTreeStructureChanged (oldRoot);
  100            return true;
  101         }
  102         else
  103         {
  104            return false;
  105         }
  106      }
  107      
  108      public TreeInfo conditionalLoadTree (long version) throws Exception
  109      {     
  110         return (TreeInfo)context.getRemoteMBeanInvoker ().invoke (targetPM, "getUpdateTreeForProfile", 
  111               new Object[] {"WEB", new Long(version)}, 
  112               new String[] {"java.lang.String", "long"});
  113         //return getPM ().getUpdateTreeForProfile ("WEB", version);            
  114      }
  115      
  116      public TreeInfo loadTree () throws Exception
  117      {      
  118         return (TreeInfo)context.getRemoteMBeanInvoker ().invoke (targetPM, "getTreeForProfile", 
  119               new Object[] {"WEB"}, 
  120               new String[] {"java.lang.String"});
  121         //return getPM ().getTreeForProfile ("WEB");
  122      }
  123      
  124      /** Adds a listener for the <code>TreeModelEvent</code>
  125       * posted after the tree changes.
  126       *
  127       * @param   l       the listener to add
  128       * @see     #removeTreeModelListener
  129       *
  130       */
  131      public void addTreeModelListener (javax.swing.event.TreeModelListener l)
  132      {
  133         treeModelListeners.addElement(l);
  134      }
  135      
  136      /** Returns the child of <code>parent</code> at index <code>index</code>
  137       * in the parent's
  138       * child array.  <code>parent</code> must be a node previously obtained
  139       * from this data source. This should not return <code>null</code>
  140       * if <code>index</code>
  141       * is a valid index for <code>parent</code> (that is <code>index >= 0 &&
  142       * index < getChildCount(parent</code>)).
  143       *
  144       * @param   parent  a node in the tree, obtained from this data source
  145       * @return  the child of <code>parent</code> at index <code>index</code>
  146       *
  147       */
  148      public Object getChild (Object parent, int index)
  149      {
  150         NodeWrapper n = (NodeWrapper)parent;
  151         return n.getChild (index);
  152      }
  153      
  154      /** Returns the number of children of <code>parent</code>.
  155       * Returns 0 if the node
  156       * is a leaf or if it has no children.  <code>parent</code> must be a node
  157       * previously obtained from this data source.
  158       *
  159       * @param   parent  a node in the tree, obtained from this data source
  160       * @return  the number of children of the node <code>parent</code>
  161       *
  162       */
  163      public int getChildCount (Object parent)
  164      {
  165         NodeWrapper n = (NodeWrapper)parent;
  166         return n.getChildCount ();
  167      }
  168      
  169      /** Returns the index of child in parent.  If <code>parent</code>
  170       * is <code>null</code> or <code>child</code> is <code>null</code>,
  171       * returns -1.
  172       *
  173       * @param parent a note in the tree, obtained from this data source
  174       * @param child the node we are interested in
  175       * @return the index of the child in the parent, or -1 if either
  176       *    <code>child</code> or <code>parent</code> are <code>null</code>
  177       *
  178       */
  179      public int getIndexOfChild (Object parent, Object child)
  180      {
  181         NodeWrapper n = (NodeWrapper)parent;
  182         return n.getIndexOfChild (child);
  183      }
  184      
  185      /** Returns the root of the tree.  Returns <code>null</code>
  186       * only if the tree has no nodes.
  187       *
  188       * @return  the root of the tree
  189       *
  190       */
  191      public Object getRoot ()
  192      {
  193         return this.root;
  194      }
  195      
  196      /** Returns <code>true</code> if <code>node</code> is a leaf.
  197       * It is possible for this method to return <code>false</code>
  198       * even if <code>node</code> has no children.
  199       * A directory in a filesystem, for example,
  200       * may contain no files; the node representing
  201       * the directory is not a leaf, but it also has no children.
  202       *
  203       * @param   node  a node in the tree, obtained from this data source
  204       * @return  true if <code>node</code> is a leaf
  205       *
  206       */
  207      public boolean isLeaf (Object node)
  208      {
  209         NodeWrapper n = (NodeWrapper)node;
  210         return n.isLeaf ();
  211      }
  212      
  213      /** Removes a listener previously added with
  214       * <code>addTreeModelListener</code>.
  215       *
  216       * @see     #addTreeModelListener
  217       * @param   l       the listener to remove
  218       *
  219       */
  220      public void removeTreeModelListener (javax.swing.event.TreeModelListener l)
  221      {
  222           treeModelListeners.removeElement(l);
  223      }
  224      
  225      /** Messaged when the user has altered the value for the item identified
  226       * by <code>path</code> to <code>newValue</code>.
  227       * If <code>newValue</code> signifies a truly new value
  228       * the model should post a <code>treeNodesChanged</code> event.
  229       *
  230       * @param path path to the node that the user has altered
  231       * @param newValue the new value from the TreeCellEditor
  232       *
  233       */
  234      public void valueForPathChanged (javax.swing.tree.TreePath path, Object newValue)
  235      {
  236         // not used
  237      }
  238      
  239      // Public --------------------------------------------------------
  240      
  241      // Z implementation ----------------------------------------------
  242      
  243      // Y overrides ---------------------------------------------------
  244      
  245      // Package protected ---------------------------------------------
  246      
  247      // Protected -----------------------------------------------------
  248      
  249       protected void fireTreeStructureChanged(RootWrapper oldRoot) {
  250           int len = treeModelListeners.size();
  251           
  252           javax.swing.event.TreeModelEvent e = new javax.swing.event.TreeModelEvent(this, 
  253                                                 new Object[] {oldRoot});
  254           for (int i = 0; i < len; i++) {
  255               ((javax.swing.event.TreeModelListener)treeModelListeners.elementAt(i)).
  256                       treeStructureChanged(e);
  257           }
  258       }
  259   
  260      /*protected PluginManagerMBean getPM () throws Exception
  261      {
  262         return (PluginManagerMBean)ctx.lookup (this.pluginMgrJndiName);
  263      }*/
  264      
  265      // Private -------------------------------------------------------
  266      
  267      // Inner classes -------------------------------------------------
  268         
  269   }

Save This Page
Home » jboss-5.0.0.CR1-src » org.jboss.console » navtree » [javadoc | source]