// 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.graph.Edge;
import graphtea.graph.graph.SubGraph;
import graphtea.graph.graph.Vertex;
import graphtea.platform.core.AbstractAction;
import graphtea.platform.core.BlackBoard;
import graphtea.plugins.main.core.actions.edge.EdgeSelectData;
import graphtea.plugins.main.core.actions.vertex.VertexSelectData;
import java.util.Objects;
/**
* Author: Azin Azadi
*/
public class DeSelect extends AbstractAction {
/**
* constructor
*
* @param bb the blackboard of the action
*/
public DeSelect(BlackBoard bb) {
super(bb);
listen4Event(VertexSelectData.EVENT_KEY);
listen4Event(EdgeSelectData.EVENT_KEY);
blackboard.setData(Select.EVENT_KEY, new SubGraph());
}
public void track(){}
public void performAction(String eventName, Object value) {
if (Objects.equals(eventName, VertexSelectData.EVENT_KEY))
selectVertex();
if (Objects.equals(eventName, EdgeSelectData.EVENT_KEY))
selectEdge();
}
public SubGraph getSelection() {
return Select.getSelection(blackboard);
}
private void selectEdge() {
EdgeSelectData esd = blackboard.getData(EdgeSelectData.EVENT_KEY);
SubGraph sd = getSelection();
Edge e = esd.edge;
//e.view.isSelected=!e.view.isSelected;
// if (!e.view.isSelected)
sd.edges.add(e);
// else
// sd.edges.remove(e);
Select.setSelection(blackboard, sd);
}
private void selectVertex() {
VertexSelectData vsd = blackboard.getData(VertexSelectData.EVENT_KEY);
SubGraph sd = getSelection();
Vertex v = vsd.v;
//v.view.isSelected=!v.view.isSelected;
// if (!v.view.isSelected)
sd.vertices.add(v);
// else
// sd.vertices.remove(v);
Select.setSelection(blackboard, sd);
}
}