1/*
2 * Copyright 2012-2014, Rene Gollent, rene@gollent.com.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef WATCH_PROMPT_WINDOW_H
6#define WATCH_PROMPT_WINDOW_H
7
8
9#include <Window.h>
10
11#include "ExpressionInfo.h"
12#include "types/Types.h"
13
14
15class Architecture;
16class BMenuField;
17class BTextControl;
18class SourceLanguage;
19class Watchpoint;
20class UserInterfaceListener;
21
22
23class WatchPromptWindow : public BWindow, private ExpressionInfo::Listener
24{
25public:
26								WatchPromptWindow(Architecture* architecture,
27									target_addr_t address, uint32 type,
28									int32 length,
29									UserInterfaceListener* listener);
30
31								~WatchPromptWindow();
32
33	static	WatchPromptWindow*	Create(Architecture* architecture,
34									target_addr_t address, uint32 type,
35									int32 length,
36									UserInterfaceListener* listener);
37									// throws
38
39
40	virtual	void				MessageReceived(BMessage* message);
41
42	virtual	void				Show();
43
44	// ExpressionInfo::Listener
45	virtual	void				ExpressionEvaluated(ExpressionInfo* info,
46									status_t result, ExpressionResult* value);
47
48private:
49			void	 			_Init();
50
51
52private:
53			target_addr_t		fInitialAddress;
54			uint32				fInitialType;
55			int32				fInitialLength;
56			Architecture*		fArchitecture;
57			target_addr_t		fRequestedAddress;
58			int32				fRequestedLength;
59			BTextControl*		fAddressInput;
60			BTextControl*		fLengthInput;
61			ExpressionInfo*		fAddressExpressionInfo;
62			ExpressionInfo*		fLengthExpressionInfo;
63			BMenuField*			fTypeField;
64			UserInterfaceListener* fListener;
65			BButton*			fWatchButton;
66			BButton*			fCancelButton;
67			SourceLanguage*		fLanguage;
68};
69
70#endif // WATCH_PROMPT_WINDOW_H
71