// 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.algorithmanimator.core.atoms; import graphtea.graph.graph.Vertex; import graphtea.graph.ui.GTabbedGraphPane; import graphtea.library.event.Event; import graphtea.library.event.VertexRequest; import graphtea.platform.core.AbstractAction; import graphtea.platform.core.BlackBoard; import graphtea.plugins.algorithmanimator.core.AtomAnimator; import graphtea.plugins.main.core.actions.vertex.VertexSelectData; import graphtea.plugins.main.select.SelectPluginMethods; /** * @author Azin Azadi */ public class VertexSelect implements AtomAnimator<VertexRequest> { public boolean isAnimatable(Event vertexRequest) { return vertexRequest instanceof VertexRequest; } public VertexRequest animate(final VertexRequest vr, final BlackBoard b) { GTabbedGraphPane.showNotificationMessage(vr.message, b, true); vs vt = new vs(b); vt.start(); vr.setVertex(vt.getResult()); new SelectPluginMethods(b).clearSelection(); GTabbedGraphPane.showNotificationMessage("", b, true); return vr; } } class vs extends aa { public vs(BlackBoard bb) { super(bb); listen4Event(VertexSelectData.EVENT_KEY); } Vertex a; public void performAction(String key, Object value) { VertexSelectData vsd = blackboard.getData(VertexSelectData.EVENT_KEY); a = vsd.v; super.performAction(key, value); } public Vertex getResult() { return a; } } abstract class aa extends AbstractAction { /** * constructor * * @param bb the blackboard of the action */ public aa(BlackBoard bb) { super(bb); // disable(); } boolean finished = false; public void start() { enable(); while (!finished) try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } disable(); } public void performAction(String key, Object value) { finished = true; } }