summary refs log blame commit diff
path: root/src/BoardSquareButton.java
blob: 9c0a1e47eb52fe6583f9d02003c9a193ef4b5219 (plain) (tree)









































































































































































































                                                                                                                            
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;


/*
* TODO: move the mouselistener to main so we can call restart from there + we can investigate surrounding buttons from there
*
* */

public class BoardSquareButton extends JButton {

    public static final int DEFAULT_WIDTH = 100;
    public static final int DEFAULT_HEIGHT = 100;
    public static final String DEFAULT_TEXT = "?";
    public static final String MINE_TEXT = "O";
    public static final Color DEFAULT_COLOR = Color.GRAY;
    public static final Color INVESTIGATED_COLOR = Color.GREEN;
    public static final Color MINE_COLOR = Color.BLACK;
    public static final Color POTENTIAL_COLOR = Color.RED;

    private int width;
    private int height;
    private Color color;
    private int x;
    private int y;
    private int surroundingMines;
    private boolean mine;
    private boolean investigated;
    private boolean potential;

    /*
        CONSTRUCTORS
    */

    public BoardSquareButton(int x, int y, int width, int height, Color color)
    {
        this.x = x;
        this.y = y;

        initialise();

        this.setDefaultDimension(width, height);
        this.setColor(color);

        this.addNewMouseListener();
    }

    public BoardSquareButton(int x, int y)
    {
        this.x = x;
        this.y = y;

        initialise();

        this.addNewMouseListener();
    }

    private void addNewMouseListener()
    {
        super.addMouseListener(new Psymp7Main());
    }

    public void initialise()
    {
        this.setDefaultDimension(DEFAULT_WIDTH, DEFAULT_HEIGHT);
        super.setFont(new Font("Ariel", Font.PLAIN, 40));
        super.setText("?");
        super.setBackground(DEFAULT_COLOR);
        this.setColor(DEFAULT_COLOR);
        this.setMine(false);
        this.setInvestigated(false);
        this.setPotential(false);
    }

    /*
        GETTERS AND SETTERS
    */
    public BoardSquareButton getSelf()
    {
        return this;
    }

    public void setDefaultDimension(int x, int y)
    {
        this.setWidth(x);
        this.setHeight(y);
        super.setPreferredSize(new Dimension(x, y));
    }

    public int getWidth()
    {
        return width;
    }

    public void setWidth(int width)
    {
        this.width = width;
    }

    public int getHeight()
    {
        return height;
    }

    public void setHeight(int height)
    {
        this.height = height;
    }

    public int getSurroundingMines()
    {
        return surroundingMines;
    }

    public void setSurroundingMines(int mines)
    {
        this.surroundingMines = mines;
    }

    public Color getColor()
    {
        return color;
    }

    public void setColor(Color color)
    {
        this.color = color;
        super.setBackground(color);
    }

    public int getRow()
    {
        return x;
    }

    public void setRow(int x) { this.x = x; }

    public int getColumn()
    {
        return y;
    }

    public void setColumn(int y)
    {
        this.y = y;
    }

    public boolean isMine() {
        return mine;
    }

    public void setMine(boolean mine)
    {
        this.mine = mine;
    }

    public boolean isInvestigated()
    {
        return investigated;
    }

    public void setInvestigated(boolean investigated)
    {
        this.investigated = investigated;
        if (investigated)
        {
            this.setPotential(false);
            if (mine)
            {
                this.setColor(MINE_COLOR);
                this.setText(MINE_TEXT);
            } else
            {
                this.setColor(INVESTIGATED_COLOR);
                this.setText("" + this.getSurroundingMines());
            }
        }
        else
        {
            this.setColor(DEFAULT_COLOR);
            this.setText(DEFAULT_TEXT);
        }
    }
    public boolean isPotential()
    {
        return potential;
    }

    public void setPotential(boolean potential)
    {
        this.potential = potential;
        if(potential)
            this.setColor(POTENTIAL_COLOR);
        else
            this.setColor(DEFAULT_COLOR);
    }

}