1327952Sdim/*
2193326Sed * Copyright 2012-2014, Rene Gollent, rene@gollent.com.
3353358Sdim * Distributed under the terms of the MIT License.
4353358Sdim */
5353358Sdim#ifndef WATCH_PROMPT_WINDOW_H
6193326Sed#define WATCH_PROMPT_WINDOW_H
7193326Sed
8327952Sdim
9239462Sdim#include <Window.h>
10341825Sdim
11327952Sdim#include "ExpressionInfo.h"
12193326Sed#include "types/Types.h"
13193326Sed
14193326Sed
15193326Sedclass Architecture;
16193326Sedclass BMenuField;
17360784Sdimclass BTextControl;
18327952Sdimclass SourceLanguage;
19327952Sdimclass Watchpoint;
20193326Sedclass UserInterfaceListener;
21327952Sdim
22234353Sdim
23198893Srdivackyclass WatchPromptWindow : public BWindow, private ExpressionInfo::Listener
24327952Sdim{
25327952Sdimpublic:
26327952Sdim								WatchPromptWindow(Architecture* architecture,
27327952Sdim									target_addr_t address, uint32 type,
28327952Sdim									int32 length,
29327952Sdim									UserInterfaceListener* listener);
30327952Sdim
31194179Sed								~WatchPromptWindow();
32327952Sdim
33327952Sdim	static	WatchPromptWindow*	Create(Architecture* architecture,
34327952Sdim									target_addr_t address, uint32 type,
35234353Sdim									int32 length,
36296417Sdim									UserInterfaceListener* listener);
37327952Sdim									// throws
38327952Sdim
39327952Sdim
40327952Sdim	virtual	void				MessageReceived(BMessage* message);
41309124Sdim
42193326Sed	virtual	void				Show();
43193326Sed
44193326Sed	// ExpressionInfo::Listener
45296417Sdim	virtual	void				ExpressionEvaluated(ExpressionInfo* info,
46193326Sed									status_t result, ExpressionResult* value);
47193326Sed
48327952Sdimprivate:
49327952Sdim			void	 			_Init();
50327952Sdim
51193326Sed
52327952Sdimprivate:
53193326Sed			target_addr_t		fInitialAddress;
54327952Sdim			uint32				fInitialType;
55360784Sdim			int32				fInitialLength;
56327952Sdim			Architecture*		fArchitecture;
57261991Sdim			target_addr_t		fRequestedAddress;
58261991Sdim			int32				fRequestedLength;
59193326Sed			BTextControl*		fAddressInput;
60341825Sdim			BTextControl*		fLengthInput;
61327952Sdim			ExpressionInfo*		fAddressExpressionInfo;
62360784Sdim			ExpressionInfo*		fLengthExpressionInfo;
63360784Sdim			BMenuField*			fTypeField;
64194179Sed			UserInterfaceListener* fListener;
65310194Sdim			BButton*			fWatchButton;
66310194Sdim			BButton*			fCancelButton;
67341825Sdim			SourceLanguage*		fLanguage;
68239462Sdim};
69296417Sdim
70314564Sdim#endif // WATCH_PROMPT_WINDOW_H
71314564Sdim