// 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.visualization.localsfvis; import graphtea.graph.atributeset.GraphAttrSet; import graphtea.graph.graph.AbstractGraphRenderer; import graphtea.graph.graph.FastRenderer; import graphtea.graph.graph.GraphModel; import graphtea.platform.core.AbstractAction; import graphtea.platform.core.BlackBoard; import graphtea.platform.core.Listener; import graphtea.ui.UIUtils; import javax.swing.*; import java.awt.*; import java.util.HashMap; /** * User: root */ public class LocalSF extends AbstractAction { public static final String EVENT_KEY = UIUtils.getUIEventKey("LocalSF"); /** * constructor * * @param bb the blackboard of the action */ public LocalSF(BlackBoard bb) { super(bb); listen4Event(EVENT_KEY); //the variable which the component is in. final String stop = UIUtils.getComponentVariableKeyNameInBlackBoard("stop"); stopbtn = (JButton) UIUtils.getComponent(bb, "stop"); if (stopbtn != null) stopbtn.setVisible(false); blackboard.addListener(stop, new Listener() { public void performJob(String name) { stopbtn = blackboard.getData(stop); stopbtn.setVisible(false); } public void keyChanged(String name, Object value) { stopbtn = blackboard.getData(stop); stopbtn.setVisible(false); } public boolean isEnable() { return true; } }); } private JButton stopbtn; /** * like Action * * @param eventName The event name * @param value The value */ public void performAction(String eventName, Object value) { LSFUI l = new LSFUI(); l.setTaget(this); Dialog d = new JDialog(); // d.setModal(true); d.add(l); d.setVisible(true); d.setAlwaysOnTop(true); d.pack(); start(); } void stop() { animatorLSF currentAnimator = getCurrentAnimator(); if (currentAnimator != null) currentAnimator._stop(); g2a.remove(g); if (gv instanceof FastRenderer) { FastRenderer fgv = (FastRenderer) gv; fgv.forceQuickPaint = false; fgv.repaint(); } } private AbstractGraphRenderer gv; void start() { g = blackboard.getData(GraphAttrSet.name); gv = blackboard.getData(AbstractGraphRenderer.EVENT_KEY); // if (gv instanceof FastRenderer) { // FastRenderer fgv = (FastRenderer) gv; // fgv.forceQuickPaint = true; // } if (!g2a.containsKey(g)) { animatorLSF a = new animatorLSF(blackboard, g, gv); g2a.put(g, a); a.start(); } } animatorLSF getCurrentAnimator() { g = blackboard.getData(GraphAttrSet.name); return g2a.get(g); } private HashMap<GraphModel, animatorLSF> g2a = new HashMap<>(); private GraphModel g; }