1
edit
Changes
→4.b. Add Image to the Menu
=== 74. Add Menu to the Application ===7==== 4.a. Add Menu ====4.a.1.Open <code>ViewStudentApp</code> class and add menu items inside the constructor.<br/>4.a.2 Add add, edit and delete student options to the menu and set commands to execute: <source lang="java"> 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); </source>4.a.3. Create inner classes to execute all commands: <source lang="java"> 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"); } } </source>4.a.4. Run the application. Click on the menu you should see the following:<br/>[[Image: BB_Menu.png | 300px]]<br/>4.a.5. Select one of the menu options. The pop-up message should appear:<br/>[[Image: BB_Menu2.png | 300px]]<br/> ==== 4.b. Add Image to the Menu ====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"> /** * 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); } } </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/><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);</source>[[Image: BB_MenuImage.png | 300px]]<br/>