#ifndef __creaImageIOWxTreeView_h_INCLUDED__ #define __creaImageIOWxTreeView_h_INCLUDED__ #ifdef USE_WXWIDGETS #include #include #include #include //#include namespace creaImageIO { /** * \ingroup View */ //===================================================================== //===================================================================== /// Abstract class that handles the view of a Tree through its TreeHandler class WxTreeView : public wxPanel, virtual public TreeView { public: /// Ctor WxTreeView(TreeHandler*, GimmickView*, wxWindow* parent, const wxWindowID id); /// Virtual destructor virtual ~WxTreeView(); /// Updates the view of a level given the selected items of upper level virtual void UpdateLevel( int ); ///Removes selected nodes on given level virtual void RemoveSelected( int ); /// Callback for selection change void OnSelectedChanged(wxListEvent& event); /// Callback for column click void OnColClick(wxListEvent& event); /// Callback when the user needs the items sorted void OnPopupSort(wxCommandEvent& event); ///Callback when the user need the items filtered void OnPopupFilter(wxCommandEvent& event); private: /// The struct holding the data for one level /// Holds the wx control and other data /// such as the vector of attribute keys corresponding to the columns struct LevelType { // The List Control wxListCtrl* wxCtrl; wxSplitterWindow* wxSplitter; std::vector key; }; /// The vector of levels : one for each level of the tree std::vector mLevelList; /// return the wxListCtrl of one level wxListCtrl* GetCtrl(int l) { return mLevelList[l].wxCtrl; } /// return the wxSplitter of one level wxSplitterWindow* GetSplitter(int l) { return mLevelList[l].wxSplitter; } //Returns the maximum number of levels int GetNumberOfLevels(){ return mLevelList.size(); } /// Gets the user selected data from the level passed as a parameter std::vector GetSelected(int level); ///Validates the selected images void ValidateSelectedImages(bool isSelection); ///Gets selected filenames void GetSelectedAsString(std::vector&s); /// Gets the next nodes on the list, be it up(true) or down(false). void GetNodes(std::vector& nodes, bool direction); /// Updates the view of a level given the selected items of upper level /// Recursive method virtual void RecursiveUpdateLevel( int ); ///Sets the color of a selected item void SetColor(int level, int item); ///Creates the color palette for the first level void CreateColorPalette(); ///Selects the lowest level (images) void SelectLowerLevel(); ///Sorts items void OnSort(int level); /// Currently Selected Column int mColumnSelected; ///Boolean that defines the direction of the organization ///True is ascending order and false is descending bool mDirection; ///The last selected item on the list long mLastSelected; ///The last selection of nodes (for every level, except the last) std::vector mSelected; ///The last selection of nodes (for the last level) std::vector mLastLevelSelected; ///The color map typedef std::map ColorMap; typedef std::pair NodeColorPair; ColorMap mColorMap; ///Initial color palette std::vector mColorPalette; ///Boolean declaring if the last level selection has been made bool mSelectionMade; bool mProcess; wxMenu* menu; wxObject* senderCtrl; int mAscendingID; int mDescendingID; int mFilterID; DECLARE_EVENT_TABLE() }; // EO class WxTreeView //===================================================================== } // EO namespace creaImageIO #endif // USE_WIDGETS // EOF #endif