Classes sorted by package:

core.comms
BaseMessaging

core.threads
BaseThread

core.ui
MainUIMidlet

core.ui.controller
AbstractController
AlbumController
BaseController
ControllerInterface
PhotoController
PhotoListController
PhotoViewController
ScreenSingleton

core.ui.datamodel
AlbumData
ImageAccessor
ImageData

core.ui.screens
AddPhotoToAlbum
AlbumListScreen
NewLabelScreen
PhotoListScreen
PhotoViewScreen
SplashScreen

core.util
Constants
ImageUtil

sms
NetworkScreen
SmsMessaging
SmsReceiverController
SmsReceiverThread
SmsSenderController
SmsSenderThread
  1 /*
  2  * Created on Sep 28, 2004
  3  *
  4  */
  5 package ubc.midp.mobilephoto.core.ui.controller;
  6 
  7 import javax.microedition.lcdui.Command;
  8 
  9 import ubc.midp.mobilephoto.core.ui.MainUIMidlet;
 10 import ubc.midp.mobilephoto.core.ui.datamodel.AlbumData;
 11 import ubc.midp.mobilephoto.core.ui.screens.AlbumListScreen;
 12 import ubc.midp.mobilephoto.core.util.Constants;
 13 
 14 /**
 15  @author tyoung
 16  *
 17  * This is the base controller class used in the MVC architecture.
 18  * It controls the flow of screens for the MobilePhoto application.
 19  * Commands handled by this class should only be for the core application
 20  * that runs on any MIDP platform. Each device or class of devices that supports
 21  * optional features will extend this class to handle feature specific commands.
 22  
 23  */
 24 public class BaseController extends AbstractController {
 25     
 26   // [EF] Attributes albumController and photoController were commented because 
 27   // I'm not sure which one is the best solution: 
 28   // [EF] (i) Declare controllers here and have only one instance or
 29   // [EF] (ii) create controllerns when needed (current solution)
 30 //  private AlbumController albumController;
 31 //  private PhotoController photoController;
 32   
 33   /**
 34    * Pass a handle to the main Midlet for this controller
 35    @param midlet
 36    */
 37   public BaseController(MainUIMidlet midlet, AlbumData model, AlbumListScreen albumListScreen) {
 38     super(midlet, model, albumListScreen);
 39   }
 40 
 41   /**
 42    * Initialize the controller
 43    */
 44   public void init(AlbumData model) {
 45     //Get all MobilePhoto defined albums from the record store
 46     String[] albumNames = model.getAlbumNames();
 47     for (int i = 0; i < albumNames.length; i++) {
 48       if (albumNames[i!= null) {
 49         //Add album name to menu list
 50         getAlbumListScreen().append(albumNames[i]null);
 51         
 52       }
 53     }
 54     getAlbumListScreen().initMenu();
 55     
 56     //Set the current screen to the photo album listing
 57     setCurrentScreen(getAlbumListScreen());
 58   }
 59 
 60     /* 
 61      * TODO [EF] Why this method receives Displayable and never uses?
 62      */
 63     public boolean handleCommand(Command command) {
 64     String label = command.getLabel();
 65 
 66     //Can this controller handle the desired action?
 67     //If yes, handleCommand will return true, and we're done
 68     //If no, handleCommand will return false, and postCommand
 69     //will pass the request to the next controller in the chain if one exists.
 70     
 71         System.out.printlnthis.getClass().getName() "::handleCommand: " + label);
 72 
 73     /** Case: Exit Application **/
 74     if (label.equals("Exit")) {
 75       midlet.destroyApp(true);
 76       return true;
 77     
 78     /** Case: Go to the Previous or Fallback screen * */
 79     else if (label.equals("Back")) {
 80       return goToPreviousScreen();
 81 
 82       /** Case: Cancel the current screen and go back one* */
 83     else if (label.equals("Cancel")) {
 84       return goToPreviousScreen();
 85 
 86     }
 87 
 88     //If we couldn't handle the current command, return false
 89         return false;
 90     }
 91     
 92     private boolean goToPreviousScreen() {
 93       System.out.println("<* AlbumController.goToPreviousScreen() *>");
 94     String currentScreenName = ScreenSingleton.getInstance().getCurrentScreenName();
 95     if ( (currentScreenName.equals(Constants.IMAGELIST_SCREEN)) || 
 96         (currentScreenName.equals(Constants.NEWALBUM_SCREEN)) ||
 97         (currentScreenName.equals(Constants.CONFIRMDELETEALBUM_SCREEN)) ){
 98       getAlbumListScreen().repaintListAlbum(getAlbumData().getAlbumNames());
 99       setCurrentScreengetAlbumListScreen() );
100       ScreenSingleton.getInstance().setCurrentScreenName(Constants.ALBUMLIST_SCREEN);
101       return true;
102     }
103       
104     return false;
105     }
106 }