1/*
2 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef VALUE_HANDLER_ROSTER_H
6#define VALUE_HANDLER_ROSTER_H
7
8
9#include <Locker.h>
10#include <ObjectList.h>
11
12
13class TableCellValueRenderer;
14class Value;
15class ValueFormatter;
16class ValueHandler;
17
18
19typedef BObjectList<ValueHandler> ValueHandlerList;
20
21
22class ValueHandlerRoster {
23public:
24								ValueHandlerRoster();
25								~ValueHandlerRoster();
26
27	static	ValueHandlerRoster*	Default();
28	static	status_t			CreateDefault();
29	static	void				DeleteDefault();
30
31			status_t			Init();
32			status_t			RegisterDefaultHandlers();
33
34			status_t			FindValueHandler(Value* value,
35									ValueHandler*& _handler);
36									// returns a reference
37			status_t			GetValueFormatter(Value* value,
38									ValueFormatter*& _formatter);
39									// returns a reference
40			status_t			GetTableCellValueRenderer(Value* value,
41									TableCellValueRenderer*& _renderer);
42									// returns a reference
43
44			bool				RegisterHandler(ValueHandler* handler);
45			void				UnregisterHandler(ValueHandler* handler);
46
47private:
48			BLocker				fLock;
49			ValueHandlerList	fValueHandlers;
50	static	ValueHandlerRoster*	sDefaultInstance;
51};
52
53
54#endif	// VALUE_HANDLER_ROSTER_H
55