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