#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); 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(); ///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 ); /// 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 std::vector mSelected; ///The color map typedef std::map ColorMap; typedef std::pair NodeColorPair; ColorMap mColorMap; DECLARE_EVENT_TABLE() }; // EO class WxTreeView //===================================================================== } // EO namespace creaImageIO #endif // USE_WIDGETS // EOF #endif