xref: /haiku/src/apps/debugger/user_interface/gui/team_settings_window/SignalsConfigView.h (revision cbe0a0c436162d78cc3f92a305b64918c839d079)
1 /*
2  * Copyright 2013-2015, Rene Gollent, rene@gollent.com.
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef SIGNALS_CONFIG_VIEW_H
6 #define SIGNALS_CONFIG_VIEW_H
7 
8 
9 #include <GroupView.h>
10 
11 #include "table/Table.h"
12 
13 #include "Team.h"
14 
15 #include "types/Types.h"
16 
17 
18 class BButton;
19 class BMenuField;
20 class SignalDispositionEditWindow;
21 class UserInterfaceListener;
22 
23 
24 class SignalsConfigView : public BGroupView, private Team::Listener,
25 	private TableListener {
26 public:
27 								SignalsConfigView(::Team* team,
28 									UserInterfaceListener* listener);
29 
30 								~SignalsConfigView();
31 
32 	static	SignalsConfigView* 	Create(::Team* team,
33 									UserInterfaceListener* listener);
34 									// throws
35 
36 	virtual	void				AttachedToWindow();
37 	virtual	void				MessageReceived(BMessage* message);
38 
39 private:
40 			class SignalDispositionModel;
41 
42 private:
43 	// Team::Listener
44 	virtual	void				CustomSignalDispositionChanged(
45 									const Team::CustomSignalDispositionEvent&
46 										event);
47 	virtual	void				CustomSignalDispositionRemoved(
48 									const Team::CustomSignalDispositionEvent&
49 										event);
50 
51 	// TableListener
52 	virtual	void				TableSelectionChanged(Table* table);
53 
54 			void	 			_Init();
55 
56 			void				_UpdateSignalConfigState();
57 									// must be called with team lock held
58 
59 private:
60 			::Team*				fTeam;
61 			UserInterfaceListener* fListener;
62 			BMenuField*			fDefaultSignalDisposition;
63 			Table*				fDispositionExceptions;
64 			BButton*			fAddDispositionButton;
65 			BButton*			fEditDispositionButton;
66 			BButton*			fRemoveDispositionButton;
67 			SignalDispositionModel* fDispositionModel;
68 			SignalDispositionEditWindow* fEditWindow;
69 };
70 
71 
72 #endif // SIGNALS_CONFIG_VIEW_H
73