// GraphTea Project: http://github.com/graphtheorysoftware/GraphTea // Copyright (C) 2012 Graph Theory Software Foundation: http://GraphTheorySoftware.com // Copyright (C) 2008 Mathematical Science Department of Sharif University of Technology // Distributed under the terms of the GNU General Public License (GPL): http://www.gnu.org/licenses/ package graphtea.plugins.main.select; import graphtea.graph.event.GraphEvent; import graphtea.graph.graph.SubGraph; import graphtea.platform.core.AbstractAction; import graphtea.platform.core.BlackBoard; /** * @author Azin Azadi */ public class ClearSelection extends AbstractAction { /** * indicates that wheter the last time GraphSelectPointData fired, it was originally cleared or not (it was cleared by this object) * the initially use was for AddVertex, because it only adds vertices on graphselectpoints and if the selection was empty, * so AddVertex and ClearSelection are both listening to GraphSelectPoint, so if * ClearSelection fired before AddVertex it clears the selection and then AddVertex adds the Vertex * but it shouldn't do that, because at the click time the selection wasn'nt clear * and it is a mistake (bug) from users point of view,.... */ public static final String lastTimeGraphWasClear = "last time graph was cleared"; /** * constructor * * @param bb the blackboard of the action */ public ClearSelection(BlackBoard bb) { super(bb); // listen4Event(UI.getUIEvent("clear selection")); listen4Event(GraphEvent.EVENT_KEY); blackboard.setData(lastTimeGraphWasClear, false); } public void track(){} private SubGraph sd; public void performAction(String eventName, Object value) { GraphEvent gpd = (GraphEvent) value; if (gpd.eventType != GraphEvent.CLICKED) { return; } sd = Select.getSelection(blackboard); if (sd.vertices.size() != 0 || sd.edges.size() != 0) { blackboard.setData(lastTimeGraphWasClear, false); clearSelected(blackboard); super.track(); } else blackboard.setData(lastTimeGraphWasClear, true); } public static void clearSelected(BlackBoard bb) { bb.setData(Select.EVENT_KEY, new SubGraph()); } }