stayfierce 0 Newbie Poster

I am trying to run a source code that I downloaded. However, there are several error message in reference to the classes TablePanel, BufferedPanel, Stringable, and Booleanview.

I am not sure why I am getting these errors because it is a complete source code. Do I need to import additional classes such as javax.swing.JPanel or javax.swing.JComponent?

I have attached a copy of the zip file that I downloaded


Here is a sample of the code:

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.awt.Panel.*;
import javax.swing.JComponent.*;
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 SudokuBase
    extends TablePanel
{
    // Static definitions //
    
    /** The color of the border around the entire GUI. */
    protected static final Color edgecolor = Colors.black;
    
    /** The tiny gap. */
    protected static final int gaptiny = 2;
    
    /** The small gap. */
    protected static final int gapsmall = 6;
    
    /** The medium gap. */
    protected static final int gapmedium = 12;
    
    /** The large gap. */
    protected static final int gaplarge = 18;
    
    
    // Member definitions //
    
    /** The model object. */
    protected SudokuModel model = new SudokuModel(this);
    
    /** The table object. */
    protected SudokuTable table = model.getSudokuTable();
    
    /** The stack consisting of lists of frozen cells. */
    protected Vector frozenstack = new Vector();
    
    
    /** The action to compute and display hints in the view. */
    protected final SimpleAction showHints =
        new SimpleAction("Show Hints") {
            public void perform() {
                showHints();
            }
    };
    
    /** The action to clear hints in the view. */
    protected final SimpleAction clearHints =
        new SimpleAction("Clear Hints") {
            public void perform() {
                clearHints();
            }
    };
    
    /** The action to reset hints in the view. */
    protected final SimpleAction resetHints =
        new SimpleAction("Reset Hints") {
            public void perform() {
                resetHints();
            }
    };
    
    
    /** The check box to select auto show hints. */
    protected BooleanView autoShowHints =
        new BooleanView("Show Hints Automatically?", false);
    
    
    /** The IO stuff. */
    protected Object[] hintsStuff =
        { showHints, clearHints, resetHints, autoShowHints };
    
    /** The IO panel. */
    protected TablePanel hintsPanel =
        new TablePanel
            (hintsStuff, VERTICAL, gapsmall, gapsmall, CENTER);
    
    
    /** The action to prune one cycle. */
    protected final SimpleAction pruneOneCycle =
        new SimpleAction("Prune Once") {
            public void perform() {
                setSignal(pruneOneCycle());
                showHints();
            }
    };
    
    /** The action to prune completely. */
    protected final SimpleAction pruneComplete =
        new SimpleAction("Prune Repeatedly") {
            public void perform() {
                setSignal(pruneComplete());
                showHints();
            }
    };
    
    
    /** The check box for the prune triplets algorithm. */
    protected BooleanView pruneTriplets =
        new BooleanView("Prune Triplets?", false);
    
    /** The check box for the prune triplets algorithm. */
    protected BooleanView pruneHintSets =
        new BooleanView("Prune Hint Sets?", false);
    
    /** The check box for the prune triplets algorithm. */
    protected BooleanView pruneUniqueHints =
        new BooleanView("Prune Unique Hints?", false);
    
    
    /** The Prune Choice stuff. */
    protected Object[] pruneChoiceStuff =
        { pruneTriplets, pruneHintSets, pruneUniqueHints };
    
    /** The Prune Choice panel. */
    protected TablePanel pruneChoicePanel =
        new TablePanel
            (pruneChoiceStuff, VERTICAL, gapsmall, gapsmall, WEST);
    
    
    /** The paint swatch to signal pruning. */
    protected PaintSwatch swatch = new PaintSwatch(Colors.white);
    
    /** The signal stuff. */
    protected Object[] signalStuff =
        { "Has Pruned?", swatch };
    
    /** The signal table. */
    protected TablePanel signalPanel =
        new TablePanel
            (signalStuff, HORIZONTAL, gapsmall, gapsmall, CENTER);
    
    
    /** The check box to select auto prune hints. */
    protected BooleanView autoPruneHints =
        new BooleanView("Prune Hints Automatically?", false);
    
    
    /** The Prune stuff. */
    protected Object[] pruneStuff =
        { pruneOneCycle, pruneComplete, pruneChoicePanel,
          signalPanel, autoPruneHints };
    
    
    /** The Prune panel. */
    protected TablePanel prunePanel =
        new TablePanel
            (pruneStuff, VERTICAL, gapsmall, gapsmall, CENTER);
    
    
    /** The freeze action. */
    protected SimpleAction freeze =
        new SimpleAction("Freeze") {
            public void perform() {
                freeze();
            }
    };
    
    /** The thaw action. */
    protected SimpleAction thaw =
        new SimpleAction("Thaw") {
            public void perform() {
                thaw();
            }
    };
    
    /** The thawAll action. */
    protected SimpleAction thawAll =
        new SimpleAction("Thaw All") {
            public void perform() {
                thawAll();
            }
    };
    
    
    /** The freeze-thaw stuff. */
    protected Object[] freezeStuff =
        { freeze, thaw, thawAll };
    
    /** The freeze-thaw panel. */
    protected TablePanel freezePanel =
        new TablePanel
            (freezeStuff, HORIZONTAL,  gapsmall, gapsmall, CENTER);
    
    
    /** The action to remove back to the last freeze. */
    protected final SimpleAction removeBackToLastFreeze =
        new SimpleAction("Remove Back To Last Freeze") {
            public void perform() {
                removeBackToLastFreeze();
            }
    };
    
    
    
    /** The action to empty the puzzle. */
    protected final SimpleAction removeEverything =
        new SimpleAction("Remove Everything") {
            public void perform() {
                removeEverything();
            }
    };
    
    
    /** The controls stuff. */
    protected Object[] controlsStuff =
        { hintsPanel, prunePanel, freezePanel,
          removeBackToLastFreeze, removeEverything };
    
    
    /** The controls table. */
    protected TablePanel controlsPanel =
        new TablePanel
            (controlsStuff, VERTICAL, gaplarge, gaplarge, CENTER);
    
    
    // Constructor //
    
    /** The constructor. */
    public SudokuBase() {
        super(1, 2, gapmedium, gapmedium, NORTH);
        
        initializeSudokuBase();
    }
    
    
    // Methods //
    
    /** The constructor initialize method. */
    protected void initializeSudokuBase() {
        addObject(controlsPanel, 0, 0);
        addObject(table, 0, 1);
        createBorder();
    }
    
    
    /** Create the border around the entire GUI. */
    protected void createBorder() {
        int a = gaptiny;
        int b = gapmedium;
        
        Border inner = BorderFactory.createEmptyBorder(b, b, b, b);
        
        Border line  = BorderFactory.createLineBorder(edgecolor, a);
        
        Border comp  = BorderFactory.createCompoundBorder(line, inner);
        
        Border outer = BorderFactory.createEmptyBorder(b, b, b, b);
        
        Border full  = BorderFactory.createCompoundBorder(outer, comp);
        
        setBorder(full);
    }
    
    
    /** Returns whether or not to do auto show hints. */
    public boolean doAutoShowHints() {
        return autoShowHints.getBooleanValue();
    }
    
    
    /** Returns whether or not to do auto prune hints. */
    public boolean doAutoPruneHints() {
        return autoPruneHints.getBooleanValue();
    }
    
    
    /** Returns whether or not to prune triplets. */
    public boolean doPruneTriplets() {
        return pruneTriplets.getBooleanValue();
    }
    
    
    /** Returns whether or not to prune hint sets. */
    public boolean doPruneHintSets() {
        return pruneHintSets.getBooleanValue();
    }
    
    
    /** Returns whether or not to prune unique hints. */
    public boolean doPruneUniqueHints() {
        return pruneUniqueHints.getBooleanValue();
    }
    
    
    /** Initialize the hints prior to pruning. */
    public void initializeHints() {
        model.initializeHints();
        setSignal(false);
    }
    
    
    /**
     * Sets the pruning algorithms in the model
     * from the user settings in this GUI.
     */
    public void setPruningAlgorithms() {
        model.setPruneTriplets(doPruneTriplets());
        model.setPruneHintSets(doPruneHintSets());
        model.setPruneUniqueHints(doPruneUniqueHints());
    }
    
    
    /**
     * Prune hints by eliminating hints made impossible
     * by data or hints in other rows or cols.
     * 
     * This method repeats the pruning process until no
     * more hints can be pruned.
     * 
     * The pruning algorithms used depend on the settings
     * made via the methods:
     *     setPruneTriplets
     *     setPruneHintSets
     *     setPruneUniqueHints
     * 
     * Returns true if at least one hint was pruned.
     */
    public boolean pruneComplete() {
        setPruningAlgorithms();
        
        return model.pruneComplete();
    }
    
    
    /** 
     * Performs one cycle of pruning hints.
     * 
     * The pruning algorithms used depend on the settings
     * made via the methods:
     *     setPruneTriplets
     *     setPruneHintSets
     *     setPruneUniqueHints
     * 
     * Returns true if at least one hint was pruned.
     */
    public boolean pruneOneCycle() {
        setPruningAlgorithms();
        
        return model.pruneOneCycle();
    }
    
    
    /** Display the hints in the GUI. */
    public void showHints() {
        for (int row = 1; row <= 9; row++)
            for (int col = 1; col <= 9; col++)
                if (model.getCellData(row, col) == 0) {
                    SudokuHint  hint  = model.getCellHint(row, col);
                    SudokuBlock block = table.getSudokuBlock(row, col);
                    block.paintHint(hint);
                }
    }
    
    
    /** Clear the hints in the GUI. */
    public void clearHints() {
        for (int row = 1; row <= 9; row++)
            for (int col = 1; col <= 9; col++)
                if (model.getCellData(row, col) == 0) {
                    SudokuBlock block = table.getSudokuBlock(row, col);
                    block.clearBlock();
                }
    }
    
    
    /**
     * Reset the hints to the initial hints
     * and then show the hints in the GUI.
     */
    public void resetHints() {
        initializeHints();
        showHints();
    }
    
    
    /** Update all blocks with data and optional hints . */
    public void updateAll() {
        updateData();
        updateHints();
    }
    
    
    /** Update all blocks with data only. */
    public void updateData() {
        for (int row = 1; row <= 9; row++)
            for (int col = 1; col <= 9; col++) {
                SudokuBlock block = table.getSudokuBlock(row, col);
                block.paintDigit(model.getCellData(row, col));
            }
    }
    
    
    /**
     * Initialize the hints based on the current cell data
     * then update the display after checking the settings
     * for auto-show-hints and auto-prune-hints.
     */
    public void updateHints() {
        initializeHints();
        setSignal(false);
        
        if (doAutoPruneHints()) {
            pruneComplete();
            showHints();
        }
        else
        if (doAutoShowHints())
            showHints();
        else
            clearHints();
    }
    
    
    /**
     * Set the swatch signal to red if the given flag is true
     * and to white if the given flag is false.
     */
    public void setSignal(boolean flag) {
        if (flag)
            swatch.setPaint(Colors.red);
        else
            swatch.setPaint(Colors.white);
    }
    
    
    /**
     * Freeze those cells which are non-empty, that is,
     * have data between 1 and 9, and which have not
     * been frozen earlier.
     * 
     * Maintain knowledge of this group of frozen cells
     * so that they may be later thawed.
     * 
     * @return the number of cells that were frozen
     */
    public int freeze() {
        int count = 0;
        
        Vector list = new Vector();
        
        for (int row = 1; row <= 9; row++)
            for (int col = 1; col <= 9; col++) {
                int data = model.getCellData(row, col);
                
                if (data > 0) {
                    SudokuBlock block =
                        table.getSudokuBlock(row, col);
                    
                    if (block.isActive()) {
                        count++;
                        block.freeze();
                        list.add(block.getCellPosition());
                    }
                }
            }
        
        if (count > 0)
            frozenstack.add(list);
        
        return count;
    }
    
    
    /**
     * Thaw the most recent group of frozen cells if any.
     * 
     * @return the number of cells that were thawed
     */
    public int thaw() {
        int size = frozenstack.size();
        
        if (size <= 0)
            return 0;
        
        Vector list = (Vector) frozenstack.remove(size - 1);
        
        int count = list.size();
        
        for (int i = (count - 1); i >= 0; i--) {
            CellPosition position = (CellPosition) list.remove(i);
            SudokuBlock block = table.getSudokuBlock(position);
            block.thaw();
        }
        
        return count;
    }
    
    
    /** Thaw all frozen cells. */
    public void thawAll() {
        while (frozenstack.size() > 0)
            thaw();
    }
    
    
    /** Remove all cell data back to the last freeze. */
    public void removeBackToLastFreeze() {
        int count = 0;
        
        for (int row = 1; row <= 9; row++)
            for (int col = 1; col <= 9; col++) {
                int data = model.getCellData(row, col);
                
                if (data > 0) {
                    SudokuBlock block =
                        table.getSudokuBlock(row, col);
                    
                    if (block.isActive()) {
                        model.setCellData(row, col, 0);
                        count++;
                    }
                }
            }
        
        if (count > 0)
            updateAll();
    }
    
    /** Remove all cell data from the puzzle. */
    public void removeEverything() {
        model.removeEverything();
        thawAll();
        updateData();
    }
    
    
    /** The main method. */
    public static void main(String[] args) {
        SudokuBase sudoku = new SudokuBase();
        
        sudoku.frame("Sudoku Puzzle");
    }

}
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.