1/*
2 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Copyright 2015, Rene Gollent, rene@gollent.com.
4 * Distributed under the terms of the MIT License.
5 */
6#ifndef VALUE_HANDLER_H
7#define VALUE_HANDLER_H
8
9
10#include <Referenceable.h>
11
12
13class Settings;
14class SettingsMenu;
15class TableCellValueEditor;
16class TableCellValueRenderer;
17class Value;
18class ValueFormatter;
19
20
21class ValueHandler : public BReferenceable {
22public:
23	virtual						~ValueHandler();
24
25	virtual	float				SupportsValue(Value* value) = 0;
26	virtual	status_t			GetValueFormatter(Value* value,
27									ValueFormatter*& _formatter) = 0;
28									// returns a reference
29	virtual	status_t			GetTableCellValueRenderer(Value* value,
30									TableCellValueRenderer*& _renderer) = 0;
31									// returns a reference
32	virtual	status_t			GetTableCellValueEditor(Value* value,
33									Settings* settings,
34										// may be NULL if preconfiguration with
35										// particular settings isn't desired.
36									TableCellValueEditor*& _editor);
37									// may return NULL, otherwise a reference
38	virtual	status_t			CreateTableCellValueSettingsMenu(Value* value,
39									Settings* settings, SettingsMenu*& _menu);
40									// may return NULL, otherwise a reference
41};
42
43
44#endif	// VALUE_HANDLER_H
45