new void Start()
 {
     base.Start();
     instance = this;
     panel    = GetComponentInChildren <GridLayoutGroup>();
     RefreshPanel();
     buttonToDelegateMap = new Dictionary <Button, HighlightAsRegisterSlot>();
 }
 public void cleanup()
 {
     for (int i = 0; i < 3; i++)
     {
         Button opBtn = getButtonForOperandIndex(i);
         RegisterPanelManager.DeregisterAsRegisterSlot(opBtn);
         LabelPanelManager.DeregisterAsLabelSlot(opBtn);
         ImmediatePanelManager.DeregisterAsImmediateSlot(opBtn);
     }
 }
    public CodeLine setupLine(OpcodeRepository.OPCODE code)
    {
        instr.code = code;
        if (instrText != null)
        {
            instrText.text = code.ToString();
        }
        lineAdjustButton.onClick.AddListener(() => LineAdjuster.ShowAdjusterForLine(this));

        //Register each of the operands to their appropriate listeners.
        for (int i = 0; i < 3; i++)
        {
            if (OpcodeRepository.indexUnused(code, i))
            {
                disableOperandText(i);
                continue;
            }
            if (OpcodeRepository.canPlaceRegister(code, i))
            {
                RegisterPanelManager.RegisterAsRegisterSlot(this, getButtonForOperandIndex(i), getTextForOperandIndex(i), i);
                getTextForOperandIndex(i).text = "register";
            }
            if (OpcodeRepository.canPlaceImmediate(code, i))
            {
                ImmediatePanelManager.RegisterAsRegisterSlot(this, getButtonForOperandIndex(i), getTextForOperandIndex(i), i);
                getTextForOperandIndex(i).text = "immediate";
            }
            if (OpcodeRepository.canPlaceLabel(code, i))
            {
                LabelPanelManager.RegisterAsLabelSlot(this, getButtonForOperandIndex(i), getTextForOperandIndex(i), i);
                getTextForOperandIndex(i).text = "label";
            }

            //TOOD add in the ability to place memory locations
        }
        LabelPanelManager.RegisterAsLabelSlot(this, labelButton, labelText);
        return(this);
    }