1bab183a2SStephan Aßmus /* 2*64279352SZardshard * Copyright 2006-2007, 2023, Haiku. 3bab183a2SStephan Aßmus * Distributed under the terms of the MIT License. 4bab183a2SStephan Aßmus * 5bab183a2SStephan Aßmus * Authors: 6bab183a2SStephan Aßmus * Stephan Aßmus <superstippi@gmx.de> 7*64279352SZardshard * Zardshard 8bab183a2SStephan Aßmus */ 9bab183a2SStephan Aßmus #ifndef TRANSFORMER_LIST_VIEW_H 10bab183a2SStephan Aßmus #define TRANSFORMER_LIST_VIEW_H 11bab183a2SStephan Aßmus 12325a6253SAxel Dörfler 13*64279352SZardshard #include "Container.h" 14bab183a2SStephan Aßmus #include "ListViews.h" 15*64279352SZardshard #include "IconBuild.h" 16bab183a2SStephan Aßmus 17325a6253SAxel Dörfler 1884153c7aSStephan Aßmus class BMenu; 19098eaec6SZardshard class BMenuItem; 20bab183a2SStephan Aßmus class CommandStack; 21bab183a2SStephan Aßmus class TransformerItem; 22bab183a2SStephan Aßmus class Selection; 23bab183a2SStephan Aßmus 2425dc253dSIngo Weinhold _BEGIN_ICON_NAMESPACE 25*64279352SZardshard class Shape; 26325a6253SAxel Dörfler class Transformer; 2725dc253dSIngo Weinhold _END_ICON_NAMESPACE 2825dc253dSIngo Weinhold 29325a6253SAxel Dörfler 30bab183a2SStephan Aßmus class TransformerListView : public SimpleListView, 31*64279352SZardshard public ContainerListener<Transformer> { 32bab183a2SStephan Aßmus public: 33bab183a2SStephan Aßmus TransformerListView(BRect frame, 34bab183a2SStephan Aßmus const char* name, 35bab183a2SStephan Aßmus BMessage* selectionMessage = NULL, 36bab183a2SStephan Aßmus BHandler* target = NULL); 37bab183a2SStephan Aßmus virtual ~TransformerListView(); 38bab183a2SStephan Aßmus 39bab183a2SStephan Aßmus // SimpleListView interface 4084153c7aSStephan Aßmus virtual void Draw(BRect updateRect); 4184153c7aSStephan Aßmus 42bab183a2SStephan Aßmus virtual void SelectionChanged(); 43bab183a2SStephan Aßmus 4484153c7aSStephan Aßmus virtual void MessageReceived(BMessage* message); 4584153c7aSStephan Aßmus 46bab183a2SStephan Aßmus virtual void MakeDragMessage(BMessage* message) const; 47bab183a2SStephan Aßmus 48bab183a2SStephan Aßmus virtual void MoveItems(BList& items, int32 toIndex); 49bab183a2SStephan Aßmus virtual void CopyItems(BList& items, int32 toIndex); 5061b0e9e3SStephan Aßmus virtual void RemoveItemList(BList& items); 51bab183a2SStephan Aßmus 52bab183a2SStephan Aßmus virtual BListItem* CloneItem(int32 atIndex) const; 53bab183a2SStephan Aßmus 540e1ba39fSStephan Aßmus virtual int32 IndexOfSelectable(Selectable* selectable) const; 550e1ba39fSStephan Aßmus virtual Selectable* SelectableFor(BListItem* item) const; 560e1ba39fSStephan Aßmus 57*64279352SZardshard // ContainerListener<Transformer> interface 58*64279352SZardshard virtual void ItemAdded(Transformer* transformer, int32 index); 59*64279352SZardshard virtual void ItemRemoved(Transformer* transformer); 604215c452SStephan Aßmus 61bab183a2SStephan Aßmus // TransformerListView 6284153c7aSStephan Aßmus void SetMenu(BMenu* menu); 63bab183a2SStephan Aßmus void SetShape(Shape* shape); 64bab183a2SStephan Aßmus void SetCommandStack(CommandStack* stack); 65bab183a2SStephan Aßmus 66bab183a2SStephan Aßmus private: 674215c452SStephan Aßmus bool _AddTransformer( 684215c452SStephan Aßmus Transformer* transformer, int32 index); 694215c452SStephan Aßmus bool _RemoveTransformer( 704215c452SStephan Aßmus Transformer* transformer); 71bab183a2SStephan Aßmus 724215c452SStephan Aßmus TransformerItem* _ItemForTransformer( 734215c452SStephan Aßmus Transformer* transformer) const; 74bab183a2SStephan Aßmus 7584153c7aSStephan Aßmus void _UpdateMenu(); 7684153c7aSStephan Aßmus 77bab183a2SStephan Aßmus BMessage* fMessage; 78bab183a2SStephan Aßmus 79bab183a2SStephan Aßmus Shape* fShape; 80bab183a2SStephan Aßmus CommandStack* fCommandStack; 8184153c7aSStephan Aßmus 8284153c7aSStephan Aßmus BMenu* fMenu; 83098eaec6SZardshard BMenuItem* fContourMI; 84098eaec6SZardshard BMenuItem* fStrokeMI; 85bab183a2SStephan Aßmus }; 86bab183a2SStephan Aßmus 87bab183a2SStephan Aßmus #endif // TRANSFORMER_LIST_VIEW_H 88