1/*
2 * Copyright 2015, Axel D��rfler, axeld@pinc-software.de.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef ADDRESS_TEXT_CONTROL_H
6#define ADDRESS_TEXT_CONTROL_H
7
8
9#include <Control.h>
10
11
12class BButton;
13class BPopUpMenu;
14class BTextView;
15
16
17class AddressTextControl : public BControl {
18public:
19								AddressTextControl(const char* name,
20									BMessage* message);
21	virtual						~AddressTextControl();
22
23	virtual	void				AttachedToWindow();
24	virtual	void				WindowActivated(bool active);
25	virtual	void				Draw(BRect updateRect);
26	virtual	void				MakeFocus(bool focus = true);
27	virtual void				SetEnabled(bool enabled);
28	virtual	void				MessageReceived(BMessage* message);
29
30			const BMessage*		ModificationMessage() const;
31			void				SetModificationMessage(BMessage* message);
32
33			bool				IsEditable() const;
34			void				SetEditable(bool editable);
35
36			void				SetText(const char* text);
37			const char*			Text() const;
38			int32				TextLength() const;
39			void				GetSelection(int32* start, int32* end) const;
40			void				Select(int32 start, int32 end);
41			void				SelectAll();
42
43			bool				HasFocus();
44
45private:
46			void				_AddAddress(const char* text);
47			void				_UpdateTextViewColors();
48
49private:
50			class TextView;
51			class PopUpButton;
52
53			TextView*			fTextView;
54			PopUpButton*		fPopUpButton;
55			BPopUpMenu*			fRefDropMenu;
56			bool				fWindowActive;
57			bool				fEditable;
58};
59
60
61#endif // ADDRESS_TEXT_CONTROL_H
62
63