com.bellman.bible.android.view.activity.base.actionbar.QuickDocumentChangeToolbarButton.java Source code

Java tutorial

Introduction

Here is the source code for com.bellman.bible.android.view.activity.base.actionbar.QuickDocumentChangeToolbarButton.java

Source

package com.bellman.bible.android.view.activity.base.actionbar;

import android.support.v4.view.MenuItemCompat;
import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener;

import com.bellman.bible.android.activity.R;
import com.bellman.bible.android.control.ControlFactory;
import com.bellman.bible.service.common.CommonUtils;
import com.bellman.bible.service.common.TitleSplitter;

import org.crosswire.jsword.book.Book;

/**
 * @author Martin Denham [mjdenham at gmail dot com]
 * @see gnu.lgpl.License for license details.<br>
 * The copyright to this program is held by it's author.
 */
abstract public class QuickDocumentChangeToolbarButton extends QuickActionButton
        implements OnMenuItemClickListener {

    private static int ACTION_BUTTON_MAX_CHARS = CommonUtils.getResourceInteger(R.integer.action_button_max_chars);
    private Book mSuggestedDocument;
    private TitleSplitter titleSplitter = new TitleSplitter();

    /**
     * SHOW_AS_ACTION_ALWAYS is overriden by setVisible which depends on canShow() below
     */
    public QuickDocumentChangeToolbarButton() {
        this(MenuItemCompat.SHOW_AS_ACTION_ALWAYS | MenuItemCompat.SHOW_AS_ACTION_WITH_TEXT);
    }

    public QuickDocumentChangeToolbarButton(int showAsActionFlags) {
        super(showAsActionFlags);
    }

    protected abstract Book getSuggestedDocument();

    @Override
    public void update(MenuItem menuItem) {
        mSuggestedDocument = getSuggestedDocument();
        super.update(menuItem);
    }

    @Override
    public boolean onMenuItemClick(MenuItem arg0) {
        ControlFactory.getInstance().getCurrentPageControl().setCurrentDocument(mSuggestedDocument);
        return true;
    }

    @Override
    protected boolean canShow() {
        return mSuggestedDocument != null;
    }

    @Override
    protected String getTitle() {
        if (mSuggestedDocument != null) {
            return titleSplitter.shorten(mSuggestedDocument.getAbbreviation(), ACTION_BUTTON_MAX_CHARS);
        } else {
            return "";
        }
    }
}