xref: /haiku/src/apps/icon-o-matic/generic/selection/Selection.h (revision 128277c969aa806add78941cd2972754c37a1572)
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