* Copyright 2015, Rene Gollent, rene@gollent.com.
* Distributed under the terms of the MIT License.
*/
#include "TableCellTextControlEditor.h"
#include "Value.h"
#include "ValueFormatter.h"
enum {
MSG_INPUT_VALIDATION_NEEDED = 'ivne',
MSG_TEXT_VALUE_CHANGED = 'tevc'
};
TableCellTextControlEditor::TableCellTextControlEditor(::Value* initialValue,
ValueFormatter* formatter)
:
TableCellFormattedValueEditor(initialValue, formatter),
BTextControl("", "", NULL)
{
}
TableCellTextControlEditor::~TableCellTextControlEditor()
{
}
status_t
TableCellTextControlEditor::Init()
{
BMessage* message = new(std::nothrow) BMessage(
MSG_INPUT_VALIDATION_NEEDED);
if (message == NULL)
return B_NO_MEMORY;
SetMessage(message);
message = new(std::nothrow) BMessage(MSG_TEXT_VALUE_CHANGED);
if (message == NULL)
return B_NO_MEMORY;
SetModificationMessage(message);
return B_OK;
}
BView*
TableCellTextControlEditor::GetView()
{
return this;
}
void
TableCellTextControlEditor::AttachedToWindow()
{
BTextControl::AttachedToWindow();
SetTarget(this);
BString output;
if (GetValueFormatter()->FormatValue(InitialValue(), output) == B_OK)
SetText(output);
NotifyEditBeginning();
}
void
TableCellTextControlEditor::MessageReceived(BMessage* message)
{
switch (message->what) {
case MSG_TEXT_VALUE_CHANGED:
{
}
case MSG_INPUT_VALIDATION_NEEDED:
{
if (ValidateInput()) {
::Value* value = NULL;
status_t error = GetValueForInput(value);
if (error != B_OK)
break;
BReference< ::Value> valueReference(value, true);
NotifyEditCompleted(value);
}
break;
}
default:
BTextControl::MessageReceived(message);
break;
}
}