SlothItemizedOverlay.java :  » App » boredom-coordinator » com » boredom » Sloth » Android Open Source

Android Open Source » App » boredom coordinator 
boredom coordinator » com » boredom » Sloth » SlothItemizedOverlay.java
package com.boredom.Sloth;

import java.util.ArrayList;

import android.app.AlertDialog;
import android.content.Context;
import android.graphics.drawable.Drawable;

import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.OverlayItem;

import dummyObjects.DummyClub;
import dummyObjects.DummyUser;

public class SlothItemizedOverlay extends ItemizedOverlay<OverlayItem> {

  /**This is a dummy overlay for testing;
   * it will rapidly become more complicated*/
  private ArrayList<OverlayItem> testOverlays = new ArrayList<OverlayItem>();

  /**The displayList contains the overlays to actually bother rendering.
   * It is filled each time the size() method is called.*/
  private ArrayList<OverlayItem> displayList;
  
  private ArrayList<DummyUser> userList;
  private ArrayList<DummyClub> clubList;

  private Context overlayContext;

  public SlothItemizedOverlay(Drawable defaultMarker){
    super(boundCenterBottom(defaultMarker));

    displayList = new ArrayList<OverlayItem>();
    userList = new ArrayList<DummyUser>();
    clubList = new ArrayList<DummyClub>();
  }

  public SlothItemizedOverlay(Drawable defaultMarker, Context context){
    super(boundCenterBottom(defaultMarker));
    overlayContext = context;

    displayList = new ArrayList<OverlayItem>();
    userList = new ArrayList<DummyUser>();
    clubList = new ArrayList<DummyClub>();
  }

  /**
   * Clear and rebuild the display list of Overlay items.
   * 
   * Call this when you have changed the visibility status of Clubs or Users.*/
  public void updateDisplayList(){
    
    /**Clear the display list so we can rebuild it*/
    this.displayList.clear();
    ArrayList<String> currentMemberList = null;
    
    for(DummyClub currentClub : this.clubList ){
      
      if(currentClub.isVisible()){
      
        currentMemberList = currentClub.getMembers();
        for(DummyUser currentUser : this.userList){
        
          if(currentUser.isVisible()
             && currentMemberList.indexOf(currentUser.getName()) >= 0){
            
            OverlayItem newOverlay = new OverlayItem(currentUser.getLocation(),
                                 currentUser.getName(),
                                 currentUser.getStatus());
            displayList.add(newOverlay);
          }
                    
        }    
      }
    }
    
    
    populate();
  }

  public void addUser(DummyUser user){
    userList.add(user);
  }
  
  public void addClub(DummyClub club){
    clubList.add(club);
  }
  
  public void clubVisibility(String clubName, boolean isVisible){
    
    boolean match = false;
    int index = 0;
    for(DummyClub currentClub : this.clubList){
      
      if(currentClub.getName().equals(clubName)){
        match = true;
        break;
      } else {
        index++;
      }
    }
    
    if(match){
      this.clubList.get(index).setVisibility(isVisible);
    }
    
  }
  
  @Override
  protected OverlayItem createItem(int i){
    return displayList.get(i);
  }

  /**
   * Return the number of overlays to draw.  Only visible overlays
   * are counted and drawn.
   * */
  @Override
  public int size(){
    
    return displayList.size();
  }

  @Override
  protected boolean onTap(int index){

    OverlayItem item = testOverlays.get(index);
    AlertDialog.Builder dialog = new AlertDialog.Builder(overlayContext);
    dialog.setTitle(item.getTitle());
    dialog.setMessage(item.getSnippet());
    dialog.show();
    return true;
  }


}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.