BoundingBoxPicker.java :  » App » imogene-map » org » imogene » map » provider » osm » app » Android Open Source

Android Open Source » App » imogene map 
imogene map » org » imogene » map » provider » osm » app » BoundingBoxPicker.java
package org.imogene.map.provider.osm.app;

import org.imogene.map.provider.common.Constants.Extras;
import org.imogene.map.provider.osm.R;
import org.imogene.map.provider.osm.overlay.EditableBoundingBoxOverlay;

import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;

public class BoundingBoxPicker extends MapActivity implements OnClickListener {
  
  private static final int DIALOG_UNSAVED_ID = 1;
  
  public EditableBoundingBoxOverlay mOverlay;
  
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        final Intent intent = getIntent();
        mOverlay = new EditableBoundingBoxOverlay(this);
        mOverlay.setNorth((int) (intent.getDoubleExtra(Extras.EXTRA_NORTH, 51.508742) * 1E6));
        mOverlay.setWest((int) (intent.getDoubleExtra(Extras.EXTRA_WEST, 2.021484) * 1E6));
        mOverlay.setSouth((int) (intent.getDoubleExtra(Extras.EXTRA_SOUTH, 43.197167) * 1E6));
        mOverlay.setEast((int) (intent.getDoubleExtra(Extras.EXTRA_EAST, 29.707031) * 1E6));
    mMapView.getOverlays().add(mOverlay);
//    autozoom();
  }
  
  @Override
  protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt(Extras.EXTRA_EAST, mOverlay.getEast());
    outState.putInt(Extras.EXTRA_NORTH, mOverlay.getNorth());
    outState.putInt(Extras.EXTRA_SOUTH, mOverlay.getSouth());
    outState.putInt(Extras.EXTRA_WEST, mOverlay.getWest());
  }
  
  @Override
  protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    mOverlay.setEast(savedInstanceState.getInt(Extras.EXTRA_EAST));
    mOverlay.setNorth(savedInstanceState.getInt(Extras.EXTRA_NORTH));
    mOverlay.setSouth(savedInstanceState.getInt(Extras.EXTRA_SOUTH));
    mOverlay.setWest(savedInstanceState.getInt(Extras.EXTRA_WEST));
  }
  
  @Override
  protected boolean isAutozoomDisplayed() {
    return true;
  }
  
  @Override
  protected boolean isValidateDisplayed() {
    return true;
  }
  
  @Override
  protected void autozoom() {
    mController.setCenter(mOverlay.getCenter());
    int latSpan = (int) (mOverlay.getLatitudeSpan() * 1.25);
    int lonSpan = (int) (mOverlay.getLongitudeSpan() * 1.25);
    mController.zoomToSpan(latSpan, lonSpan);
  }
  
  @Override
  protected void validate() {
    Intent intent = new Intent();
    intent.putExtra(Extras.EXTRA_NORTH, (double) (mOverlay.getNorth() / 1E6));
    intent.putExtra(Extras.EXTRA_EAST, (double) (mOverlay.getEast() / 1E6));
    intent.putExtra(Extras.EXTRA_SOUTH, (double) (mOverlay.getSouth() / 1E6));
    intent.putExtra(Extras.EXTRA_WEST, (double) (mOverlay.getWest() / 1E6));
    setResult(RESULT_OK, intent);
    super.finish();
  }
  
  @Override
  protected Dialog onCreateDialog(int id) {
    switch (id) {
    case DIALOG_UNSAVED_ID:
      return new AlertDialog.Builder(this)
      .setTitle(android.R.string.dialog_alert_title)
      .setIcon(android.R.drawable.ic_dialog_alert)
      .setMessage(R.string.unsaved_dialog_msg)
      .setPositiveButton(android.R.string.yes, this)
      .setNegativeButton(R.string.no, this)
      .setNeutralButton(android.R.string.cancel, null)
      .setCancelable(false)
      .create();
    default:
      return super.onCreateDialog(id);
    }
  }
  
  @Override
  public void onClick(DialogInterface dialog, int which) {
    switch (which) {
    case Dialog.BUTTON_POSITIVE:
      validate();
      break;
    case Dialog.BUTTON_NEGATIVE:
      forceFinish();
      break;
    }
  }
  
  @Override
  public void finish() {
    showDialog(DIALOG_UNSAVED_ID);
  }
  
  private void forceFinish() {
    setResult(RESULT_CANCELED);
    super.finish();
  }
  
}
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.