Android Open Source - opensudoku Input Method






From Project

Back to project page opensudoku.

License

The source code is released under:

GNU General Public License

If you think the Android project opensudoku listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/* 
 * Copyright (C) 2009 Roman Masek/*  w ww.j  a  v  a  2s. c o  m*/
 * 
 * This file is part of OpenSudoku.
 * 
 * OpenSudoku is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * OpenSudoku is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with OpenSudoku.  If not, see <http://www.gnu.org/licenses/>.
 * 
 */

package org.moire.opensudoku.gui.inputmethod;

import android.content.Context;
import android.graphics.Color;
import android.graphics.LightingColorFilter;
import android.view.View;
import android.widget.Button;
import org.moire.opensudoku.R;
import org.moire.opensudoku.game.Cell;
import org.moire.opensudoku.game.SudokuGame;
import org.moire.opensudoku.gui.HintsQueue;
import org.moire.opensudoku.gui.SudokuBoardView;
import org.moire.opensudoku.gui.inputmethod.IMControlPanelStatePersister.StateBundle;

/**
 * Base class for several input methods used to edit sudoku contents.
 *
 * @author romario
 */
public abstract class InputMethod {

  // TODO: I should not have mPrefix for fields used in subclasses, create proper getters
  protected Context mContext;
  protected IMControlPanel mControlPanel;
  protected SudokuGame mGame;
  protected SudokuBoardView mBoard;
  protected HintsQueue mHintsQueue;

  private String mInputMethodName;
  protected View mInputMethodView;

  protected boolean mActive = false;
  private boolean mEnabled = true;

  public InputMethod() {

  }

  protected void initialize(Context context, IMControlPanel controlPanel, SudokuGame game, SudokuBoardView board, HintsQueue hintsQueue) {
    mContext = context;
    mControlPanel = controlPanel;
    mGame = game;
    mBoard = board;
    mHintsQueue = hintsQueue;
    mInputMethodName = this.getClass().getSimpleName();
  }

  public boolean isInputMethodViewCreated() {
    return mInputMethodView != null;
  }

  public View getInputMethodView() {
    if (mInputMethodView == null) {
      mInputMethodView = createControlPanelView();
      View switchModeView = mInputMethodView.findViewById(R.id.switch_input_mode);
      Button switchModeButton = (Button) switchModeView;
      switchModeButton.setText(getAbbrName());
      switchModeButton.getBackground().setColorFilter(new LightingColorFilter(Color.YELLOW, 0));
      onControlPanelCreated(mInputMethodView);
    }

    return mInputMethodView;
  }

  /**
   * This should be called when activity is paused (so InputMethod can do some cleanup,
   * for example properly dismiss dialogs because of WindowLeaked exception).
   */
  public void pause() {
    onPause();
  }

  protected void onPause() {

  }

  /**
   * This should be unique name of input method.
   *
   * @return
   */
  protected String getInputMethodName() {
    return mInputMethodName;
  }

  public abstract int getNameResID();

  public abstract int getHelpResID();

  /**
   * Gets abbreviated name of input method, which will be displayed on input method switch button.
   *
   * @return
   */
  public abstract String getAbbrName();

  public void setEnabled(boolean enabled) {
    mEnabled = enabled;

    if (!enabled) {
      mControlPanel.activateNextInputMethod();
    }
  }

  public boolean isEnabled() {
    return mEnabled;
  }

  public void activate() {
    mActive = true;
    onActivated();
  }

  public void deactivate() {
    mActive = false;
    onDeactivated();
  }

  protected abstract View createControlPanelView();

  protected void onControlPanelCreated(View controlPanel) {

  }

  protected void onActivated() {
  }

  protected void onDeactivated() {
  }

  /**
   * Called when cell is selected. Please note that cell selection can
   * change without direct user interaction.
   *
   * @param cell
   */
  protected void onCellSelected(Cell cell) {

  }

  /**
   * Called when cell is tapped.
   *
   * @param cell
   */
  protected void onCellTapped(Cell cell) {

  }

  protected void onSaveState(StateBundle outState) {
  }

  protected void onRestoreState(StateBundle savedState) {
  }
}




Java Source Code List

org.moire.opensudoku.db.DatabaseHelper.java
org.moire.opensudoku.db.FolderColumns.java
org.moire.opensudoku.db.SudokuColumns.java
org.moire.opensudoku.db.SudokuDatabase.java
org.moire.opensudoku.db.SudokuImportParams.java
org.moire.opensudoku.db.SudokuInvalidFormatException.java
org.moire.opensudoku.game.CellCollection.java
org.moire.opensudoku.game.CellGroup.java
org.moire.opensudoku.game.CellNote.java
org.moire.opensudoku.game.Cell.java
org.moire.opensudoku.game.FolderInfo.java
org.moire.opensudoku.game.SudokuGame.java
org.moire.opensudoku.game.command.AbstractCellCommand.java
org.moire.opensudoku.game.command.AbstractCommand.java
org.moire.opensudoku.game.command.ClearAllNotesCommand.java
org.moire.opensudoku.game.command.CommandStack.java
org.moire.opensudoku.game.command.EditCellNoteCommand.java
org.moire.opensudoku.game.command.FillInNotesCommand.java
org.moire.opensudoku.game.command.SetCellValueCommand.java
org.moire.opensudoku.gui.Changelog.java
org.moire.opensudoku.gui.FileImportActivity.java
org.moire.opensudoku.gui.FileListActivity.java
org.moire.opensudoku.gui.FolderDetailLoader.java
org.moire.opensudoku.gui.FolderListActivity.java
org.moire.opensudoku.gui.GameSettingsActivity.java
org.moire.opensudoku.gui.GameTimeFormat.java
org.moire.opensudoku.gui.HintsQueue.java
org.moire.opensudoku.gui.ImportSudokuActivity.java
org.moire.opensudoku.gui.SeekBarPreference.java
org.moire.opensudoku.gui.SudokuBoardView.java
org.moire.opensudoku.gui.SudokuEditActivity.java
org.moire.opensudoku.gui.SudokuExportActivity.java
org.moire.opensudoku.gui.SudokuImportActivity.java
org.moire.opensudoku.gui.SudokuListActivity.java
org.moire.opensudoku.gui.SudokuListFilter.java
org.moire.opensudoku.gui.SudokuPlayActivity.java
org.moire.opensudoku.gui.Timer.java
org.moire.opensudoku.gui.exporting.FileExportTaskParams.java
org.moire.opensudoku.gui.exporting.FileExportTaskResult.java
org.moire.opensudoku.gui.exporting.FileExportTask.java
org.moire.opensudoku.gui.importing.AbstractImportTask.java
org.moire.opensudoku.gui.importing.ExtrasImportTask.java
org.moire.opensudoku.gui.importing.OpenSudokuImportTask.java
org.moire.opensudoku.gui.importing.SdmImportTask.java
org.moire.opensudoku.gui.inputmethod.IMControlPanelStatePersister.java
org.moire.opensudoku.gui.inputmethod.IMControlPanel.java
org.moire.opensudoku.gui.inputmethod.IMNumpad.java
org.moire.opensudoku.gui.inputmethod.IMPopupDialog.java
org.moire.opensudoku.gui.inputmethod.IMPopup.java
org.moire.opensudoku.gui.inputmethod.IMSingleNumber.java
org.moire.opensudoku.gui.inputmethod.InputMethod.java
org.moire.opensudoku.utils.AndroidUtils.java
org.moire.opensudoku.utils.Const.java
org.moire.opensudoku.utils.StringUtils.java