]> Creatis software - creaImageIO.git/blob - src2/creaImageIOWxTreeView.h
Fixed popup position when enlarging.
[creaImageIO.git] / src2 / creaImageIOWxTreeView.h
1 #ifndef __creaImageIOWxTreeView_h_INCLUDED__
2 #define __creaImageIOWxTreeView_h_INCLUDED__
3
4 #ifdef USE_WXWIDGETS
5
6 #include <creaImageIOTreeView.h>
7 #include <creaWx.h>
8
9 #include <wx/listctrl.h>
10 #include <wx/splitter.h>
11 //#include <vector>
12
13 namespace creaImageIO
14 {
15
16   /**
17    * \ingroup View
18    */
19   //=====================================================================
20   
21   //=====================================================================
22   /// Abstract class that handles the view of a Tree through its TreeHandler
23   class WxTreeView : public wxPanel, virtual public TreeView
24     {
25     public:
26       /// Ctor
27       WxTreeView(TreeHandler*, GimmickView*, 
28                  wxWindow* parent, const wxWindowID id);
29       /// Virtual destructor
30       virtual ~WxTreeView();
31
32       
33       /// Updates the view of a level given the selected items of upper level
34       virtual void UpdateLevel( int );
35
36           ///Removes selected nodes on given level
37           virtual void RemoveSelected( int );
38
39           /// Callback for selection change
40       void OnSelectedChanged(wxListEvent& event);
41
42           /// Callback for column click
43       void OnColClick(wxListEvent& event);
44
45           /// Callback when the user needs the items sorted
46           void OnPopupSort(wxCommandEvent& event);
47
48           ///Callback when the user need the items filtered
49            void OnPopupFilter(wxCommandEvent& event);
50  
51
52     private:
53       /// The struct holding the data for one level
54       /// Holds the wx control and other data
55       /// such as the vector of attribute keys corresponding to the columns
56       struct LevelType
57       {
58         // The List Control
59         wxListCtrl* wxCtrl;
60         wxSplitterWindow* wxSplitter;
61         std::vector<std::string> key;
62       };
63       /// The vector of levels : one for each level of the tree      
64       std::vector<LevelType> mLevelList;
65       
66       /// return the wxListCtrl of one level
67       wxListCtrl* GetCtrl(int l) { return mLevelList[l].wxCtrl; }
68       /// return the wxSplitter of one level
69       wxSplitterWindow* GetSplitter(int l) { return mLevelList[l].wxSplitter; }
70           //Returns the maximum number of levels
71           int GetNumberOfLevels(){ return mLevelList.size(); }
72           /// Gets the user selected data from the level passed as a parameter
73       std::vector<tree::Node*> GetSelected(int level);
74           ///Validates the selected images
75       void ValidateSelectedImages(bool isSelection);   
76           ///Gets selected filenames
77           void GetSelectedAsString(std::vector<std::string>&s);
78             /// Gets the next nodes on the list, be it up(true) or down(false).
79       void GetNodes(std::vector<tree::Node*>& nodes, bool direction);
80       /// Updates the view of a level given the selected items of upper level
81       /// Recursive method
82       virtual void RecursiveUpdateLevel( int );
83           ///Sets the color of a selected item
84           void SetColor(int level, int item);
85           ///Creates the color palette for the first level
86           void CreateColorPalette();
87           ///Selects the lowest level (images)
88           void SelectLowerLevel();
89           ///Sorts items
90           void OnSort(int level);
91
92
93
94       /// Currently Selected Column
95           int mColumnSelected;
96           ///Boolean that defines the direction of the organization
97           ///True is ascending order and false is descending
98           bool mDirection;
99           ///The last selected item on the list
100           long mLastSelected;
101           ///The last selection of nodes (for every level, except the last)
102           std::vector<tree::Node*> mSelected;
103           ///The last selection of nodes (for the last level)
104           std::vector<tree::Node*> mLastLevelSelected;
105           ///The color map
106           typedef std::map<tree::Node*,wxColour> ColorMap;
107           typedef std::pair<tree::Node*,wxColour> NodeColorPair;
108       ColorMap mColorMap;
109           ///Initial color palette
110           std::vector<std::string> mColorPalette;
111           ///Boolean declaring if the last level selection has been made
112           bool mSelectionMade;
113           bool mProcess;
114           wxMenu* menu;
115           wxObject* senderCtrl;
116           int mAscendingID;
117           int mDescendingID;
118           int mFilterID;
119
120       DECLARE_EVENT_TABLE()
121     };
122     // EO class WxTreeView
123     //=====================================================================
124
125
126
127 } // EO namespace creaImageIO
128
129
130 #endif // USE_WIDGETS
131 // EOF
132 #endif