private boolean setMinMax(double min, double max) { if (model != null) { if (min > max) { throw new IllegalArgumentException("min should be less than max"); } else if (min == max) { // Avoid setting values at this point return false; } double previousBoundsMin = model.getCustomMin(); double previousBoundsMax = model.getCustomMax(); // Custom bounds if (model.getCustomMin() == model.getPreviousMin()) { model.setCustomMin(min); } else if (model.getCustomMin() < min) { model.setCustomMin(min); } if (model.getCustomMax() == model.getPreviousMax()) { model.setCustomMax(max); } else if (model.getCustomMax() > max) { model.setCustomMax(max); } model.setPreviousMin(min); model.setPreviousMax(max); if (model.hasValidBounds()) { fireTimelineModelEvent( new TimelineModelEvent( TimelineModelEvent.EventType.MIN_MAX, model, new double[] {min, max})); if (model.getCustomMax() != max || model.getCustomMin() != min) { fireTimelineModelEvent( new TimelineModelEvent( TimelineModelEvent.EventType.CUSTOM_BOUNDS, model, new double[] {min, max})); } } if ((Double.isInfinite(previousBoundsMax) || Double.isInfinite(previousBoundsMin)) && model.hasValidBounds()) { fireTimelineModelEvent( new TimelineModelEvent(TimelineModelEvent.EventType.VALID_BOUNDS, model, true)); } else if (!Double.isInfinite(previousBoundsMax) && !Double.isInfinite(previousBoundsMin) && !model.hasValidBounds()) { fireTimelineModelEvent( new TimelineModelEvent(TimelineModelEvent.EventType.VALID_BOUNDS, model, false)); } return true; } return false; }
@Override public void setCustomBounds(double min, double max) { if (model != null) { if (model.getCustomMin() != min || model.getCustomMax() != max) { if (min >= max) { throw new IllegalArgumentException("min should be less than max"); } if (min < model.getMin() || max > model.getMax()) { throw new IllegalArgumentException("Min and max should be in the bounds"); } // Interval if (model.getIntervalStart() < min || model.getIntervalEnd() > max) { dynamicController.setVisibleInterval(min, max); } // Custom bounds double[] val = new double[] {min, max}; model.setCustomMin(min); model.setCustomMax(max); fireTimelineModelEvent( new TimelineModelEvent(TimelineModelEvent.EventType.CUSTOM_BOUNDS, model, val)); } } }
@Override public void setInterval(double from, double to) { if (model != null) { if (model.getIntervalStart() != from || model.getIntervalEnd() != to) { if (from >= to) { throw new IllegalArgumentException("from should be less than to"); } if (from < model.getCustomMin() || to > model.getCustomMax()) { throw new IllegalArgumentException("From and to should be in the bounds"); } dynamicController.setVisibleInterval(from, to); } } }