package graphics.graph;
import gui.run.RunButton;
import gui.run.RunCheckBox;
import java.awt.*;
public class ControlPanel {
private ImagePanel imagePanel
= ImagePanel.getImagePanel();
private GraphManager graphManager
= GraphManager.getGraphManager();
private Panel controlPanel
= getControlPanel();
private Nodes nodes
= GraphFactory.getNodes();
private EdgesBean edgesBean
= EdgesBean.getEdgesBean();
public Nodes getNodes() {
return nodes;
}
public void println(Object o) {
System.out.println(o);
}
public void println(Object o[]) {
for (int i = 0; i < o.length; i++)
System.out.println(o[i]);
}
public void synthesizeRMI() {
println("Synthesizing RMI");
println("getting bridge endpoints:");
Node fixedNodes[] =
nodes.getFixedNodes();
println(fixedNodes);
}
public void addEdge(String nodeName1, String nodeName2) {
edgesBean.addEdge(nodeName1, nodeName2);
}
public GraphManager getGraphManager() {
return graphManager;
}
public ImagePanel getImagePanel() {
return imagePanel;
}
public Panel getControlPanel() {
Panel p = new Panel();
p.setLayout(new FlowLayout());
addComponentsToPanel(p);
return p;
}
private void addComponentsToPanel(Panel p) {
p.add(new RunButton("Scramble") {
public void run() {
scrambleNodes();
}
});
p.add(new RunButton("Synthesize RMI") {
public void run() {
synthesizeRMI();
}
});
p.add(new RunButton("Shake") {
public void run() {
shakeNodes();
}
});
p.add(new RunCheckBox("Stress") {
public void run() {
StressBean sb = StressBean.getStressBean();
sb.setStress(isSelected());
}
});
p.add(new RunCheckBox("Random") {
public void run() {
RandomBean rb = RandomBean.getRandomBean();
rb.setRandom(isSelected());
graphManager.getRelaxThreadMgr().setRandom(isSelected());
}
});
}
public void start() {
graphManager.start();
}
private void shakeNodes() {
Dimension d = imagePanel.getSize();
for (int i = 0;
i < nodes.getNumberOfNodes();
i++) {
Node n = nodes.getNode(i);
if (n.isFixed()) return;
n.setX(n.getX()
+ (180 * Math.random() - 90));
n.setY(n.getY()
+ (180 * Math.random() - 90));
}
}
private void scrambleNodes() {
Dimension d = imagePanel.getSize();
for (int i = 0; i < nodes.getNumberOfNodes(); i++) {
Node n = nodes.getNode(i);
if (!n.isFixed()) {
n.setX(10 + (d.width - 20) * Math.random());
n.setY(10 + (d.height - 20) * Math.random());
}
}
}
}