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  * Lancaster University
  3  * Computing Department
  4  
  5  * Created by Eduardo Figueiredo
  6  * Date: 22 Jun 2007
  7  
  8  */
  9 package ubc.midp.mobilephoto.core.ui.controller;
 10 
 11 import javax.microedition.lcdui.Alert;
 12 import javax.microedition.lcdui.Command;
 13 import javax.microedition.lcdui.CommandListener;
 14 import javax.microedition.lcdui.Display;
 15 import javax.microedition.lcdui.Displayable;
 16 
 17 import ubc.midp.mobilephoto.core.ui.MainUIMidlet;
 18 import ubc.midp.mobilephoto.core.ui.datamodel.AlbumData;
 19 import ubc.midp.mobilephoto.core.ui.screens.AlbumListScreen;
 20 
 21 /**
 22  * Purpose: (i) to structure controllers and (ii) simplify method handleCommand.
 23  @author Eduardo Figueiredo
 24  *
 25  */
 26 public abstract class AbstractController implements CommandListener, ControllerInterface {
 27 
 28   protected MainUIMidlet midlet;
 29   
 30   //Define a successor to implement the Chain of Responsibility design pattern
 31   private ControllerInterface nextController;
 32 
 33   private AlbumData albumData;
 34 
 35   //Define the basic screens
 36   private AlbumListScreen albumListScreen;
 37 
 38   /**
 39    @param midlet
 40    @param nextController
 41    @param albumData
 42    @param albumListScreen
 43    @param currentScreenName
 44    */
 45   public AbstractController(MainUIMidlet midlet, AlbumData albumData, AlbumListScreen albumListScreen) {
 46     this.midlet = midlet;
 47     this.albumData = albumData;
 48     this.albumListScreen = albumListScreen;
 49     // [EF] Senario 04: A singleton ScreenSingleton was created in order to all other access it. 
 50     // [EF] I think some data need to be unique (e.g. currentScreenName) to make them consistent for all controllers.
 51   }
 52   
 53   /* (non-Javadoc)
 54    * @see ubc.midp.mobilephoto.core.ui.controller.ControllerInterface#postCommand(javax.microedition.lcdui.Command, javax.microedition.lcdui.Displayable)
 55    */
 56   public void postCommand(Command command) {
 57         System.out.println("AbstractController::postCommand - Current controller is: " this.getClass().getName());
 58         //If the current controller cannot handle the command, pass it to the next
 59         //controller in the chain.
 60         if (handleCommand(command== false) {
 61           ControllerInterface next = getNextController();
 62             if (next != null) {
 63                 System.out.println("Passing to next controller in chain: " + next.getClass().getName());
 64                 next.postCommand(command);
 65             else {
 66                 System.out.println("AbstractController::postCommand - Reached top of chain. No more handlers for command: " + command);
 67             }
 68         }
 69 
 70   }
 71 
 72   /* 
 73    * Handle events. For now, this just passes control off to a 'wrapper'
 74    * so we can ensure, in order to use it in the aspect advice
 75    * (non-Javadoc)
 76    * @see javax.microedition.lcdui.CommandListener#commandAction(javax.microedition.lcdui.Command, javax.microedition.lcdui.Displayable)
 77    */
 78   public void commandAction(Command c, Displayable d) {
 79     postCommand(c);
 80   }
 81 
 82 
 83     public void setAlbumListAsCurrentScreen(Alert a) {
 84       setCurrentScreen(a, albumListScreen);
 85     }
 86   
 87     /**
 88    * Set the current screen for display, after alert
 89    */
 90     public void setCurrentScreen(Alert a, Displayable d) {
 91         Display.getDisplay(midlet).setCurrent(a, d);
 92     
 93 
 94     /**
 95      * [EF] RENAMED in Scenario 04: remove "Name". Purpose: avoid method name conflict
 96    * Get the current screen name that is displayed
 97    */
 98     public Displayable getCurrentScreen() {
 99         return Display.getDisplay(midlet).getCurrent();
100     
101     
102     /**
103    * Set the current screen for display
104    */
105     public void setCurrentScreen(Displayable d) {
106         Display.getDisplay(midlet).setCurrent(d);
107     
108 
109   /**
110    @return the albumData
111    */
112   public AlbumData getAlbumData() {
113     return albumData;
114   }
115 
116   /**
117    @param albumData the albumData to set
118    */
119   public void setAlbumData(AlbumData albumData) {
120     this.albumData = albumData;
121   }
122   
123   /**
124    @return the nextController
125    */
126   public ControllerInterface getNextController() {
127     return nextController;
128   }
129 
130   /**
131    @param nextController the nextController to set
132    */
133   public void setNextController(ControllerInterface nextController) {
134     this.nextController = nextController;
135   }
136 
137   /**
138    * [EF] Scenario 04: Just forward method.
139    @return the currentStoreName
140    */
141   public String getCurrentStoreName() {
142     return ScreenSingleton.getInstance().getCurrentStoreName();
143   }
144 
145   /**
146    @return the albumListScreen
147    */
148   public AlbumListScreen getAlbumListScreen() {
149     return albumListScreen;
150   }
151 }