package glug.gui.zoom;
import glug.gui.UITimeScale;
import glug.gui.timelinecursor.TimelineCursor;
import glug.model.time.LogInstant;
import javax.swing.JViewport;
import org.joda.time.Instant;
import org.joda.time.Interval;
public class ZoomFocusFinder {
private final JViewport viewport;
private final UITimeScale uiTimeScale;
private final TimelineCursor timelineCursor;
public ZoomFocusFinder(TimelineCursor timelineCursor, JViewport viewport, UITimeScale uiTimeScale) {
this.timelineCursor = timelineCursor;
this.viewport = viewport;
this.uiTimeScale = uiTimeScale;
}
public Instant instantToZoomAround() {
Instant instantToZoomAround = null;
Interval visibleInterval = uiTimeScale.viewToModel(viewport.getViewRect());
LogInstant dot = timelineCursor.getDot();
if (dot != null && visibleInterval.contains(dot.getRecordedInstant())) {
instantToZoomAround = dot.getRecordedInstant();
}
if (instantToZoomAround == null) {
instantToZoomAround = new Instant(visibleInterval.getStartMillis()
+ visibleInterval.toDurationMillis() / 2);
}
return instantToZoomAround;
}
}