package net.bible.android.view.activity.mynote; import android.app.Activity; import android.view.ViewGroup; import net.bible.android.control.mynote.MyNoteControl; import net.bible.android.control.page.window.ActiveWindowPageManagerProvider; import net.bible.android.view.activity.MainBibleActivityScope; import net.bible.android.view.activity.base.DocumentView; import net.bible.android.view.activity.page.MainBibleActivity; import javax.inject.Inject; /** * Build a MyNote TextView for viewing or editing notes * * @see gnu.lgpl.License for license details.<br> * The copyright to this program is held by it's authors. * @author Martin Denham [mjdenham at gmail dot com] */ @MainBibleActivityScope public class MyNoteViewBuilder { private MyNoteEditTextView myNoteText; private static final int MYNOTE_TEXT_ID = 992; private Activity mainActivity; private final ActiveWindowPageManagerProvider activeWindowPageManagerProvider; private static final String TAG = "MyNoteViewBuilder"; @Inject public MyNoteViewBuilder(MainBibleActivity mainBibleActivity, MyNoteControl myNoteControl, ActiveWindowPageManagerProvider activeWindowPageManagerProvider) { this.mainActivity = mainBibleActivity; myNoteText = new MyNoteEditTextView(this.mainActivity, myNoteControl); //noinspection ResourceType myNoteText.setId(MYNOTE_TEXT_ID); this.activeWindowPageManagerProvider = activeWindowPageManagerProvider; } /** return true if the current page should show a NyNote */ public boolean isMyNoteViewType() { return activeWindowPageManagerProvider.getActiveWindowPageManager().isMyNoteShown(); } public void addMyNoteView(ViewGroup parent) { boolean isMynoteTextEdit = isMyNoteViewShowing(parent); parent.setTag(TAG); if (!isMynoteTextEdit) { parent.addView(myNoteText); mainActivity.registerForContextMenu(myNoteText); } } public void removeMyNoteView(ViewGroup parent) { boolean isMynoteTextEdit = isMyNoteViewShowing(parent); if (isMynoteTextEdit) { parent.setTag(""); parent.removeView(myNoteText); mainActivity.unregisterForContextMenu(myNoteText); } } public DocumentView getView() { return myNoteText; } private boolean isMyNoteViewShowing(ViewGroup parent) { Object tag = parent.getTag(); return tag!=null && tag.equals(TAG); } }