/* Useful imports */

import edu.neu.ccs.*;
import edu.neu.ccs.gui.*;
import edu.neu.ccs.codec.*;
import edu.neu.ccs.console.*;
import edu.neu.ccs.filter.*;
import edu.neu.ccs.jpf.*;
import edu.neu.ccs.parser.*;
import edu.neu.ccs.pedagogy.*;
import edu.neu.ccs.quick.*;
import edu.neu.ccs.util.*;

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.font.*;
import java.awt.image.*;
import javax.swing.*;
import javax.swing.border.*;
import java.io.*;
import java.util.*;
import java.math.*;
import java.beans.*;
import java.lang.reflect.*;
import java.net.URL;
import java.util.regex.*;
import java.text.ParseException;


public class Sudoku
    extends SudokuBase
{
    // Member definitions //
    
    /** The file IO tool. */
    private StringableFileIO fileIO =
        new StringableFileIO(model, "sudoku");
    
    /** The action to read from a file. */
    private final SimpleAction readFromFile =
        new SimpleAction("Read Sudoku From File") {
            public void perform() {
                if (fileIO.readDataFromFile()) {
                    thawAll();
                    freeze();
                    updateAll();
                }
            }
    };
    
    /** The action to save to a file. */
    private final SimpleAction saveToFile =
        new SimpleAction("Save Sudoku To File") {
            public void perform() {
                fileIO.saveDataToFile();
            }
    };
    
    
    /** The IO stuff. */
    private Object[] IOStuff =
        { readFromFile, saveToFile };
    
    /** The IO panel. */
    private TablePanel IOPanel =
        new TablePanel
            (IOStuff, VERTICAL, gapsmall, gapsmall, CENTER);
    
    
    // Constructor //
    
    /** The constructor. */
    public Sudoku() {
        initializeSudoku();
    }
    
    
    // Methods //
    
    /** The constructor initialize method. */
    protected void initializeSudoku() {
        controlsPanel.addObject(IOPanel);
    }
    
    
    /** The main method. */
    public static void main(String[] args) {
        Sudoku sudoku = new Sudoku();
        
        sudoku.frame("Sudoku Puzzle");
    }

}
