package lotto;

import java.awt.*;
import java.awt.geom.*;
import java.awt.font.*;
import javax.swing.*;
import javax.swing.border.*;
import java.awt.font.TextAttribute;
import java.text.*;

public class LottoSquare extends JPanel{
    private Color dkBlue = new Color(0,80,80);
    private Color transOrange = new Color(1.0F, 0.7F, 0.0F, 0.1F);
    Color[] colors = {dkBlue, Color.magenta, Color.red, transOrange};
    int mMode;
    private JPanel interiorPanel;
    String label;
    AttributedString as; 
    //LottoModel constants
    //public static final int NEITHER=0;
    //public static final int CHOSEN=1;
    //public static final int WINNER=2;
    //public static final int CHOSEN_WINNER=3;
    Font f = new Font("Serif",Font.BOLD,24);
    
    public LottoSquare(String s, int mode){
        label =s;
        as =  new AttributedString(s);
        mMode = mode;
        setBorder(new BevelBorder(BevelBorder.RAISED));
        //setHorizontalAlignment(SwingConstants.CENTER);
        setOpaque(true);
        setFont(f);
        if (mode < LottoModel.CHOSEN_WINNER)  setBackground(colors[mode]);
        setForeground(Color.white);
    }
    
    public void paintComponent(Graphics g){
        //super.paint(g);
        Graphics2D g2 = (Graphics2D)g;
        Rectangle2D stringBounds;
        FontRenderContext frc;
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
            RenderingHints.VALUE_ANTIALIAS_ON);
        Dimension dim = getSize();
        Rectangle2D r = new Rectangle2D.Float(0,0,dim.width, dim.height);
        if (mMode == LottoModel.CHOSEN_WINNER) {
            RoundGradientPaint rgp = new RoundGradientPaint( dim.width/2.0, dim.height/2.0, Color.orange,
                    new Point2D.Double(0,80),Color.white);
            g2.setPaint(rgp);
        }
        else {g2.setPaint(colors[mMode]);}
            g2.fill(r);
            g2.setPaint(Color.white);
            as.addAttribute(TextAttribute.FONT, f);
            as.addAttribute(TextAttribute.FOREGROUND, Color.white);
            frc = g2.getFontRenderContext();
            stringBounds = g2.getFont().getStringBounds(label, frc);
            float stringWidth = (float)stringBounds.getWidth();
            float stringHeight=(float)stringBounds.getHeight();
            g2.drawString(as.getIterator(), dim.width/2-stringWidth/2, dim.height/2+stringHeight/2-4);
            //g2.fill(r);
            //g2.setPaint(Color.black);
            //setText(label);
        
    }
    
    public void setMode(int mode){
        mMode = mode;
    }
    
    
  /*  
     private class IndexedMouseListener implements MouseListener{
        int index;
        public IndexedMouseListener(int i){
        index =i;
    }
        
        public void mousePressed(MouseEvent e){
            lottoModel.toggleChosen(index);
            int mode = lottoModel.getMode(index);
            lottoSquare[index].setBackground(colors[mode]);
            lottoSquare[index].repaint();
        }
        //public void mouseDragged(MouseEvent e){;}
        public void mouseReleased(MouseEvent e){;}
        public void mouseClicked(MouseEvent e){;}
        public void mouseEntered(MouseEvent e){;}
        public void mouseExited(MouseEvent e){;}
    }
    */
}
        
        
        
        
        
        
     
