Coverage Report - org.jtheque.primary.view.impl.models.tree.JThequeTreeModel
 
Classes in this File Line Coverage Branch Coverage Complexity
JThequeTreeModel
0 %
0/29
0 %
0/10
1.364
 
 1  
 package org.jtheque.primary.view.impl.models.tree;
 2  
 
 3  
 /*
 4  
  * This file is part of JTheque.
 5  
  *
 6  
  * JTheque is free software: you can redistribute it and/or modify
 7  
  * it under the terms of the GNU General Public License as published by
 8  
  * the Free Software Foundation, either version 3 of the License.
 9  
  *
 10  
  * JTheque is distributed in the hope that it will be useful,
 11  
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 12  
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 13  
  * GNU General Public License for more details.
 14  
  *
 15  
  * You should have received a copy of the GNU General Public License
 16  
  * along with JTheque.  If not, see <http://www.gnu.org/licenses/>.
 17  
  */
 18  
 
 19  
 import org.jdesktop.swingx.event.WeakEventListenerList;
 20  
 
 21  
 import javax.swing.event.TreeModelEvent;
 22  
 import javax.swing.event.TreeModelListener;
 23  
 import javax.swing.tree.TreeModel;
 24  
 import javax.swing.tree.TreePath;
 25  
 
 26  
 /**
 27  
  * A JTheque Tree Model.
 28  
  *
 29  
  * @author Baptiste Wicht
 30  
  */
 31  0
 public final class JThequeTreeModel implements TreeModel {
 32  
         private TreeElement root;
 33  
         private final WeakEventListenerList listeners;
 34  
 
 35  
         /**
 36  
          * Construct a new JTheque Tree Model with a root element.
 37  
          *
 38  
          * @param root The root element.
 39  
          */
 40  
         public JThequeTreeModel(TreeElement root){
 41  0
                 super();
 42  
 
 43  0
                 this.root = root;
 44  0
                 listeners = new WeakEventListenerList();
 45  0
         }
 46  
 
 47  
         /**
 48  
          * Set the root element of the model.
 49  
          *
 50  
          * @param root The root element of the model.
 51  
          */
 52  
         public void setRootElement(TreeElement root){
 53  0
                 this.root = root;
 54  
 
 55  0
                 fireTreeStructureChanged(root);
 56  0
         }
 57  
 
 58  
         @Override
 59  
         public Object getChild(Object parent, int index){
 60  0
                 TreeElement element = (TreeElement) parent;
 61  
 
 62  0
                 if (element.isRoot() || element.isCategory()){
 63  0
                         return element.getChild(index);
 64  
                 } else {
 65  0
                         assert element.isLeaf() : "Element must be one of (root, category, tree";
 66  
 
 67  0
                         return null;
 68  
                 }
 69  
         }
 70  
 
 71  
         @Override
 72  
         public int getChildCount(Object parent){
 73  0
                 TreeElement element = (TreeElement) parent;
 74  
 
 75  0
                 return element.getChildCount();
 76  
         }
 77  
 
 78  
         @Override
 79  
         public int getIndexOfChild(Object parent, Object child){
 80  0
                 TreeElement element = (TreeElement) parent;
 81  
 
 82  0
                 return element.indexOf((TreeElement) child);
 83  
         }
 84  
 
 85  
         @Override
 86  
         public TreeElement getRoot(){
 87  0
                 return root;
 88  
         }
 89  
 
 90  
         @Override
 91  
         public boolean isLeaf(Object node){
 92  0
                 TreeElement element = (TreeElement) node;
 93  
 
 94  0
                 return element.isLeaf();
 95  
         }
 96  
 
 97  
         /**
 98  
          * Fire a event to say that the tree structure has changed.
 99  
          *
 100  
          * @param root The root element.
 101  
          */
 102  
         void fireTreeStructureChanged(TreeElement root){
 103  0
                 TreeModelEvent event = new TreeModelEvent(this, new TreeElement[]{root});
 104  
 
 105  0
                 for (TreeModelListener tml : listeners.getListeners(TreeModelListener.class)){
 106  0
                         tml.treeStructureChanged(event);
 107  
                 }
 108  0
         }
 109  
 
 110  
         @Override
 111  
         public void addTreeModelListener(TreeModelListener listener){
 112  0
                 listeners.add(TreeModelListener.class, listener);
 113  0
         }
 114  
 
 115  
         @Override
 116  
         public void removeTreeModelListener(TreeModelListener listener){
 117  0
                 listeners.remove(TreeModelListener.class, listener);
 118  0
         }
 119  
 
 120  
         @Override
 121  
         public void valueForPathChanged(TreePath arg0, Object arg1){
 122  
                 //Nothing to be done
 123  0
         }
 124  
 }