Coverage details for edu.uci.ics.jung.graph.event.GraphListenerHandler

LineHitsSource
1 /*
2  * Copyright (c) 2003, the JUNG Project and the Regents of the University
3  * of California
4  * All rights reserved.
5  *
6  * This software is open-source under the BSD license; see either
7  * "license.txt" or
8  * http://jung.sourceforge.net/license.txt for a description.
9  *
10  * Created on Dec 29, 2003
11  */
12 package edu.uci.ics.jung.graph.event;
13  
14 import java.util.*;
15  
16 import edu.uci.ics.jung.graph.*;
17  
18 /**
19  * This utility class handles Graph listening and call dispatching. Use it in
20  * the appropriate ways.
21  *
22  * @author danyelf
23  */
24 public class GraphListenerHandler {
25  
26     private ArchetypeGraph mGraph;
27  
28654    public GraphListenerHandler(ArchetypeGraph graph) {
29654        this.mGraphListenerMap = new HashMap();
30654        this.mGraph = graph;
31654    }
32  
33     Map mGraphListenerMap;
34  
35     /**
36      * @param gel
37      * @param get
38      */
39     public void addListener(GraphEventListener gel, GraphEventType get) {
4028        if (get == GraphEventType.ALL_SINGLE_EVENTS) {
4121            addListener_internal(gel, GraphEventType.VERTEX_ADDITION);
4221            addListener_internal(gel, GraphEventType.VERTEX_REMOVAL);
4321            addListener_internal(gel, GraphEventType.EDGE_ADDITION);
4421            addListener_internal(gel, GraphEventType.EDGE_REMOVAL);
45         } else {
467            addListener_internal(gel, get);
47         }
4828    }
49  
50     private void addListener_internal(
51         GraphEventListener gel,
52         GraphEventType get) {
53  
5491        List listeners = (List) mGraphListenerMap.get(get);
55  
5691        if (listeners == null) {
5780            listeners = new ArrayList();
5880            mGraphListenerMap.put(get, listeners);
59         }
60  
6191        listeners.add(gel);
6291    }
63  
64     /**
65      * @param gel
66      * @param get
67      */
68     public void removeListener(GraphEventListener gel, GraphEventType get) {
690        if (get == GraphEventType.ALL_SINGLE_EVENTS) {
700            removeListener_internal(gel, GraphEventType.VERTEX_ADDITION);
710            removeListener_internal(gel, GraphEventType.VERTEX_REMOVAL);
720            removeListener_internal(gel, GraphEventType.EDGE_ADDITION);
730            removeListener_internal(gel, GraphEventType.EDGE_REMOVAL);
74         } else {
750            removeListener_internal(gel, get);
76         }
770    }
78  
79     private void removeListener_internal(
80         GraphEventListener gel,
81         GraphEventType get) {
820        List listeners = (List) mGraphListenerMap.get(get);
830        if (listeners == null)
840            return;
85  
860        listeners.remove(gel);
870    }
88  
89     /**
90      * @param type a GraphEventType
91      * @return true if at least one listener is listening to this type
92      */
93     public boolean listenersExist(GraphEventType type) {
94290244        List listeners = (List) mGraphListenerMap.get(type);
95290244        if ((listeners == null) || (listeners.size() == 0)) {
96290124            return false;
97         }
98120        return true;
99     }
100  
101     protected void notifyListenersVertexAdded(GraphEvent ge) {
10266        List listeners =
103             (List) mGraphListenerMap.get(GraphEventType.VERTEX_ADDITION);
10466        for (Iterator lIt = listeners.iterator(); lIt.hasNext();) {
10575            GraphEventListener listener = (GraphEventListener) lIt.next();
10675            listener.vertexAdded(ge);
107         }
10866    }
109  
110     protected void notifyListenersEdgeAdded(GraphEvent ge) {
11145        List listeners =
112             (List) mGraphListenerMap.get(GraphEventType.EDGE_ADDITION);
11345        for (Iterator lIt = listeners.iterator(); lIt.hasNext();) {
11450            GraphEventListener listener = (GraphEventListener) lIt.next();
11550            listener.edgeAdded(ge);
116         }
11745    }
118  
119     protected void notifyListenersVertexRemoved(GraphEvent ge) {
1205        List listeners =
121             (List) mGraphListenerMap.get(GraphEventType.VERTEX_REMOVAL);
1225        for (Iterator lIt = listeners.iterator(); lIt.hasNext();) {
12310            GraphEventListener listener = (GraphEventListener) lIt.next();
12410            listener.vertexRemoved(ge);
125         }
1265    }
127  
128     protected void notifyListenersEdgeRemoved(GraphEvent ge) {
1294        List listeners =
130             (List) mGraphListenerMap.get(GraphEventType.EDGE_REMOVAL);
1314        for (Iterator lIt = listeners.iterator(); lIt.hasNext();) {
1328            GraphEventListener listener = (GraphEventListener) lIt.next();
1338            listener.edgeRemoved(ge);
134         }
1354    }
136  
137     /**
138      * @param e
139      */
140     public void handleAdd(ArchetypeEdge e) {
141148067        if (listenersExist(GraphEventType.EDGE_ADDITION)) {
14245            notifyListenersEdgeAdded(new GraphEvent(mGraph, e));
143         }
144148067    }
145  
146     /**
147      * @param v
148      */
149     public void handleAdd(ArchetypeVertex v) {
15032396        if (listenersExist(GraphEventType.VERTEX_ADDITION)) {
15166            notifyListenersVertexAdded(new GraphEvent(mGraph, v));
152         }
15332396    }
154  
155     /**
156      * @param v
157      */
158     public void handleRemove(ArchetypeVertex v) {
15990        if (listenersExist(GraphEventType.VERTEX_REMOVAL)) {
1605            notifyListenersVertexRemoved(new GraphEvent(mGraph, v));
161         }
16290    }
163  
164     /**
165      * @param e
166      */
167     public void handleRemove(ArchetypeEdge e) {
168109691        if (listenersExist(GraphEventType.EDGE_REMOVAL)) {
1694            notifyListenersEdgeRemoved(new GraphEvent(mGraph, e));
170         }
171109691    }
172  
173 }

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.