1bab183a2SStephan Aßmus /* 264279352SZardshard * 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> 764279352SZardshard * 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 1364279352SZardshard #include "Container.h" 14bab183a2SStephan Aßmus #include "ListViews.h" 1564279352SZardshard #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 2564279352SZardshard class Shape; 26325a6253SAxel Dörfler class Transformer; 2725dc253dSIngo Weinhold _END_ICON_NAMESPACE 2825dc253dSIngo Weinhold 29325a6253SAxel Dörfler 30bab183a2SStephan Aßmus class TransformerListView : public SimpleListView, 3164279352SZardshard public ContainerListener<Transformer> { 32bab183a2SStephan Aßmus public: 33*4b0dffe5SZardshard enum { 34*4b0dffe5SZardshard kSelectionArchiveCode = 'strn', 35*4b0dffe5SZardshard }; 36bab183a2SStephan Aßmus TransformerListView(BRect frame, 37bab183a2SStephan Aßmus const char* name, 38bab183a2SStephan Aßmus BMessage* selectionMessage = NULL, 39bab183a2SStephan Aßmus BHandler* target = NULL); 40bab183a2SStephan Aßmus virtual ~TransformerListView(); 41bab183a2SStephan Aßmus 42bab183a2SStephan Aßmus // SimpleListView interface 4384153c7aSStephan Aßmus virtual void Draw(BRect updateRect); 4484153c7aSStephan Aßmus 45bab183a2SStephan Aßmus virtual void SelectionChanged(); 46bab183a2SStephan Aßmus 4784153c7aSStephan Aßmus virtual void MessageReceived(BMessage* message); 4884153c7aSStephan Aßmus 49*4b0dffe5SZardshard virtual status_t ArchiveSelection(BMessage* into, bool deep = true) const; 50*4b0dffe5SZardshard virtual bool InstantiateSelection(const BMessage* archive, int32 dropIndex); 51bab183a2SStephan Aßmus 52bab183a2SStephan Aßmus virtual void MoveItems(BList& items, int32 toIndex); 53bab183a2SStephan Aßmus virtual void CopyItems(BList& items, int32 toIndex); 5461b0e9e3SStephan Aßmus virtual void RemoveItemList(BList& items); 55bab183a2SStephan Aßmus 56bab183a2SStephan Aßmus virtual BListItem* CloneItem(int32 atIndex) const; 57bab183a2SStephan Aßmus 580e1ba39fSStephan Aßmus virtual int32 IndexOfSelectable(Selectable* selectable) const; 590e1ba39fSStephan Aßmus virtual Selectable* SelectableFor(BListItem* item) const; 600e1ba39fSStephan Aßmus 6164279352SZardshard // ContainerListener<Transformer> interface 6264279352SZardshard virtual void ItemAdded(Transformer* transformer, int32 index); 6364279352SZardshard virtual void ItemRemoved(Transformer* transformer); 644215c452SStephan Aßmus 65bab183a2SStephan Aßmus // TransformerListView 6684153c7aSStephan Aßmus void SetMenu(BMenu* menu); 67bab183a2SStephan Aßmus void SetShape(Shape* shape); 68bab183a2SStephan Aßmus void SetCommandStack(CommandStack* stack); 69bab183a2SStephan Aßmus 70bab183a2SStephan Aßmus private: 714215c452SStephan Aßmus bool _AddTransformer( 724215c452SStephan Aßmus Transformer* transformer, int32 index); 734215c452SStephan Aßmus bool _RemoveTransformer( 744215c452SStephan Aßmus Transformer* transformer); 75bab183a2SStephan Aßmus 764215c452SStephan Aßmus TransformerItem* _ItemForTransformer( 774215c452SStephan Aßmus Transformer* transformer) const; 78bab183a2SStephan Aßmus 7984153c7aSStephan Aßmus void _UpdateMenu(); 8084153c7aSStephan Aßmus 81bab183a2SStephan Aßmus BMessage* fMessage; 82bab183a2SStephan Aßmus 83bab183a2SStephan Aßmus Shape* fShape; 84bab183a2SStephan Aßmus CommandStack* fCommandStack; 8584153c7aSStephan Aßmus 8684153c7aSStephan Aßmus BMenu* fMenu; 87098eaec6SZardshard BMenuItem* fContourMI; 88098eaec6SZardshard BMenuItem* fStrokeMI; 89c6c2c042SZardshard BMenuItem* fPerspectiveMI; 90bab183a2SStephan Aßmus }; 91bab183a2SStephan Aßmus 92bab183a2SStephan Aßmus #endif // TRANSFORMER_LIST_VIEW_H 93