package xl.gui;

import java.awt.Color;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import xl.controller.SlotLabelController;
import java.util.Observer;
import java.util.Observable;
import xl.model.XLModel;

public class SlotLabel extends ColoredLabel implements Observer {
    private String address;

    public SlotLabel(SlotLabelController slotLabelController, int row, char column) {
        super("                    ", Color.WHITE, RIGHT);
        this.address = "" + column + row;

        // MouseListener for mouse clicks
        addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                slotLabelController.handleSlotClick(SlotLabel.this);
            }
        });
    }

    public String getAddress() {
        return address;
    }

    public void update(Observable o, Object arg) {
        if (o instanceof XLModel) {
            XLModel xlModel = (XLModel) o;
            if (xlModel.containsKey(address)) {
                String tempCurrentAdress = xlModel.getAddressContent(address);
                xlModel.setCurrentAddress(address);
                String content = xlModel.getAddressValue(address);
                setText(content);
                xlModel.setCurrentAddress(tempCurrentAdress);
            } else {
                setText("");
            }
        }
    }
}