com.arconus.dicecommander.ui.fragment.PowerCardGridFragment.java Source code

Java tutorial

Introduction

Here is the source code for com.arconus.dicecommander.ui.fragment.PowerCardGridFragment.java

Source

/*
 *   Copyright (C) 2012 Joe AmRhein
 *
 *   Licensed under the Apache License, Version 2.0 (the "License");
 *   you may not use this file except in compliance with the License.
 *   You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing, software
 *   distributed under the License is distributed on an "AS IS" BASIS,
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *   See the License for the specific language governing permissions and
 *   limitations under the License.
 */

package com.arconus.dicecommander.ui.fragment;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

import com.arconus.dicecommander.Application;
import com.arconus.dicecommander.R;
import com.arconus.dicecommander.adapters.CharPowerAdapter;
import com.arconus.dicecommander.events.CharacterSelectedEvent;
import com.arconus.dicecommander.interactors.PowerWizardBundler;
import com.arconus.dicecommander.interactors.managers.GameCharacterManager;
import com.arconus.dicecommander.model.entities.character.power.CharPower;
import com.arconus.dicecommander.model.entities.character.power.CharPowerRollResult;
import com.arconus.dicecommander.ui.activity.PowerWizardActivity;
import com.arconus.dicecommander.ui.dialogs.PowerRollResultDialog;
import com.squareup.otto.Subscribe;

public class PowerCardGridFragment extends Fragment implements OnItemClickListener {
    private ListView listView;

    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        View v = getView();

        if (v != null) {
            listView = (ListView) getView().findViewById(R.id.power_list);
            listView.setEmptyView(getView().findViewById(android.R.id.empty));
            listView.setOnItemClickListener(this);
            registerForContextMenu(listView);
            refreshAdapter();
        }
    }

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.power_card_grid_fragment, container, false);
    }

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) {
        CharPowerRollResult r = GameCharacterManager.getInstance().rollSelectedCharacter(position);
        DialogFragment newFragment = PowerRollResultDialog.newInstance(r);
        newFragment.show(getFragmentManager(), "dialog");
    }

    public void refreshAdapter() {
        if (!GameCharacterManager.isEmpty()) {
            CharPowerAdapter adapter = new CharPowerAdapter(getActivity(),
                    GameCharacterManager.getInstance().getSelectedCharacter().getCharPowers());
            listView.invalidateViews();
            listView.setAdapter(adapter);
        }
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        AdapterContextMenuInfo adapterInfo = (AdapterContextMenuInfo) menuInfo;

        MenuInflater inflater = getActivity().getMenuInflater();
        inflater.inflate(R.menu.power_card_list_menu, menu);

        menu.setHeaderTitle(GameCharacterManager.getInstance().getSelectedCharacter().getCharPowers()
                .get(adapterInfo.position).getName());
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
        switch (item.getItemId()) {
        case R.id.power_card_list_item_menu_clone:
            CharPower clonePower = GameCharacterManager.getInstance().getPowerFromSelectedChar(info.position);
            Intent cloneIntent = new Intent(getActivity(), PowerWizardActivity.class);
            cloneIntent.putExtra(PowerWizardActivity.EDIT_POWER_ID, -1);
            cloneIntent.putExtra(PowerWizardActivity.EDIT_POWER_MODEL,
                    new PowerWizardBundler(clonePower).createBundleFromPower());
            startActivity(cloneIntent);
            return true;

        case R.id.power_card_list_item_menu_edit:
            CharPower editPower = GameCharacterManager.getInstance().getPowerFromSelectedChar(info.position);
            Intent editIntent = new Intent(getActivity(), PowerWizardActivity.class);
            editIntent.putExtra(PowerWizardActivity.EDIT_POWER_ID, info.position);
            editIntent.putExtra(PowerWizardActivity.EDIT_POWER_MODEL,
                    new PowerWizardBundler(editPower).createBundleFromPower());
            startActivity(editIntent);
            return true;

        case R.id.power_card_list_item_menu_remove:
            GameCharacterManager.getInstance().deleteCharPowerFromSelectedCharacter(info.position);
            refreshAdapter();
            return true;
        default:
            return super.onContextItemSelected(item);
        }
    }

    @Override
    public void onPause() {
        super.onPause();
        Application.bus.unregister(this);
    }

    @Override
    public void onResume() {
        super.onResume();
        refreshAdapter();
        Application.bus.register(this);
    }

    @Subscribe
    public void answerCharSelectedEvent(CharacterSelectedEvent event) {
        refreshAdapter();
    }

}