Android Open Source - opensudoku Fill In Notes Command






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.game.command;
/*w w  w.ja  v  a  2  s.c  o m*/
import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import org.moire.opensudoku.game.Cell;
import org.moire.opensudoku.game.CellCollection;
import org.moire.opensudoku.game.CellGroup;
import org.moire.opensudoku.game.CellNote;

public class FillInNotesCommand extends AbstractCellCommand {

  private List<NoteEntry> mOldNotes = new ArrayList<NoteEntry>();

  public FillInNotesCommand() {
  }

  @Override
  void saveState(Bundle outState) {
    super.saveState(outState);

    int[] rows = new int[mOldNotes.size()];
    int[] cols = new int[mOldNotes.size()];
    String[] notes = new String[mOldNotes.size()];

    int i = 0;
    for (NoteEntry ne : mOldNotes) {
      rows[i] = ne.rowIndex;
      cols[i] = ne.colIndex;
      notes[i] = ne.note.serialize();
      i++;
    }

    outState.putIntArray("rows", rows);
    outState.putIntArray("cols", cols);
    outState.putStringArray("notes", notes);
  }

  @Override
  void restoreState(Bundle inState) {
    super.restoreState(inState);

    int[] rows = inState.getIntArray("rows");
    int[] cols = inState.getIntArray("cols");
    String[] notes = inState.getStringArray("notes");

    for (int i = 0; i < rows.length; i++) {
      mOldNotes.add(new NoteEntry(rows[i], cols[i], CellNote
          .deserialize(notes[i])));
    }
  }

  @Override
  void execute() {
    CellCollection cells = getCells();

    mOldNotes.clear();
    for (int r = 0; r < CellCollection.SUDOKU_SIZE; r++) {
      for (int c = 0; c < CellCollection.SUDOKU_SIZE; c++) {
        Cell cell = cells.getCell(r, c);
        mOldNotes.add(new NoteEntry(r, c, cell.getNote()));
        cell.setNote(new CellNote());

        CellGroup row = cell.getRow();
        CellGroup column = cell.getColumn();
        CellGroup sector = cell.getSector();
        for (int i = 1; i <= CellCollection.SUDOKU_SIZE; i++) {
          if (!row.contains(i) && !column.contains(i) && !sector.contains(i)) {
            cell.setNote(cell.getNote().addNumber(i));
          }
        }
      }
    }
  }

  @Override
  void undo() {
    CellCollection cells = getCells();

    for (NoteEntry ne : mOldNotes) {
      cells.getCell(ne.rowIndex, ne.colIndex).setNote(ne.note);
    }
  }

  private static class NoteEntry {
    public int rowIndex;
    public int colIndex;
    public CellNote note;

    public NoteEntry(int rowIndex, int colIndex, CellNote note) {
      this.rowIndex = rowIndex;
      this.colIndex = colIndex;
      this.note = note;
    }

  }
}




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