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

#include "TableCellBoolEditor.h"

#include "BoolValue.h"


TableCellBoolEditor::TableCellBoolEditor(::Value* initialValue,
        ValueFormatter* formatter)
        :
        TableCellOptionPopUpEditor(initialValue, formatter)
{
}


TableCellBoolEditor::~TableCellBoolEditor()
{
}


status_t
TableCellBoolEditor::ConfigureOptions()
{
        BoolValue* initialValue = dynamic_cast<BoolValue*>(InitialValue());
        if (initialValue == NULL)
                return B_BAD_VALUE;

        status_t error = AddOption("true", true);
        if (error != B_OK)
                return error;

        error = AddOption("false", false);
        if (error != B_OK)
                return error;

        return SelectOptionFor(initialValue->GetValue());
}


status_t
TableCellBoolEditor::GetSelectedValue(::Value*& _value) const
{
        const char* name = NULL;
        int32 selectedValue = 0;
        SelectedOption(&name, &selectedValue);
        BoolValue* value = new(std::nothrow) BoolValue((bool)selectedValue);
        if (value == NULL)
                return B_NO_MEMORY;

        _value = value;
        return B_OK;
}