1 #ifndef __creaImageIOWxTreeView_h_INCLUDED__
2 #define __creaImageIOWxTreeView_h_INCLUDED__
6 #include <creaImageIOTreeView.h>
9 #include <wx/listctrl.h>
10 #include <wx/splitter.h>
19 //=====================================================================
21 //=====================================================================
22 /// Abstract class that handles the view of a Tree through its TreeHandler
23 class WxTreeView : public wxPanel, virtual public TreeView
27 WxTreeView(TreeHandler*, GimmickView*,
28 wxWindow* parent, const wxWindowID id);
29 /// Virtual destructor
30 virtual ~WxTreeView();
33 /// Updates the view of a level given the selected items of upper level
34 virtual void UpdateLevel( int );
36 ///Removes selected nodes on given level
37 virtual void RemoveSelected( int );
39 /// Callback for selection change
40 void OnSelectedChanged(wxListEvent& event);
42 /// Callback for column click
43 void OnColClick(wxListEvent& event);
45 /// Callback when the user needs the items sorted
46 void OnPopupSort(wxCommandEvent& event);
48 ///Callback when the user need the items filtered
49 void OnPopupFilter(wxCommandEvent& event);
51 ///Callback on mouse click
52 void OnMouseClick(wxMouseEvent& event);
56 /// The struct holding the data for one level
57 /// Holds the wx control and other data
58 /// such as the vector of attribute keys corresponding to the columns
63 wxSplitterWindow* wxSplitter;
64 std::vector<std::string> key;
66 /// The vector of levels : one for each level of the tree
67 std::vector<LevelType> mLevelList;
69 /// return the wxListCtrl of one level
70 wxListCtrl* GetCtrl(int l) { return mLevelList[l].wxCtrl; }
71 /// return the wxSplitter of one level
72 wxSplitterWindow* GetSplitter(int l) { return mLevelList[l].wxSplitter; }
73 //Returns the maximum number of levels
74 int GetNumberOfLevels(){ return mLevelList.size(); }
75 /// Gets the user selected data from the level passed as a parameter
76 std::vector<tree::Node*> GetSelected(int level);
77 ///Validates the selected images
78 void ValidateSelectedImages(bool isSelection);
79 ///Gets selected filenames
80 void GetSelectedAsString(std::vector<std::string>&s);
81 /// Gets the next nodes on the list, be it up(true) or down(false).
82 void GetNodes(std::vector<tree::Node*>& nodes, bool direction);
83 /// Updates the view of a level given the selected items of upper level
85 virtual void RecursiveUpdateLevel( int );
86 ///Sets the color of a selected item
87 void SetColor(int level, int item);
88 ///Creates the color palette for the first level
89 void CreateColorPalette();
90 ///Selects the lowest level (images)
91 void SelectLowerLevel();
93 void OnSort(int level);
97 /// Currently Selected Column
99 ///Boolean that defines the direction of the organization
100 ///True is ascending order and false is descending
102 ///The last selected item on the list
104 ///The last selection of nodes (for every level, except the last)
105 std::vector<tree::Node*> mSelected;
106 ///The last selection of nodes (for the last level)
107 std::vector<tree::Node*> mLastLevelSelected;
109 typedef std::map<tree::Node*,wxColour> ColorMap;
110 typedef std::pair<tree::Node*,wxColour> NodeColorPair;
112 ///Initial color palette
113 std::vector<std::string> mColorPalette;
114 ///Boolean declaring if the last level selection has been made
118 wxObject* senderCtrl;
123 DECLARE_EVENT_TABLE()
125 // EO class WxTreeView
126 //=====================================================================
130 } // EO namespace creaImageIO
133 #endif // USE_WIDGETS