import gnu.trove.map.hash.THashMap;
+import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
import java.io.PrintStream;
import java.io.Serializable;
private ILineEndStyle style;
private ILineEndStyle dynamicStyle;
private boolean routeToBounds;
+ private RouteTerminalPosition dynamicPosition;
RouteLine line;
RouteTerminal(double x, double y, double minX, double minY,
double maxX, double maxY, int allowedDirections,
boolean routeToBounds,
- ILineEndStyle style) {
+ ILineEndStyle style, RouteTerminalPosition dynamicPosition) {
super(x, y);
this.minX = minX;
this.minY = minY;
this.allowedDirections = allowedDirections;
this.routeToBounds = routeToBounds;
this.style = style;
+ this.dynamicPosition = dynamicPosition;
}
-
+
@Override
public void setData(Object data) {
this.data = data;
RouteTerminal copy = (RouteTerminal)map.get(this);
if(copy == null) {
copy = new RouteTerminal(x, y, minX, minY, maxX, maxY,
- allowedDirections, routeToBounds, style);
+ allowedDirections, routeToBounds, style, dynamicPosition);
copy.setDynamicStyle(dynamicStyle);
map.put(this, copy);
copy.data = data;
public void setDynamicStyle(ILineEndStyle dynamicStyle) {
this.dynamicStyle = dynamicStyle;
}
+
+ public RouteTerminalPosition getDynamicPosition() {
+ return dynamicPosition;
+ }
+
+ public boolean updateDynamicPosition() {
+ boolean changed = false;
+ if (dynamicPosition != null) {
+ AffineTransform tr = dynamicPosition.getTransform();
+ if (tr != null) {
+ double nx = tr.getTranslateX();
+ changed |= x != nx;
+ x = nx;
+ double ny = tr.getTranslateY();
+ changed |= y != ny;
+ y = ny;
+ }
+ }
+ return changed;
+ }
+
}