/* @(#)CardTracker.java 1.0  7 February 2005 */

/* 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.*;
import java.util.regex.*;


public class CardTracker
    extends PaintableSequence
{

    ShapePaintable[][] square = new ShapePaintable[14][4];
    
    TextPaintable[] colHeader = new TextPaintable[4];
    
    TextPaintable[] rowHeader = new TextPaintable[14];
    
    String[] colString = { "H", "D", "S", "C" };
    
    String[] rowString = { "", "A", "2", "3", "4", "5", "6",
        "7", "8", "9", "10", "J", "Q", "K" };
    
    int x = 2;      // x offset of square corner
    int y = 4;      // y offset of square corner
    int s = 20;     // side of square
    
    int m = 12;     // cell midpoint
    int d = 24;     // size of cell
    
    void initialize() {
        for (int row = 1; row < 14; row++)
            for (int col = 0; col < 4; col++) {
                int u = (col + 1) * d + x;
                int v = row * d + y;
                
                Rectangle2D rect =
                    new Rectangle2D.Double(u, v, s, s);
                
                square[row][col] = new ShapePaintable(rect);
                
                appendPaintable(square[row][col]);
            }
        
        reset();
        
        for (int row = 1; row < 14; row++) {
            int v = (row  + 1)* d;
            
            rowHeader[row] = new TextPaintable
                (rowString[row], null, null, null,
                 TextAnchor.CENTER_BASELINE, m, v);
            
            appendPaintable(rowHeader[row]);
        }
        
        for (int col = 0; col < 4; col++) {
            int u = (col + 1) * d + m;
            
            colHeader[col] = new TextPaintable
            (colString[col], null, null, null,
             TextAnchor.CENTER_BASELINE, u, d);
        
            appendPaintable(colHeader[col]);
        }
    }
    
    public CardTracker() {
        initialize();
    }
    
    public void reset() {
        for (int row = 1; row < 14; row++)
            for (int col = 0; col < 4; col++) {
                square[row][col].setVisible(false);
            }
        
    }
    
    public void markCard(Card card) {
        int row = card.getRank();
        int col = card.getSuit();
        
        square[row][col].setVisible(true);
    }
    
    public void unMarkCard(Card card) {
        int row = card.getRank();
        int col = card.getSuit();
        
        square[row][col].setVisible(false);
    }
    
}
