Coverage details for edu.uci.ics.jung.visualization.MultiPickedState

LineHitsSource
1 /*
2  * Copyright (c) 2005, the JUNG Project and the Regents of the University of
3  * California All rights reserved.
4  *
5  * This software is open-source under the BSD license; see either "license.txt"
6  * or http://jung.sourceforge.net/license.txt for a description.
7  *
8  *
9  * Created on Mar 28, 2005
10  */
11 package edu.uci.ics.jung.visualization;
12  
13 import java.awt.event.ItemEvent;
14 import java.util.ArrayList;
15 import java.util.Collection;
16 import java.util.Collections;
17 import java.util.Iterator;
18 import java.util.LinkedHashSet;
19 import java.util.LinkedList;
20 import java.util.List;
21 import java.util.Set;
22  
23 import edu.uci.ics.jung.graph.ArchetypeEdge;
24 import edu.uci.ics.jung.graph.ArchetypeVertex;
25 import edu.uci.ics.jung.graph.Edge;
26 import edu.uci.ics.jung.graph.Vertex;
27  
28 /**
29  * Maintains the state of what has been 'picked' in the graph.
30  * The <code>Sets</code> are constructed so that their iterators
31  * will traverse them in the order in which they are picked.
32  *
33  * @author Tom Nelson - RABA Technologies
34  * @author Joshua O'Madadhain
35  *
36  */
370public class MultiPickedState extends AbstractPickedState implements PickedState
38 {
39     /**
40      * the 'picked' vertices
41      */
420    protected Set pickedVertices = new LinkedHashSet();
43     
44     /**
45      * the 'picked' edges
46      */
470    protected Set pickedEdges = new LinkedHashSet();
48     
49     /**
50      * @see PickedState#pick(ArchetypeVertex, boolean)
51      */
52     public boolean pick(ArchetypeVertex v, boolean picked)
53     {
540        boolean prior_state = pickedVertices.contains(v);
550        if (picked) {
560            pickedVertices.add(v);
570            if(prior_state == false) {
580                firePickEvent(v, true);
590                fireItemStateChanged(new ItemEvent(this, ItemEvent.ITEM_STATE_CHANGED,
60                         v, ItemEvent.SELECTED));
61             }
62  
63         } else {
640            pickedVertices.remove(v);
650            if(prior_state == true) {
660                firePickEvent(v, false);
670                fireItemStateChanged(new ItemEvent(this, ItemEvent.ITEM_STATE_CHANGED,
68                     v, ItemEvent.DESELECTED));
69             }
70  
71         }
720        return prior_state;
73     }
74  
75     /**
76      * @see PickedState#pick(ArchetypeVertex, boolean)
77      */
78     public boolean pick(ArchetypeEdge e, boolean picked)
79     {
800        boolean prior_state = pickedEdges.contains(e);
810        if (picked) {
820            pickedEdges.add(e);
830            if(prior_state == false) {
840                firePickEvent(e, true);
850                fireItemStateChanged(new ItemEvent(this, ItemEvent.ITEM_STATE_CHANGED,
86                         e, ItemEvent.SELECTED));
87             }
88         } else {
890            pickedEdges.remove(e);
900            if(prior_state == true) {
910                firePickEvent(e, false);
920                fireItemStateChanged(new ItemEvent(this, ItemEvent.ITEM_STATE_CHANGED,
93                     e, ItemEvent.DESELECTED));
94             }
95         }
960        return prior_state;
97     }
98  
99     /**
100      * @see edu.uci.ics.jung.visualization.PickedState#clearPickedVertices()
101      */
102     public void clearPickedVertices()
103     {
1040        Collection iterable_set = new LinkedList(pickedVertices);
1050        for (Iterator it = iterable_set.iterator(); it.hasNext(); )
1060            pick((ArchetypeVertex)it.next(), false);
1070    }
108  
109  
110     /**
111      * @see edu.uci.ics.jung.visualization.PickedState#clearPickedEdges()
112      */
113     public void clearPickedEdges()
114     {
1150        Collection iterable_set = new LinkedList(pickedEdges);
1160        for (Iterator it = iterable_set.iterator(); it.hasNext(); )
1170            pick((ArchetypeEdge)it.next(), false);
1180    }
119     
120     /**
121      * @see edu.uci.ics.jung.visualization.PickedState#getPickedEdges()
122      */
123     public Set getPickedEdges() {
1240        return Collections.unmodifiableSet(pickedEdges);
125     }
126     
127     /**
128      * @see edu.uci.ics.jung.visualization.PickedState#isPicked(ArchetypeEdge)
129      */
130     public boolean isPicked(ArchetypeEdge e) {
1310        return pickedEdges.contains(e);
132     }
133  
134     /**
135      * @see edu.uci.ics.jung.visualization.PickedState#getPickedVertices()
136      */
137     public Set getPickedVertices() {
1380        return Collections.unmodifiableSet(pickedVertices);
139     }
140     
141     /**
142      * @see edu.uci.ics.jung.visualization.PickedState#isPicked(ArchetypeVertex)
143      */
144     public boolean isPicked(ArchetypeVertex v)
145     {
1460        return pickedVertices.contains(v);
147     }
148     
149     /**
150      * @deprecated Use addItemListener
151      * @see edu.uci.ics.jung.visualization.PickedState#addListener(edu.uci.ics.jung.visualization.PickEventListener)
152      */
153     public void addListener(PickEventListener pel)
154     {
1550        listenerList.add(PickEventListener.class, pel);
1560    }
157  
158     /**
159      * @deprecated Use removeItemListener
160      * @see edu.uci.ics.jung.visualization.PickedState#removeListener(edu.uci.ics.jung.visualization.PickEventListener)
161      */
162     public void removeListener(PickEventListener pel)
163     {
1640        listenerList.remove(PickEventListener.class, pel);
1650    }
166  
167     /**
168      * @see #isPicked(ArchetypeVertex)
169      */
170     public boolean isPicked(Vertex v)
171     {
1720        return pickedVertices.contains(v);
173     }
174  
175     /**
176      * @see #isPicked(ArchetypeEdge)
177      */
178     public boolean isPicked(Edge e)
179     {
1800        return pickedEdges.contains(e);
181     }
182  
183     /**
184      * for the ItemSelectable interface contract
185      */
186     public Object[] getSelectedObjects() {
1870        List list = new ArrayList(pickedVertices);
1880        list.addAll(pickedEdges);
1890        return list.toArray();
190     }
191     
192     protected void firePickEvent(Object object, boolean picked) {
1930        Object[] listeners = listenerList.getListenerList();
1940        for ( int i = listeners.length-2; i>=0; i-=2 ) {
1950            if ( listeners[i]==PickEventListener.class ) {
1960                if(object instanceof Vertex) {
1970                    if(picked) {
1980                        ((PickEventListener)listeners[i+1]).vertexPicked((Vertex)object);
199                     } else {
2000                        ((PickEventListener)listeners[i+1]).vertexUnpicked((Vertex)object);
201                     }
202                 } else {
2030                    if(picked) {
2040                        ((PickEventListener)listeners[i+1]).edgePicked((Edge)object);
205                     } else {
2060                        ((PickEventListener)listeners[i+1]).edgeUnpicked((Edge)object);
207                     }
208                     
209                 }
210             }
211         }
2120    }
213 }

this report was generated by version 1.0.5 of jcoverage.
visit www.jcoverage.com for updates.

copyright © 2003, jcoverage ltd. all rights reserved.
Java is a trademark of Sun Microsystems, Inc. in the United States and other countries.