xref: /haiku/src/apps/icon-o-matic/generic/gui/stateview/MultipleManipulatorState.h (revision 7c4b3726d9477810a630f9c0d0604a36473df559)
1128277c9SStephan Aßmus /*
2*7c4b3726SStephan Aßmus  * Copyright 2006-2007, Haiku.
3128277c9SStephan Aßmus  * Distributed under the terms of the MIT License.
4128277c9SStephan Aßmus  *
5128277c9SStephan Aßmus  * Authors:
6128277c9SStephan Aßmus  *		Stephan Aßmus <superstippi@gmx.de>
7128277c9SStephan Aßmus  */
8128277c9SStephan Aßmus 
9128277c9SStephan Aßmus #ifndef MULTIPLE_MANIPULATOR_STATE_H
10128277c9SStephan Aßmus #define MULTIPLE_MANIPULATOR_STATE_H
11128277c9SStephan Aßmus 
12128277c9SStephan Aßmus #include <List.h>
13128277c9SStephan Aßmus 
14128277c9SStephan Aßmus #include "ViewState.h"
15128277c9SStephan Aßmus 
16128277c9SStephan Aßmus class Manipulator;
17128277c9SStephan Aßmus 
18128277c9SStephan Aßmus class MultipleManipulatorState : public ViewState {
19128277c9SStephan Aßmus  public:
20128277c9SStephan Aßmus 								MultipleManipulatorState(StateView* view);
21128277c9SStephan Aßmus 	virtual						~MultipleManipulatorState();
22128277c9SStephan Aßmus 
23128277c9SStephan Aßmus 	// ViewState interface
24128277c9SStephan Aßmus 	virtual	void				Init();
25128277c9SStephan Aßmus 	virtual	void				Cleanup();
26128277c9SStephan Aßmus 
27128277c9SStephan Aßmus 	virtual	void				Draw(BView* into, BRect updateRect);
28128277c9SStephan Aßmus 	virtual	bool				MessageReceived(BMessage* message,
29128277c9SStephan Aßmus 												Command** _command);
30128277c9SStephan Aßmus 
31128277c9SStephan Aßmus 	virtual	void				MouseDown(BPoint where,
32128277c9SStephan Aßmus 										  uint32 buttons,
33128277c9SStephan Aßmus 										  uint32 clicks);
34128277c9SStephan Aßmus 
35128277c9SStephan Aßmus 	virtual	void				MouseMoved(BPoint where,
36128277c9SStephan Aßmus 										   uint32 transit,
37128277c9SStephan Aßmus 										   const BMessage* dragMessage);
38128277c9SStephan Aßmus 	virtual	Command*			MouseUp();
39128277c9SStephan Aßmus 
40128277c9SStephan Aßmus 	virtual	void				ModifiersChanged(uint32 modifiers);
41128277c9SStephan Aßmus 
42128277c9SStephan Aßmus 	virtual	bool				HandleKeyDown(uint32 key, uint32 modifiers,
43128277c9SStephan Aßmus 											  Command** _command);
44128277c9SStephan Aßmus 	virtual	bool				HandleKeyUp(uint32 key, uint32 modifiers,
45128277c9SStephan Aßmus 											Command** _command);
46128277c9SStephan Aßmus 
47*7c4b3726SStephan Aßmus 	virtual	bool				UpdateCursor();
48*7c4b3726SStephan Aßmus 
49128277c9SStephan Aßmus 	// MultipleManipulatorState
50128277c9SStephan Aßmus 			bool				AddManipulator(Manipulator* manipulator);
51128277c9SStephan Aßmus 			Manipulator*		RemoveManipulator(int32 index);
52128277c9SStephan Aßmus 			void				DeleteManipulators();
53128277c9SStephan Aßmus 
54128277c9SStephan Aßmus 			int32				CountManipulators() const;
55128277c9SStephan Aßmus 			Manipulator*		ManipulatorAt(int32 index) const;
56128277c9SStephan Aßmus 			Manipulator*		ManipulatorAtFast(int32 index) const;
57128277c9SStephan Aßmus 
58128277c9SStephan Aßmus  private:
590e1ba39fSStephan Aßmus 			void				_UpdateCursor();
60f4bd80a2SStephan Aßmus 			void				_ShowContextMenu(BPoint where);
61f4bd80a2SStephan Aßmus 
620e1ba39fSStephan Aßmus 
63128277c9SStephan Aßmus 			BList				fManipulators;
64128277c9SStephan Aßmus 			Manipulator*		fCurrentManipulator;
65128277c9SStephan Aßmus 			Manipulator*		fPreviousManipulator;
66128277c9SStephan Aßmus };
67128277c9SStephan Aßmus 
68128277c9SStephan Aßmus #endif // MULTIPLE_MANIPULATOR_STATE_H
69