@Override public void setFirst(Double first) { Point2D oldPosition = super.copy(); Point2D newPosition = super.copy(); newPosition.setFirst(first); onChange(oldPosition, newPosition); }
@Nonnull private Point2D onChange(@Nonnull Point2D oldPosition, @Nonnull Point2D newPosition) { if (positionListenerEntries != null) { for (PositionListenerEntry positionListenerEntry : positionListenerEntries) { if (!positionListenerEntry.listener.beforeChangePosition( oldPosition.copy(), newPosition)) { return this; } } } super.setFirst(newPosition.getFirst()); super.setSecond(newPosition.getSecond()); if (positionListenerEntries != null) { for (PositionListenerEntry positionListenerEntry : positionListenerEntries) { positionListenerEntry.listener.afterChangePosition( oldPosition.copy(), newPosition.copy()); } } return this; }