ManageItemsActivity.java :  » Log » mhfinance » com » forsir » android » mhfinance » helper » Android Open Source

Android Open Source » Log » mhfinance 
mhfinance » com » forsir » android » mhfinance » helper » ManageItemsActivity.java
package com.forsir.android.mhfinance.helper;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.AdapterView.AdapterContextMenuInfo;

import com.forsir.android.mhfinance.R;
import com.forsir.android.mhfinance.storeObjects.Account;
import com.forsir.android.mhfinance.storeObjects.AccountsList;
import com.forsir.android.mhfinance.storeObjects.Category;
import com.forsir.android.mhfinance.storeObjects.IStorable;
import com.forsir.android.mhfinance.storeObjects.Payment;
import com.forsir.android.mhfinance.storeObjects.Repeating;
import com.forsir.android.mhfinance.storeObjects.Subcategory;

/**
 * class, which provide operations with category
 */
public abstract class ManageItemsActivity extends Activity {
  protected DbAdapter mDbHelper;

  private IStorable mItem;

  AlertDialog mConfirmDialog;
  AlertDialog mTextDialog;

  protected SharedPreferences mPreferenceSettings;
  protected String mAddNewType;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    mDbHelper = new DbAdapter(this, this);
    mDbHelper.open();

    // Restore preferences
    mPreferenceSettings = PreferenceManager.getDefaultSharedPreferences(this);
    mAddNewType = mPreferenceSettings.getString(getString(R.string.key_new_item), getResources().getStringArray(R.array.preferences_new)[0]);
  }

  public void ShowAddNewDialog(IStorable item) {
    int title = 0;
    if (item.getClass() == Account.class) {
      title = R.string.menu_account_new;
    }
    if (item.getClass() == Category.class) {
      title = R.string.menu_category_new;
    }
    if (item.getClass() == Subcategory.class) {
      title = R.string.menu_subcategory_new;
    }
    if (item.getClass() == Payment.class) {
      title = R.string.menu_payment_new;
    }

    final LayoutInflater factory = LayoutInflater.from(this);
    final View textEntryView = factory.inflate(R.layout.dialog, null);

    final EditText text = (EditText) textEntryView.findViewById(R.id.dialog_edit_text);
    text.setHint(R.string.dialog_enter_new_name);
    final TextView viewText = (TextView) textEntryView.findViewById(R.id.dialog_text_view);
    viewText.setText(R.string.dialog_enter_name);

    final Builder builder = new AlertDialog.Builder(this);
    builder.setTitle(title);
    builder.setView(textEntryView);
    builder.setPositiveButton(R.string.save, addNewItemClickListener);
    builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int whichButton) {
      }
    });
    mTextDialog = builder.show();
  }

  public void ShowEditDialog(IStorable item) {
    int title = 0;
    if (item.getClass() == Account.class) {
      title = R.string.menu_account_edit;
    }
    if (item.getClass() == Category.class) {
      title = R.string.menu_category_edit;
    }
    if (item.getClass() == Subcategory.class) {
      title = R.string.menu_subcategory_edit;
    }
    if (item.getClass() == Payment.class) {
      title = R.string.menu_payment_edit;
    }

    final LayoutInflater factory = LayoutInflater.from(this);
    final View textEntryView = factory.inflate(R.layout.dialog, null);

    final EditText text = (EditText) textEntryView.findViewById(R.id.dialog_edit_text);
    text.setText(item.getName());
    final TextView viewText = (TextView) textEntryView.findViewById(R.id.dialog_text_view);
    viewText.setText(R.string.dialog_enter_new_name);

    final Builder builder = new AlertDialog.Builder(this);
    builder.setTitle(title);
    builder.setView(textEntryView);
    builder.setPositiveButton(R.string.save, editItemClickListener);
    builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int whichButton) {
      }
    });
    mItem = item;
    mTextDialog = builder.show();
  }

  public void ShowDeleteDialog(IStorable item) {
    int title = 0;
    CharSequence text = "";
    if (item.getClass() == Account.class) {
      title = R.string.menu_account_delete;
      text = getText(R.string.menu_account_delete_confirm);
    }
    if (item.getClass() == Category.class) {
      title = R.string.menu_category_delete;
      text = getText(R.string.menu_category_delete_confirm);
    }
    if (item.getClass() == Subcategory.class) {
      title = R.string.menu_subcategory_delete;
      text = getText(R.string.menu_subcategory_delete_confirm);
    }
    if (item.getClass() == Payment.class) {
      title = R.string.menu_payment_delete;
      text = getText(R.string.menu_payment_delete_confirm);
    }
    if (item.getClass() == Repeating.class) {
      title = R.string.menu_repeating_delete;
      text = getText(R.string.menu_repeating_delete_confirm);
    }

    text = String.format(text.toString(), item.getName());
    mItem = item;

    final Builder builder = new AlertDialog.Builder(this);
    builder.setTitle(title);
    builder.setMessage(text);
    builder.setPositiveButton(R.string.yes, deleteItemClickListener);
    builder.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() { // nothing happened
              public void onClick(DialogInterface dialog, int whichButton) {
              }
            });
    builder.show();
  }

  // handle context menu
  @Override
  public boolean onContextItemSelected(MenuItem item) {
    final AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();

    switch (item.getItemId()) {
      case R.id.menu_account_new:
        ShowAddNewDialog(new Account());
        break;
      case R.id.menu_account_delete:
        ShowDeleteDialog(AccountsList.getAccount(info.position));
        break;
      case R.id.menu_account_edit:
        ShowEditDialog(AccountsList.getAccount(info.position));
        break;

    }
    return true;
  }

  public void deleteItem(IStorable item) {
    ShowDeleteDialog(item);
  }

  public void addNewItem(IStorable item) {
    ShowAddNewDialog(item);
  }

  public void editItem(IStorable item) {
    ShowEditDialog(item);
  }

  private final OnClickListener addNewItemClickListener = new OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
      final EditText text = (EditText) mTextDialog.findViewById(R.id.dialog_edit_text);
      final String returnText = text.getText().toString();

      if (returnText.length() != 0) {
        processAddNewItem(returnText);
      }
    }
  };

  private final OnClickListener editItemClickListener = new OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
      final EditText text = (EditText) mTextDialog.findViewById(R.id.dialog_edit_text);
      final String returnText = text.getText().toString();

      if (returnText.length() != 0) {
        processEditItem(mItem, returnText);
      }
    }
  };

  private final OnClickListener deleteItemClickListener = new OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
      processDeleteItem(mItem);
    }
  };

  // must be defined in child
  protected abstract void processAddNewItem(String name);

  protected abstract void processDeleteItem(IStorable item);

  protected abstract void processEditItem(IStorable item, String name);
}
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.