import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.shape.StrokeType;
import javafx.scene.text.Font;
import javafx.scene.text.Text;

public class CardView extends StackPane {
    public static final double WIDTH = 70;
    public static final double HEIGHT = 100;

    private Rectangle face_;
    private Text label_;

    public CardView(String text, boolean red) {
        face_ = new Rectangle(WIDTH, HEIGHT);
        face_.setArcWidth(10);
        face_.setArcHeight(10);
        face_.setStrokeType(StrokeType.INSIDE);
        face_.setStroke(Color.GRAY);

        label_ = new Text();
        label_.setFont(Font.font(20));

        getChildren().addAll(face_, label_);
        setMinSize(WIDTH, HEIGHT);
        setPrefSize(WIDTH, HEIGHT);
        setMaxSize(WIDTH, HEIGHT);
        setCard(text, red);
        setFaceUp(true);
    }

    public void setCard(String text, boolean red) {
        label_.setText(text);
        if (red) {
            label_.setFill(Color.CRIMSON);
        } else {
            label_.setFill(Color.BLACK);
        }
    }

    public void setFaceUp(boolean faceUp) {
        label_.setVisible(faceUp);
        if (faceUp) {
            face_.setFill(Color.WHITE);
        } else {
            face_.setFill(Color.STEELBLUE);
        }
    }

    public void setHighlighted(boolean on) {
        if (on) {
            face_.setStroke(Color.DODGERBLUE);
            face_.setStrokeWidth(4);
        } else {
            face_.setStroke(Color.GRAY);
            face_.setStrokeWidth(1);
        }
    }
}
