001    // GraphLab Project: http://graphlab.sharif.edu
002    // Copyright (C) 2008 Mathematical Science Department of Sharif University of Technology
003    // Distributed under the terms of the GNU General Public License (GPL): http://www.gnu.org/licenses/
004    package graphlab.plugins.main.select;
005    
006    import graphlab.graph.atributeset.GraphAttrSet;
007    import graphlab.graph.graph.EdgeModel;
008    import graphlab.graph.graph.GraphModel;
009    import graphlab.graph.graph.SubGraph;
010    import graphlab.graph.graph.VertexModel;
011    import graphlab.platform.core.AbstractAction;
012    import graphlab.platform.core.BlackBoard;
013    import graphlab.ui.UIUtils;
014    
015    import java.util.Iterator;
016    
017    /**
018     * @author Ruzbeh Ebrahimi
019     */
020    public class SelectAll extends AbstractAction {
021        public static final String event = UIUtils.getUIEventKey("SelectAll");
022    
023        public SelectAll(BlackBoard bb) {
024            super(bb);
025            listen4Event(event);
026            blackboard.setData(Select.EVENT_KEY, new SubGraph());
027    
028        }
029    
030        public void performAction(String eventName, Object value) {
031            GraphModel g = ((GraphModel) (blackboard.getData(GraphAttrSet.name)));
032            SubGraph sd = getSelection();
033            Iterator<VertexModel> vertices = g.iterator();
034            Iterator<EdgeModel> edges = g.lightEdgeIterator();
035            for (; vertices.hasNext();) {
036    
037                VertexModel vertex = vertices.next();
038    //            if (vertex.view.isSelected) {
039    //                //vertex.view.isSelected = false;
040    //                sd.vertices.remove(vertex);
041    //            } else
042                sd.vertices.add(vertex);
043    
044            }
045            for (; edges.hasNext();) {
046    
047                EdgeModel edge = edges.next();
048    //            if (edge.view.isSelected){
049    //            sd.edges.remove(edge);
050    //            //edge.view.isSelected=false;
051    //        }
052    //        else
053                sd.edges.add(edge);
054    
055            }
056            Select.setSelection(blackboard, sd);
057        }
058    
059        public SubGraph getSelection() {
060            return Select.getSelection(blackboard);
061        }
062    }