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