SkydiveTypeEditActivity.java :  » App » skydiveapp-4-android » org » skydiveapp » Android Open Source

Android Open Source » App » skydiveapp 4 android 
skydiveapp 4 android » org » skydiveapp » SkydiveTypeEditActivity.java
package org.skydiveapp;

import org.skydiveapp.data.FreefallProfileType;
import org.skydiveapp.data.SkydiveType;
import org.skydiveapp.repository.SkydiveTypeRepository;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class SkydiveTypeEditActivity extends Activity
{
  // activity request codes
  private static final int REQUEST_SELECT_FREEFALL_PROFILE_TYPE = 0;
  private static final int REQUEST_NOTES = 1;

  // repository
  private SkydiveTypeRepository repository = new SkydiveTypeRepository(this);
  
  // data
  private boolean isEdit = false;
  private SkydiveType skydiveType;
  
  // listeners
  private OnClickListener saveListener = new OnClickListener()
  {
    @Override
    public void onClick(View view)
    {
      save();
    }
  };
  private OnClickListener cancelListener = new OnClickListener()
  {
    @Override
    public void onClick(View view)
    {
      finish();
    }
  };
  private OnClickListener freefallProfileTypeEditListener = new OnClickListener()
  {
    @Override
    public void onClick(View view)
    {
      Intent intent = new Intent(SkydiveTypeEditActivity.this, FreefallProfileTypeSelectListActivity.class);
      if (skydiveType.getFreefallProfileType() != null)
      {
        intent.putExtra(Constants.EXTRA_FREEFALL_PROFILE_TYPE, skydiveType.getFreefallProfileType().toString());
      }
      startActivityForResult(intent, REQUEST_SELECT_FREEFALL_PROFILE_TYPE);
    }
  };
  private OnClickListener notesEditListener = new OnClickListener()
  {
    @Override
    public void onClick(View view)
    {
      Intent intent = new Intent(SkydiveTypeEditActivity.this, NotesEditActivity.class);
      intent.putExtra(Constants.EXTRA_NOTES, skydiveType.getNotes());
      startActivityForResult(intent, REQUEST_NOTES);
    }
  };
  private OnClickListener deleteListener = new OnClickListener()
  {
    @Override
    public void onClick(View view)
    {
      showDeleteWarning();
    }
  };
  private DialogInterface.OnClickListener deleteConfirmListener = new DialogInterface.OnClickListener()
  {
    @Override
    public void onClick(DialogInterface arg0, int arg1)
    {
      delete();
    }
  };
  
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    
    // load data
    loadData();
    
    // init ui
    initializeUI();
  }
  
  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent intent)
  {
    if (requestCode == REQUEST_SELECT_FREEFALL_PROFILE_TYPE && resultCode == RESULT_OK)
    {
      String profileType = intent.getStringExtra(Constants.EXTRA_FREEFALL_PROFILE_TYPE);
      updateFreefallProfileType(profileType);
    }
    else if (requestCode == REQUEST_NOTES && resultCode == RESULT_OK)
    {
      String notes = intent.getStringExtra(Constants.EXTRA_NOTES);
      updateNotes(notes);
    }
  }
  
  private void loadData()
  {
    // set isEdit flag
    Bundle extras = getIntent().getExtras();
    isEdit = (extras != null && extras.containsKey(Constants.EXTRA_SKYDIVE_TYPE_ID));

    // determine add vs. edit
    if (isEdit)
    {
      // editing
      int id = getIntent().getExtras().getInt(Constants.EXTRA_SKYDIVE_TYPE_ID);
      skydiveType = repository.getSkydiveType(id);
    }
    else
    {
      // adding
      skydiveType = new SkydiveType();
    }
  }
  
  private void initializeUI()
  {
    // show view
    setContentView(R.layout.skydive_type_edit_view);
    
    // set header text
    TextView headerTextView = (TextView)findViewById(R.id.EditHeaderTextView);
    headerTextView.setText(isEdit ?
        R.string.skydive_type_edit_label : R.string.skydive_type_new_label);
    
    // set name
    EditText nField = (EditText)findViewById(R.id.SkydiveTypeNameField);
    nField.setText(skydiveType.getName());
    
    // set freefall profile type
    TextView profileTypeField = (TextView)findViewById(R.id.SkydiveTypeFreefallProfileField);
    profileTypeField.setText(skydiveType.getFreefallProfileType() == null ? "" :
      getString(skydiveType.getFreefallProfileType().getResourceId()));
    profileTypeField.setOnClickListener(freefallProfileTypeEditListener);
    
    // set notes
    TextView notesField = (TextView)findViewById(R.id.SkydiveTypeNotesField);
    notesField.setText(skydiveType.getNotes());
    notesField.setOnClickListener(notesEditListener);

    // add button listeners
    Button saveButton = (Button)findViewById(R.id.EditHeaderSaveButton);
    saveButton.setOnClickListener(saveListener);
    
    Button cancelButton = (Button)findViewById(R.id.EditHeaderCancelButton);
    cancelButton.setOnClickListener(cancelListener);
    
    Button deleteButton = (Button)findViewById(R.id.SkydiveTypeDeleteButton);
    deleteButton.setOnClickListener(deleteListener);
    
    // show/hide delete button
    deleteButton.setVisibility(isEdit ? View.VISIBLE : View.GONE);
  }
  
  private void showDeleteWarning()
  {
    // create alert dialog
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage(R.string.skydive_type_delete_warning);
    builder.setIcon(android.R.drawable.ic_dialog_alert);
    builder.setTitle(R.string.delete_confirmation);
    builder.setPositiveButton(R.string.yes_button, deleteConfirmListener);
    builder.setNegativeButton(R.string.no_button, null);
    AlertDialog dialog = builder.create();
    // show dialog
    dialog.show();
  }
  
  private void updateFreefallProfileType(String profileType)
  {
    // update profile type
    if (profileType == null)
      skydiveType.setFreefallProfileType(null);
    else
      skydiveType.setFreefallProfileType(FreefallProfileType.valueOf(profileType));
    
    // update ui
    TextView profileTypeField = (TextView)findViewById(R.id.SkydiveTypeFreefallProfileField);
    profileTypeField.setText(skydiveType.getFreefallProfileType() == null ? "" :
      getString(skydiveType.getFreefallProfileType().getResourceId()));
  }
  
  private void updateNotes(String notes)
  {
    // update aircraft
    skydiveType.setNotes(notes);
    
    // update ui
    TextView notesField = (TextView)findViewById(R.id.SkydiveTypeNotesField);
    notesField.setText(skydiveType.getNotes());
  }
  
  private void save()
  {
    // set name
    EditText nField = (EditText)findViewById(R.id.SkydiveTypeNameField);
    skydiveType.setName(nField.getText().toString());
    
    // save
    if (isEdit)
    {
      repository.updateSkydiveType(skydiveType);
    }
    else
    {
      repository.addSkydiveType(skydiveType);
    }
    
    // finish
    finish();
  }
  
  private void delete()
  {
    // delete
    repository.deleteSkydiveType(skydiveType);
    
    // finish
    finish();
  }
  
  @Override
  public void onBackPressed()
  {
    save();
    super.onBackPressed();
  }
}
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.