Teams Winter 2011/team1/BlackBerry/Add Mapping Option

From CDOT Wiki
Revision as of 21:01, 12 April 2011 by Azea (talk | contribs)
Jump to: navigation, search

10. Add Mapping Option

*NOTE: In order to test this feature the newest version of the simulator must be installed
10.1. In order to implement Address Locator we need to add address field and getter/setter methods to Student class:

  public Student(String firstName, String lastName, String email, String address) {
      this.firstName = firstName;
      this.lastName = lastName; = email; = address; //add address field

   public String getAddress(){
      return address;
   public void setAddress(String address){
      this.address = address;

10.2. Add EditTextFields to Add, Edit and view option:

   BasicEditField addressField = new BasicEditField("address: ",student.getAddress(),50,Field.NON_FOCUSABLE);


   EditField inputField4 = new EditField("Student's address: ","");           

   // Display the dialog and add a new element to the list
   if(addDialog.doModal() == 0) {
     addElementToList(new Student(inputField1.getText(),inputField2.getText(),inputField3.getText(), inputField4.getText()));                                                    


  EditField inputField4 = new EditField("Address: ",studentOld.getAddress());           

  if(editDialog.doModal() == 0)
      studentNew.setAddress(inputField4.getText()); //set Address
      editListElement(studentOld, studentNew);                                           

10.3. Add the Map Option to the manu:

   //Show the address on the map
   ImageMenuItem mapItem = new ImageMenuItem("Address on Map", 500, 5, MENU_MAP);

10.4. Implement address locator:

   mapItem.setCommand(new Command(new CommandHandler(){
      public void execute(ReadOnlyCommandMetadata metadata, Object context)
         Student student = (Student) _keywordFilterField.getSelectedElement();
                if(student != null)
                        String address = student.getAddress();
                    } catch(LocatorException ex){
                        Dialog.alert("cannot get location: " + ex.getMessage());
                    catch(Exception ex){
                        Dialog.alert("map application is not available: "+ ex.getMessage());

10.5. Implement showAddress() method. The Locator.geocode()</code?> method must be in another thread:

  public void showAddress(String adrs)throws LocatorException{       
     final String address = adrs;
     new Thread(new Runnable(){           
        public void run(){
        try {
           Landmark[] landm = Locator.geocode(address, null);
           MapsArguments ma = new MapsArguments(landm);
           Invoke.invokeApplication(Invoke.APP_TYPE_MAPS, ma);
         } catch (Exception ex) {
           Dialog.alert("Exception when getting location: " + ex.getMessage());

10.6. Change the Run Configuration in order to show maps:
BB conf1.png
BB conf2.png
10.7. Run the application, selected a Student and from the menu select Address on Map:

BB map1.png BB map2.png