package com.niklim.clicktrace.controller; import com.google.inject.Inject; import com.google.inject.Singleton; import com.niklim.clicktrace.model.ScreenShot; import com.niklim.clicktrace.model.Session; import com.niklim.clicktrace.view.MainView; /** * Switches the screenshot being displayed. */ @Singleton public class NavigationController { @Inject private MainView mainView; @Inject private ActiveSession activeSession; public void showFirstScreenShot() { showScreenShot(0); } public void showPrevScreenShot() { int selectedIndex = activeSession.getActiveShotIndex(); int nextIndex = Math.max(0, selectedIndex - 1); if (selectedIndex != nextIndex) { showScreenShot(nextIndex); } } public void showNextScreenShot() { Session session = activeSession.getSession(); int selectedIndex = activeSession.getActiveShotIndex(); int nextIndex = Math.min(selectedIndex + 1, session.getShots().size() - 1); if (selectedIndex != nextIndex) { showScreenShot(nextIndex); } } public void showLastScreenShot() { Session session = activeSession.getSession(); int nextIndex = session.getShots().size() - 1; showScreenShot(nextIndex); } public void showScreenShot(int i) { ScreenShot shot = activeSession.getSession().getShots().get(i); activeSession.setActiveShot(shot); mainView.showScreenShot(shot, activeSession.isShotSelected(shot)); mainView.refresh(); } }