package lancs.mobilemedia.core.ui.controller; import javax.microedition.lcdui.Command; import lancs.mobilemedia.core.ui.MainUIMidlet; import lancs.mobilemedia.core.ui.datamodel.AlbumData; import lancs.mobilemedia.core.ui.screens.AlbumListScreen; import lancs.mobilemedia.core.util.Constants; import de.ovgu.cide.jakutil.*; /** * @author tyoung * This is the base controller class used in the MVC architecture. * It controls the flow of screens for the MobilePhoto application. * Commands handled by this class should only be for the core application * that runs on any MIDP platform. Each device or class of devices that supports * optional features will extend this class to handle feature specific commands. */ public class BaseController extends AbstractController { /** * Pass a handle to the main Midlet for this controller * @param midlet */ public BaseController( MainUIMidlet midlet, AlbumData model, AlbumListScreen albumListScreen){ super(midlet,model,albumListScreen); } /** * Initialize the controller */ public void init( AlbumData model){ String[] albumNames=model.getAlbumNames(); getAlbumListScreen().deleteAll(); for (int i=0; i < albumNames.length; i++) { if (albumNames[i] != null) { getAlbumListScreen().append(albumNames[i],null); } } ((AlbumListScreen)getAlbumListScreen()).initMenu(); setCurrentScreen(getAlbumListScreen()); } public boolean handleCommand( Command command){ String label=command.getLabel(); System.out.println(this.getClass().getName() + "::handleCommand: " + label); if (label.equals("Exit")) { midlet.destroyApp(true); return true; } else if (label.equals("Back")) { return goToPreviousScreen(); } else if (label.equals("Cancel")) { return goToPreviousScreen(); } return false; } private boolean goToPreviousScreen(){ try { String currentScreenName=ScreenSingleton.getInstance().getCurrentScreenName(); System.out.println("<* BaseController.goToPreviousScreen() **>" + currentScreenName); if (currentScreenName != null) { if ((currentScreenName.equals(Constants.IMAGELIST_SCREEN)) || (currentScreenName.equals(Constants.NEWALBUM_SCREEN)) || (currentScreenName.equals(Constants.CONFIRMDELETEALBUM_SCREEN))) { ((AlbumListScreen)getAlbumListScreen()).repaintListAlbum(getAlbumData().getAlbumNames()); setCurrentScreen(getAlbumListScreen()); ScreenSingleton.getInstance().setCurrentScreenName(Constants.ALBUMLIST_SCREEN); return true; } } this.hook19(currentScreenName); return false; } catch ( ReturnBoolean r) { return r.value; } } protected void hook19( String currentScreenName){ } }