1/*
2 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef INTEGER_VALUE_HANDLER_H
6#define INTEGER_VALUE_HANDLER_H
7
8
9#include "IntegerFormatter.h"
10#include "TableCellIntegerRenderer.h"
11#include "ValueHandler.h"
12
13
14class IntegerValue;
15class OptionsSettingImpl;
16class SettingsDescription;
17
18
19class IntegerValueHandler : public ValueHandler {
20public:
21								IntegerValueHandler();
22								~IntegerValueHandler();
23
24			status_t			Init();
25
26	virtual	float				SupportsValue(Value* value);
27	virtual	status_t			GetValueFormatter(Value* value,
28									ValueFormatter*& _formatter);
29	virtual	status_t			GetTableCellValueRenderer(Value* value,
30									TableCellValueRenderer*& _renderer);
31	virtual	status_t			CreateTableCellValueSettingsMenu(Value* value,
32									Settings* settings, SettingsMenu*& _menu);
33
34protected:
35	virtual	integer_format		DefaultIntegerFormat(IntegerValue* value);
36	virtual	status_t			AddIntegerFormatSettingOptions(
37									IntegerValue* value,
38									OptionsSettingImpl* setting);
39	virtual	status_t			CreateTableCellValueRenderer(
40									IntegerValue* value,
41									TableCellIntegerRenderer::Config* config,
42									TableCellValueRenderer*& _renderer);
43
44			status_t			AddIntegerFormatOption(
45									OptionsSettingImpl* setting, const char* id,
46									const char* name, integer_format format);
47
48private:
49			class FormatOption;
50			class TableCellRendererConfig;
51
52private:
53			SettingsDescription* _CreateTableCellSettingsDescription(
54									IntegerValue* value);
55};
56
57
58#endif	// INTEGER_VALUE_HANDLER_H
59