// 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.*;
import graphtea.platform.core.AbstractAction;
import graphtea.platform.core.BlackBoard;
import graphtea.platform.parameter.Parametrizable;
import graphtea.plugins.graphgenerator.core.PositionGenerators;
import graphtea.ui.UIUtils;
import java.awt.*;
public class circular extends AbstractAction implements Parametrizable {
/**
* constructor
*
* @param bb the blackboard of the action
*/
public circular(BlackBoard bb) {
super(bb);
String event = UIUtils.getUIEventKey("circular");
listen4Event(event);
}
/**
* like Action
*
* @param eventName The event name
* @param value The value
*/
public void performAction(String eventName, Object value) {
GraphModel g = blackboard.getData(GraphAttrSet.name);
circularVisualize(g);
}
private static void circularVisualize(GraphModel g) {
GRect b = g.getAbsBounds();
int w = (int) b.w;
int h = (int) b.h;
if (w < 50)
w = 300;
if (h < 50)
h = 300;
circularVisualize(w, h, g);
}
private static void circularVisualize(int w, int h, GraphModel g) {
int n = g.getVerticesCount();
Vertex[] v = new Vertex[n];
int i = 0;
for (Vertex vm : g)
v[i++] = vm;
Point[] p = PositionGenerators.circle(25, 25, w + 25, h + 25, n);
for (i = 0; i < n; i++) {
v[i].setLocation(new GPoint(p[i].x, p[i].y));
}
}
public static void circularVisualize(int r, int x, int y, SubGraph g) {
int n = g.vertices.size();
Vertex[] v = new Vertex[n];
int i = 0;
for (Vertex vm : g.vertices)
v[i++] = vm;
Point[] p = PositionGenerators.circle(r, x, y, n);
for (i = 0; i < n; i++) {
v[i].setLocation(new GPoint(p[i].x, p[i].y));
}
}
public String checkParameters() {
return null;
}
}