package glug.gui.zoom; import glug.gui.UITimeScale; import java.awt.Point; import javax.swing.JViewport; import org.joda.time.Instant; import org.joda.time.Interval; public class TimelineViewport { private final UITimeScale uiTimeScale; private final JViewport viewport; public TimelineViewport(UITimeScale uiTimeScale, JViewport viewport) { this.uiTimeScale = uiTimeScale; this.viewport = viewport; } public UITimeScale getUITimeScale() { return uiTimeScale; } public int getViewportCoordinateFor(Instant instant) { int viewCoordinate = uiTimeScale.modelToView(instant); return viewCoordinate - viewport.getViewPosition().x; } public void setViewPosition(Instant instant, int viewportPositionForInstant) { int requiredLeftBoundInViewCoords = uiTimeScale.modelToView(instant) - viewportPositionForInstant; viewport.setViewPosition(new Point(requiredLeftBoundInViewCoords, viewport.getViewPosition().y)); } public Interval getVisibleInterval() { return uiTimeScale.viewToModel(viewport.getViewRect()); } }