*/
private double[] effectivePath;
- private final List<Runnable> redrawListeners;
private final List<Consumer<GUIWire>> pathChangedListeners;
/**
this.path = path == null ? null : Arrays.copyOf(path, path.length);
this.bounds = new Rectangle(0, 0, -1, -1);
- redrawListeners = new ArrayList<>();
pathChangedListeners = new ArrayList<>();
- logicObs = (i) -> callRedrawListeners();
+ logicObs = (i) -> model.requestRedraw();
pin1.addPinMovedListener(p -> pinMoved());
pin2.addPinMovedListener(p -> pinMoved());
private void pinMoved()
{
recalculateEffectivePath();
- callRedrawListeners();
+ model.requestRedraw();
}
// "graphical" operations
this.path = deepPathCopy(path);
recalculateEffectivePath();
callPathChangedListeners();
- callRedrawListeners();
+ model.requestRedraw();
}
public Point getPathPoint(int index)
path[index] = pointCopy(p);
recalculateEffectivePath();
callPathChangedListeners();
- callRedrawListeners();
+ model.requestRedraw();
}
public void insertPathPoint(Point p, int index)
System.arraycopy(oldPath, index, path, index + 1, oldPath.length - index);
path[index] = pointCopy(p);
}
+ recalculateEffectivePath();
+ callPathChangedListeners();
}
public void removePathPoint(int index)
if (index < oldPath.length - 1)
System.arraycopy(oldPath, index + 1, path, index, oldPath.length - index - 1);
}
+ recalculateEffectivePath();
+ callPathChangedListeners();
}
public double[] getEffectivePath()
// listeners
// @formatter:off
- public void addRedrawListener (Runnable listener) {redrawListeners .add (listener);}
public void addPathChangedListener (Consumer<GUIWire> listener) {pathChangedListeners.add (listener);}
- public void removeRedrawListener (Runnable listener) {redrawListeners .remove(listener);}
public void removePathChangedListener(Consumer<GUIWire> listener) {pathChangedListeners.remove(listener);}
- private void callRedrawListeners () {redrawListeners .forEach(l -> l.run ( ));}
private void callPathChangedListeners() {pathChangedListeners.forEach(l -> l.accept(this));}
// @formatter:on