* Copyright 2015, Rene Gollent, rene@gollent.com.
* Distributed under the terms of the MIT License.
*/
#include "TableCellOptionPopUpEditor.h"
#include "Value.h"
enum {
MSG_SELECTED_OPTION_CHANGED = 'msoc'
};
TableCellOptionPopUpEditor::TableCellOptionPopUpEditor(::Value* initialValue,
ValueFormatter* formatter)
:
TableCellFormattedValueEditor(initialValue, formatter),
BOptionPopUp("optionEditor", NULL, NULL)
{
}
TableCellOptionPopUpEditor::~TableCellOptionPopUpEditor()
{
}
status_t
TableCellOptionPopUpEditor::Init()
{
BMessage* message = new(std::nothrow) BMessage(
MSG_SELECTED_OPTION_CHANGED);
if (message == NULL)
return B_NO_MEMORY;
SetMessage(message);
return ConfigureOptions();
}
BView*
TableCellOptionPopUpEditor::GetView()
{
return this;
}
void
TableCellOptionPopUpEditor::AttachedToWindow()
{
BOptionPopUp::AttachedToWindow();
SetTarget(this);
NotifyEditBeginning();
}
void
TableCellOptionPopUpEditor::MessageReceived(BMessage* message)
{
switch (message->what) {
case MSG_SELECTED_OPTION_CHANGED:
{
::Value* value = NULL;
if (GetSelectedValue(value) == B_OK) {
BReference< ::Value> valueReference(value, true);
NotifyEditCompleted(value);
} else
NotifyEditCancelled();
break;
}
default:
BOptionPopUp::MessageReceived(message);
break;
}
}