Coverage Report - net.sf.tacos.components.tree.TreeManager
 
Classes in this File Line Coverage Branch Coverage Complexity
TreeManager
79% 
75% 
1,5
 
 1  
 package net.sf.tacos.components.tree;
 2  
 
 3  
 import java.io.Serializable;
 4  
 import java.util.Collection;
 5  
 import java.util.Iterator;
 6  
 import java.util.Set;
 7  
 import net.sf.tacos.model.IKeyProvider;
 8  
 import net.sf.tacos.model.ITreeContentProvider;
 9  
 import org.apache.hivemind.util.Defense;
 10  
 
 11  
 /**
 12  
  * @author phraktle
 13  
  */
 14  
 public class TreeManager implements ITreeManager {
 15  
     
 16  
     private final Set state;
 17  
     private final ITreeContentProvider contentProvider;
 18  
     private final IKeyProvider keyProvider;
 19  
     
 20  
     /**
 21  
      * Creates tree manager.
 22  
      * @param state
 23  
      * @param contentProvider
 24  
      * @param keyProvider
 25  
      */
 26  
     public TreeManager(Set state, ITreeContentProvider contentProvider,
 27  
             IKeyProvider keyProvider)
 28  1
     {
 29  1
         Defense.notNull(state, "tree state");
 30  1
         Defense.notNull(contentProvider, "tree contentProvider");
 31  1
         Defense.notNull(keyProvider, "tree keyProvider");
 32  
         
 33  1
         this.state = state;
 34  1
         this.contentProvider = contentProvider;
 35  1
         this.keyProvider = keyProvider;
 36  1
     }
 37  
 
 38  
     /**
 39  
      * 
 40  
      * {@inheritDoc}
 41  
      */
 42  
     public boolean isExpanded(Object element)
 43  
     {
 44  4
         return isExpandedKey(keyProvider.getKey(element));
 45  
     }
 46  
 
 47  
     /**
 48  
      * 
 49  
      * {@inheritDoc}
 50  
      */
 51  
     public boolean isExpandedKey(Serializable key)
 52  
     {
 53  7
         return state.contains(key);
 54  
     }
 55  
 
 56  
     /**
 57  
      * 
 58  
      * {@inheritDoc}
 59  
      */
 60  
     public void setExpanded(Object element, boolean open)
 61  
     {
 62  4
         setExpandedKey(keyProvider.getKey(element), open);
 63  4
     }
 64  
 
 65  
     /**
 66  
      * 
 67  
      * {@inheritDoc}
 68  
      */
 69  
     public void setExpandedKey(Serializable key, boolean open)
 70  
     {
 71  6
         if (open) {
 72  6
             state.add(key);
 73  
         } else {
 74  0
             state.remove(key);
 75  
         }
 76  6
     }
 77  
 
 78  
     /**
 79  
      * 
 80  
      * @return
 81  
      */
 82  
     public Set getState()
 83  
     {
 84  0
         return state;
 85  
     }
 86  
 
 87  
     /**
 88  
      * 
 89  
      * {@inheritDoc}
 90  
      */
 91  
     public void collapseAll()
 92  
     {
 93  1
         state.clear();
 94  1
     }
 95  
     
 96  
     /**
 97  
      * 
 98  
      * {@inheritDoc}
 99  
      */
 100  
     public Object reveal(Object element)
 101  
     {
 102  0
         Object parent = contentProvider.getParent(element);
 103  0
         if (parent != null) {
 104  0
             setExpanded(parent, true);
 105  0
             return reveal(parent);
 106  0
         } else return element;
 107  
     }
 108  
 
 109  
     /**
 110  
      * 
 111  
      * {@inheritDoc}
 112  
      */
 113  
     public void expandAll()
 114  
     {
 115  1
         expand(contentProvider.getElements());
 116  1
     }
 117  
 
 118  
     /**
 119  
      * Expands all elements
 120  
      * @param rootElements
 121  
      */
 122  
     private void expand(Collection rootElements)
 123  
     {
 124  3
         for(Iterator i = rootElements.iterator(); i.hasNext();) {
 125  4
             Object element = i.next();
 126  4
             setExpanded(element, true);
 127  4
             if (contentProvider.hasChildren(element)) {
 128  2
                 expand(contentProvider.getChildren(element));
 129  
             }
 130  4
         }
 131  3
     }
 132  
 
 133  
 }