Difference between revisions of "Teams Winter 2011/team1/BlackBerry/Add Menu to the Application"

From CDOT Wiki
Jump to: navigation, search
(4.b. Add Image to the Menu)
(4.b. Add Image to the Menu)
 
(3 intermediate revisions by the same user not shown)
Line 49: Line 49:
  
 
==== 4.b. Add Image to the Menu ====
 
==== 4.b. Add Image to the Menu ====
4.b.1. Create an abstract class that extends MenuItem to be used for creating items with image:<br/>
+
4.b.1. Add static fields for menu item number:<br/>
 +
<source lang="java">
 +
final static int MENU_ADD = 0;
 +
 
 +
final static int MENU_EDIT = 1;
 +
final static int MENU_DELETE = 2;
 +
final static int MENU_EMAIL = 3;
 +
final static int MENU_MAP = 4;
 +
</source>
 +
 
 +
4.b.2. Create an abstract class that extends MenuItem to be used for creating items with image:<br/>
 
<source lang="java">
 
<source lang="java">
 
/**
 
/**
Line 59: Line 69:
 
* Creates a new MenuDemoMenuItem object
 
* Creates a new MenuDemoMenuItem object
 
*/
 
*/
ImageMenuItem(String title, int ordinal, int property, int num)  
+
ImageMenuItem(String title, int ordinal, int property, int itemNum)  
 
{
 
{
 
super(new StringProvider(title), ordinal, property);
 
super(new StringProvider(title), ordinal, property);
Line 65: Line 75:
 
// Create Image object from project resource
 
// Create Image object from project resource
 
Bitmap bitmap;
 
Bitmap bitmap;
switch(num)  
+
switch(itemNum)  
 
{
 
{
 
case 0:
 
case 0:
Line 94: Line 104:
 
</source>
 
</source>
  
 
+
4.b.3. Change the instantiation of menu items to use the new class created ''ImageMenuItem''. Pass the name of the menu item to the constructor:<br/>
4.b.2. Change the instantiation of menu items to use the new class created ''ImageMenuItem'', pass the name of the menu item to the constructor:<br/>
 
 
<source lang="java">
 
<source lang="java">
 
+
        // MenuItem addItem = new MenuItem(new StringProvider("Add Student"), 200, 2);  // without image
ImageMenuItem addItem = new ImageMenuItem("Add Student", 100, 1, MENU_ADD);
+
ImageMenuItem addItem = new ImageMenuItem("Add Student", 100, 1, MENU_ADD);
addItem.setCommand(new Command(new CommandHandler() {
 
 
</source>
 
</source>
 
+
[[Image: BB_MenuImage.png | 300px]]<br/>
[[Image: BB_Menu.png | 300px]]<br/>
 

Latest revision as of 12:24, 9 April 2011

4. Add Menu to the Application

4.a. Add Menu

4.a.1. Open ViewStudentApp class and add menu items inside the constructor.
4.a.2 Add add, edit and delete student options to the menu and set commands to execute:

      MyScreen _mainScreen = new MyScreen(this);       
       
        MenuItem addItem = new MenuItem(new StringProvider("Add Student"), 200, 2);
        adds.setCommand(new Command(new AddCommandHandler()));
        _mainScreen.addMenuItem(addItem);
       
        MenuItem editItem = new MenuItem(new StringProvider("Edit Student"), 300, 3);
        edit.setCommand(new Command(new EditCommandHandler()));
        _mainScreen.addMenuItem(editItem);
       
        MenuItem delete = new MenuItem(new StringProvider("Delete Student"), 400, 4);
        delete.setCommand(new Command(new DeleteCommandHandler()));
        _mainScreen.addMenuItem(deleteItem);
       
        pushScreen(_mainScreen);

4.a.3. Create inner classes to execute all commands:

  
    class AddCommandHandler extends CommandHandler
    {
        public void execute(ReadOnlyCommandMetadata metadata, Object context){
            Dialog.alert("Add was selected");
        }
    }
    class EditCommandHandler extends CommandHandler
    {
        public void execute(ReadOnlyCommandMetadata metadata, Object context){
            Dialog.alert("Edit was selected");
        }
    }
    class DeleteCommandHandler extends CommandHandler
    {
        public void execute(ReadOnlyCommandMetadata metadata, Object context){
            Dialog.alert("Delete was selected");
        }
    }

4.a.4. Run the application. Click on the menu you should see the following:
BB Menu.png
4.a.5. Select one of the menu options. The pop-up message should appear:
BB Menu2.png


4.b. Add Image to the Menu

4.b.1. Add static fields for menu item number:

final static int MENU_ADD = 0;

	final static int MENU_EDIT = 1;
	final static int MENU_DELETE = 2;
	final static int MENU_EMAIL = 3;
	final static int MENU_MAP = 4;

4.b.2. Create an abstract class that extends MenuItem to be used for creating items with image:

	/**
	 * Concrete implementation of abstract class MenuItem
	 */
	class ImageMenuItem extends MenuItem 
	{
		/**
		 * Creates a new MenuDemoMenuItem object
		 */
		ImageMenuItem(String title, int ordinal, int property, int itemNum) 
		{
			super(new StringProvider(title), ordinal, property);

			// Create Image object from project resource
			Bitmap bitmap;
			switch(itemNum) 
			{
				case 0:
					bitmap = Bitmap.getBitmapResource("add.png");
					break;
				case 1:
					bitmap = Bitmap.getBitmapResource("edit.png");
					break;
				case 2:
					bitmap = Bitmap.getBitmapResource("delete.png");
					break;
				case 3:
					bitmap = Bitmap.getBitmapResource("email.png");
					break;	
				case 4: 
					bitmap = Bitmap.getBitmapResource("map.png");
					break;
				default:
					bitmap = Bitmap.getBitmapResource("none.png");
					break;
			}
			Image image = ImageFactory.createImage(bitmap);

			// Set image as this menu item's icon
			setIcon(image);
		}
	}

4.b.3. Change the instantiation of menu items to use the new class created ImageMenuItem. Pass the name of the menu item to the constructor:

        // MenuItem addItem = new MenuItem(new StringProvider("Add Student"), 200, 2);  // without image
	ImageMenuItem addItem = new ImageMenuItem("Add Student", 100, 1, MENU_ADD);

BB MenuImage.png