root/src/apps/debugger/user_interface/gui/value/TableCellValueEditor.cpp
/*
 * Copyright 2015, Rene Gollent, rene@gollent.com.
 * Distributed under the terms of the MIT License.
 */

#include "TableCellValueEditor.h"

#include "Value.h"


TableCellValueEditor::TableCellValueEditor()
        :
        BReferenceable(),
        fInitialValue(NULL)
{
}


TableCellValueEditor::~TableCellValueEditor()
{
        if (fInitialValue != NULL)
                fInitialValue->ReleaseReference();
}


void
TableCellValueEditor::AddListener(Listener* listener)
{
        fListeners.Add(listener);
}


void
TableCellValueEditor::RemoveListener(Listener* listener)
{
        fListeners.Remove(listener);
}


void
TableCellValueEditor::SetInitialValue(Value* value)
{
        if (fInitialValue != NULL)
                fInitialValue->ReleaseReference();

        fInitialValue = value;
        if (fInitialValue != NULL)
                fInitialValue->AcquireReference();
}


void
TableCellValueEditor::NotifyEditBeginning()
{
        for (ListenerList::Iterator it = fListeners.GetIterator();
                        Listener* listener = it.Next();) {
                listener->TableCellEditBeginning();
        }
}


void
TableCellValueEditor::NotifyEditCancelled()
{
        for (ListenerList::Iterator it = fListeners.GetIterator();
                        Listener* listener = it.Next();) {
                listener->TableCellEditCancelled();
        }
}


void
TableCellValueEditor::NotifyEditCompleted(Value* newValue)
{
        for (ListenerList::Iterator it = fListeners.GetIterator();
                        Listener* listener = it.Next();) {
                listener->TableCellEditEnded(newValue);
        }
}


// #pragma mark - TableCellValueEditor::Listener


TableCellValueEditor::Listener::~Listener()
{
}


void
TableCellValueEditor::Listener::TableCellEditBeginning()
{
}


void
TableCellValueEditor::Listener::TableCellEditCancelled()
{
}


void
TableCellValueEditor::Listener::TableCellEditEnded(Value* newValue)
{
}