package org.trianacode.gui.util.organize;
import org.trianacode.taskgraph.Node;
import org.trianacode.taskgraph.Task;
import org.trianacode.taskgraph.TaskLayoutDetails;
import java.awt.*;
import java.awt.geom.Point2D;
/**
* @author Andrew Harrison
* @version 1.0.0 Nov 20, 2010
*/
public class OrganizableTask {
private Component component;
private Task task;
protected double edgedx = -1.0;
protected double edgedy = -1.0;
protected double repulsiondx = -1.0;
protected double repulsiondy = -1.0;
private Point2D point;
/**
* movement speed, x
*/
protected double dx = -1.0;
/**
* movement speed, y
*/
protected double dy = -1.0;
public OrganizableTask(Component component, Task task) {
this.component = component;
this.task = task;
//this.point = component.getLocation();
String x = (String) task.getParameter(Task.GUI_X);
String y = (String) task.getParameter(Task.GUI_Y);
this.point = new Point2D.Double(Double.parseDouble(x), Double.parseDouble(y));
System.out.println("OrganizableTask.OrganizableTask point for task " + task.getToolName() + " :" + point);
System.out.println("OrganizableTask.OrganizableTask component point for task " + task.getToolName() + " :" + component.getLocation());
}
public Component getComponent() {
return component;
}
public Task getTask() {
return task;
}
public double getEdgedx() {
return edgedx;
}
public double getEdgedy() {
return edgedy;
}
public double getRepulsiondx() {
return repulsiondx;
}
public double getRepulsiondy() {
return repulsiondy;
}
public double getDx() {
return dx;
}
public double getDy() {
return dy;
}
public void updatePoint(TaskLayoutDetails layout) {
double x = (point.getX() / layout.getTaskDimensions().getWidth()) + layout.getLeftBorder();
double y = (point.getY() / layout.getTaskDimensions().getHeight()) + layout.getTopBorder();
task.setParameter(Task.GUI_X, String.valueOf(x));
task.setParameter(Task.GUI_Y, String.valueOf(y));
//component.setLocation((Point) point);
}
public Point2D getPoint() {
return point;
}
public int getConnectionCount() {
int total = 0;
Node[] nodes = task.getInputNodes();
for (Node node : nodes) {
if (node.isConnected()) {
total++;
}
}
nodes = task.getOutputNodes();
for (Node node : nodes) {
if (node.isConnected()) {
total++;
}
}
return total;
}
}