Android Open Source - opensudoku I M Control Panel State Persister






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

package org.moire.opensudoku.gui.inputmethod;
/*from   w w w . j a v  a 2  s  . c o  m*/
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.preference.PreferenceManager;

/**
 * This class is responsible for persisting of control panel's state.
 *
 * @author romario
 */
public class IMControlPanelStatePersister {

  private static final String PREFIX = IMControlPanel.class.getName();

  private SharedPreferences mPreferences;

  public IMControlPanelStatePersister(Context context) {
    mPreferences = PreferenceManager.getDefaultSharedPreferences(context);
  }

  public void saveState(IMControlPanel controlPanel) {
    // save state of control panel itself
    StateBundle cpState = new StateBundle(mPreferences, PREFIX + "", true);
    cpState.putInt("activeMethodIndex", controlPanel.getActiveMethodIndex());
    cpState.commit();

    // save state of all input methods
    for (InputMethod im : controlPanel.getInputMethods()) {
      StateBundle outState = new StateBundle(mPreferences, PREFIX + "" + im.getInputMethodName(), true);
      im.onSaveState(outState);
      outState.commit();
    }
  }

  public void restoreState(IMControlPanel controlPanel) {
    // restore state of control panel itself
    StateBundle cpState = new StateBundle(mPreferences, PREFIX + "", false);
    int methodId = cpState.getInt("activeMethodIndex", 0);
    if (methodId != -1) {
      controlPanel.activateInputMethod(methodId);
    }

    // restore state of all input methods
    for (InputMethod im : controlPanel.getInputMethods()) {
      StateBundle savedState = new StateBundle(mPreferences, PREFIX + "" + im.getInputMethodName(), false);
      im.onRestoreState(savedState);
    }
  }

  /**
   * This is basically wrapper around anything which is capable of storing
   * state. Instance of this object will be passed to concrete input method's
   * to store and retreive their state.
   *
   * @author romario
   */
  public static class StateBundle {

    private final SharedPreferences mPreferences;
    private final Editor mPrefEditor;
    private final String mPrefix;
    private final boolean mEditable;

    public StateBundle(SharedPreferences preferences, String prefix,
               boolean editable) {
      mPreferences = preferences;
      mPrefix = prefix;
      mEditable = editable;

      if (mEditable) {
        mPrefEditor = preferences.edit();
      } else {
        mPrefEditor = null;
      }
    }

    public boolean getBoolean(String key, boolean defValue) {
      return mPreferences.getBoolean(mPrefix + key, defValue);
    }

    public float getFloat(String key, float defValue) {
      return mPreferences.getFloat(mPrefix + key, defValue);
    }

    public int getInt(String key, int defValue) {
      return mPreferences.getInt(mPrefix + key, defValue);
    }

    public String getString(String key, String defValue) {
      return mPreferences.getString(mPrefix + key, defValue);
    }

    public void putBoolean(String key, boolean value) {
      if (!mEditable) {
        throw new IllegalStateException("StateBundle is not editable");
      }
      mPrefEditor.putBoolean(mPrefix + key, value);
    }

    public void putFloat(String key, float value) {
      if (!mEditable) {
        throw new IllegalStateException("StateBundle is not editable");
      }
      mPrefEditor.putFloat(mPrefix + key, value);
    }

    public void putInt(String key, int value) {
      if (!mEditable) {
        throw new IllegalStateException("StateBundle is not editable");
      }
      mPrefEditor.putInt(mPrefix + key, value);
    }

    public void putString(String key, String value) {
      if (!mEditable) {
        throw new IllegalStateException("StateBundle is not editable");
      }
      mPrefEditor.putString(mPrefix + key, value);
    }

    public void commit() {
      if (!mEditable) {
        throw new IllegalStateException("StateBundle is not editable");
      }
      mPrefEditor.commit();
    }

  }

}




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