1*128277c9SStephan Aßmus /* 2*128277c9SStephan Aßmus * Copyright 2006, Haiku. 3*128277c9SStephan Aßmus * Distributed under the terms of the MIT License. 4*128277c9SStephan Aßmus * 5*128277c9SStephan Aßmus * Authors: 6*128277c9SStephan Aßmus * Stephan Aßmus <superstippi@gmx.de> 7*128277c9SStephan Aßmus */ 8*128277c9SStephan Aßmus 9*128277c9SStephan Aßmus #ifndef SELECTION_H 10*128277c9SStephan Aßmus #define SELECTION_H 11*128277c9SStephan Aßmus 12*128277c9SStephan Aßmus #include <List.h> 13*128277c9SStephan Aßmus 14*128277c9SStephan Aßmus #include "Observable.h" 15*128277c9SStephan Aßmus 16*128277c9SStephan Aßmus class Selectable; 17*128277c9SStephan Aßmus 18*128277c9SStephan Aßmus class Selection : public Observable { 19*128277c9SStephan Aßmus public: 20*128277c9SStephan Aßmus Selection(); 21*128277c9SStephan Aßmus virtual ~Selection(); 22*128277c9SStephan Aßmus 23*128277c9SStephan Aßmus // modify selection 24*128277c9SStephan Aßmus bool Select(Selectable* object, 25*128277c9SStephan Aßmus bool extend = false); 26*128277c9SStephan Aßmus void Deselect(Selectable* object); 27*128277c9SStephan Aßmus void DeselectAll(); 28*128277c9SStephan Aßmus 29*128277c9SStephan Aßmus // query selection 30*128277c9SStephan Aßmus Selectable* SelectableAt(int32 index) const; 31*128277c9SStephan Aßmus Selectable* SelectableAtFast(int32 index) const; 32*128277c9SStephan Aßmus int32 CountSelected() const; 33*128277c9SStephan Aßmus 34*128277c9SStephan Aßmus private: 35*128277c9SStephan Aßmus void _DeselectAllExcept(Selectable* object); 36*128277c9SStephan Aßmus 37*128277c9SStephan Aßmus BList fSelected; 38*128277c9SStephan Aßmus }; 39*128277c9SStephan Aßmus 40*128277c9SStephan Aßmus #endif // SELECTION_H 41