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();
39 ///Returns the last selected level
40 virtual unsigned int GetLastSelectedLevel(){return mLastLevel;}
42 /// Callback for item selection
43 void OnItemSelected(wxListEvent& event);
45 /// Callback for item deselection
46 void OnItemDeSelected(wxListEvent& event);
48 /// Callback for column click
49 void OnColClick(wxListEvent& event);
51 /// Callback when the user needs the items sorted
52 void OnPopupSort(wxCommandEvent& event);
54 ///Callback when the user need the items filtered
55 void OnPopupFilter(wxCommandEvent& event);
57 ///Callback on mouse click
58 void OnMouseClick(wxMouseEvent& event);
60 /// Actual processing of item selection/deselection
61 /// Called by OnItemSelected and OnItemDeSelected
64 /// The struct holding the data for one level
65 /// Holds the wx control and other data
66 /// such as the vector of attribute keys corresponding to the columns
71 wxSplitterWindow* wxSplitter;
72 std::vector<std::string> key;
73 // The vector of currently selected nodes of the level
74 std::vector<tree::Node*> Selected;
75 // True iff the vector Selected is up to date
76 bool SelectedUpToDate;
77 // The column used for sorting
78 unsigned int SortColumn;
79 ///Boolean that defines the direction of the sort
80 ///True is ascending order and false is descending
84 /// The vector of levels : one for each level of the tree
85 std::vector<LevelType> mLevelList;
87 /// return the wxListCtrl of one level
88 wxListCtrl* GetCtrl(int l) { return mLevelList[l].wxCtrl; }
89 /// return the wxSplitter of one level
90 wxSplitterWindow* GetSplitter(int l) { return mLevelList[l].wxSplitter; }
91 //Returns the maximum number of levels
92 int GetNumberOfLevels(){ return mLevelList.size(); }
93 /// Gets the user selected data from the level passed as a parameter
94 /// Updates the vector if necessary
95 const std::vector<tree::Node*>& GetSelected(int level);
96 /// Set the bool SelectedUpToDate for level l
97 void SetSelectedUpToDate(int l, bool v) { mLevelList[l].SelectedUpToDate = v; }
98 /// Get the bool SelectedUpToDate for level l
99 bool GetSelectedUpToDate(int l) { return mLevelList[l].SelectedUpToDate; }
100 ///Validates the selected images
101 void ValidateSelectedImages(bool isSelection);
102 ///Gets selected filenames
103 void GetSelectedAsString(std::vector<std::string>&s);
104 /// Gets the next nodes on the list, be it up(true) or down(false).
105 void GetNodes(std::vector<tree::Node*>& nodes, bool direction);
106 /// Updates the view of a level given the selected items of upper level
108 virtual void RecursiveUpdateLevel( int );
109 ///Sets the color of a selected item
110 void SetColor(int level, int item);
111 ///Creates the color palette for the first level
112 void CreateColorPalette();
113 ///Selects all the elements of a level
114 void SelectAll(int level);
115 ///UnSelects all the elements of a level
116 void UnSelectAll(int level);
118 void OnKeyDown(wxListEvent &event);
120 void SortLevel(int level);
122 /// Currently Selected Column
124 ///The last selected item on the list
127 typedef std::map<tree::Node*,wxColour> ColorMap;
128 typedef std::pair<tree::Node*,wxColour> NodeColorPair;
130 ///Initial color palette
131 std::vector<std::string> mColorPalette;
134 wxObject* senderCtrl;
138 unsigned int mLastLevel;
140 // If set to true then OnSelectedChanged returns immediately.
141 // Used to do avoid useless process during multiple selections
143 bool mIgnoreSelectedChanged;
146 DECLARE_EVENT_TABLE()
148 // EO class WxTreeView
149 //=====================================================================
153 } // EO namespace creaImageIO
156 #endif // USE_WIDGETS