status_t EnumerationValueHandler::CreateTableCellValueRenderer(IntegerValue* _value, IntegerValueFormatter::Config* config, TableCellValueRenderer*& _renderer) { EnumerationValue* value = dynamic_cast<EnumerationValue*>(_value); if (value != NULL && value->GetType()->ValueFor(value->GetValue()) != NULL) { ValueFormatter* formatter = NULL; status_t error = GetValueFormatter(value, formatter); if (error != B_OK) return error; BReference<ValueFormatter> formatterReference(formatter, true); TableCellValueRenderer* renderer = new(std::nothrow) TableCellFormattedValueRenderer(formatter); if (renderer == NULL) return B_NO_MEMORY; _renderer = renderer; return B_OK; } return IntegerValueHandler::CreateTableCellValueRenderer(_value, config, _renderer); }
integer_format EnumerationValueHandler::DefaultIntegerFormat(IntegerValue* _value) { EnumerationValue* value = dynamic_cast<EnumerationValue*>(_value); if (value != NULL && value->GetType()->ValueFor(value->GetValue()) != NULL) return INTEGER_FORMAT_DEFAULT; return IntegerValueHandler::DefaultIntegerFormat(_value); }
status_t EnumerationValueHandler::AddIntegerFormatSettingOptions(IntegerValue* _value, OptionsSettingImpl* setting) { EnumerationValue* value = dynamic_cast<EnumerationValue*>(_value); if (value != NULL && value->GetType()->ValueFor(value->GetValue()) != NULL) { status_t error = AddIntegerFormatOption(setting, "name", "Enum Name", INTEGER_FORMAT_DEFAULT); if (error != B_OK) return error; } return IntegerValueHandler::AddIntegerFormatSettingOptions(_value, setting); }
float TableCellEnumerationRenderer::PreferredValueWidth(Value* _value, BView* targetView) { Config* config = GetConfig(); if (config != NULL && config->IntegerFormat() == INTEGER_FORMAT_DEFAULT) { EnumerationValue* value = dynamic_cast<EnumerationValue*>(_value); if (value == NULL) return 0; if (EnumeratorValue* enumValue = value->GetType()->ValueFor(value->GetValue())) { return TableCellValueRendererUtils::PreferredStringWidth(targetView, enumValue->Name()); } } return TableCellIntegerRenderer::PreferredValueWidth(_value, targetView); }
void TableCellEnumerationRenderer::RenderValue(Value* _value, BRect rect, BView* targetView) { Config* config = GetConfig(); if (config != NULL && config->IntegerFormat() == INTEGER_FORMAT_DEFAULT) { EnumerationValue* value = dynamic_cast<EnumerationValue*>(_value); if (value == NULL) return; if (EnumeratorValue* enumValue = value->GetType()->ValueFor(value->GetValue())) { TableCellValueRendererUtils::DrawString(targetView, rect, enumValue->Name(), B_ALIGN_RIGHT, true); return; } } TableCellIntegerRenderer::RenderValue(_value, rect, targetView); }
status_t TableCellEnumerationEditor::ConfigureOptions() { EnumerationValue* initialValue = dynamic_cast<EnumerationValue*>( InitialValue()); if (initialValue == NULL) return B_BAD_VALUE; EnumerationType* type = initialValue->GetType(); for (int32 i = 0; i < type->CountValues(); i++) { EnumeratorValue* value = type->ValueAt(i); BString output; status_t error = AddOption(value->Name(), value->Value().ToInt32()); if (error != B_OK) return error; } BVariant integerValue; if (!initialValue->ToVariant(integerValue)) return B_NO_MEMORY; return SelectOptionFor(integerValue.ToInt32()); }