1/*
2 * Copyright 2002-2006, project beam (http://sourceforge.net/projects/beam).
3 * All rights reserved. Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		Oliver Tappe <beam@hirschkaefer.de>
7 */
8#ifndef TEXT_CONTROL_COMPLETER_H
9#define TEXT_CONTROL_COMPLETER_H
10
11#include <MessageFilter.h>
12
13#include "AutoCompleter.h"
14
15
16class BTextView;
17
18class TextViewCompleter : protected BAutoCompleter, public BMessageFilter {
19public:
20								TextViewCompleter(BTextView* textView,
21									ChoiceModel* choiceModel = NULL,
22									PatternSelector* patternSelector = NULL);
23	virtual						~TextViewCompleter();
24
25			void				SetModificationsReported(bool reported);
26			void				TextModified(bool updateChoices);
27
28private:
29	virtual	filter_result		Filter(BMessage* message, BHandler** target);
30
31	class TextViewWrapper : public EditView {
32	public:
33								TextViewWrapper(BTextView* textView);
34		virtual	BRect			GetAdjustmentFrame();
35		virtual	void			GetEditViewState(BString& text,
36									int32* caretPos);
37		virtual	void			SetEditViewState(const BString& text,
38									int32 caretPos, int32 selectionLength = 0);
39	private:
40				BTextView*		fTextView;
41	};
42
43private:
44			BTextView*			fTextView;
45			bool				fModificationsReported;
46};
47
48#endif // TEXT_CONTROL_COMPLETER_H
49