import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;

public class InfoPanel extends JPanel implements AppTheme {

    protected JTextArea[] descriptions;
    protected Rectangle[] bounds;
    protected String[] holderDescriptions;
    protected String[] categoryHolder;
    protected int panelIndex;

    public InfoPanel(String[] categoryHolder, String[] holderDescriptions, Rectangle[] bounds, int panelIndex) {

        super();
        this.categoryHolder = categoryHolder;
        this.holderDescriptions = holderDescriptions;
        this.bounds = bounds;
        this.panelIndex = panelIndex;

        panelSetup();

        createDescriptions();

    }

    public void updateInfo(int holderIndex) {
        removeAll();
        panelSetup();

        add(descriptions[holderIndex]);

        repaint();
        revalidate();

    }

    protected void updateInfo(int holderIndex, JLabel portrait) {
        removeAll();
        panelSetup();

        add(descriptions[holderIndex]);
        add(portrait);

        repaint();
        revalidate();

    }

    private void panelSetup() {

        setOpaque(false);
        setBounds(bounds[0]);
        setLayout(null);

        JLabel subHeader = new JLabel("Description");
        subHeader.setFont(subHeaderFont);
        subHeader.setHorizontalAlignment(SwingConstants.LEFT);
        subHeader.setBounds(bounds[1]);
        subHeader.setForeground(darkestBrown);

        add(subHeader);

    }

    private void createDescriptions() {

        descriptions = new JTextArea[holderDescriptions.length];

        for (int i = 0; i < holderDescriptions.length; i++) {

            JTextArea tmpDesc = new JTextArea();
            tmpDesc.setText(holderDescriptions[i]);
            tmpDesc.setWrapStyleWord(true);
            tmpDesc.setLineWrap(true);
            tmpDesc.setOpaque(true);
            tmpDesc.setEditable(false);
            tmpDesc.setFocusable(false);
            tmpDesc.setFont(paragraphFont);
            tmpDesc.setBounds(bounds[2]);
            tmpDesc.setBorder(new EmptyBorder(5, 5, 5, 5));
            tmpDesc.setBackground(medBrown);
            tmpDesc.setForeground(darkestBrown);

            descriptions[i] = tmpDesc;

        }

    }

}
