1 ////////////////////////////////////////////////////////////////////////// 2 // 3 // pgAdmin III - PostgreSQL Tools 4 // 5 // Copyright (C) 2002 - 2016, The pgAdmin Development Team 6 // This software is released under the PostgreSQL Licence 7 // 8 // gqbViewPanels.h - All panels used by GQB 9 // 10 ////////////////////////////////////////////////////////////////////////// 11 12 #ifndef GQBVIEWPANELS_H 13 #define GQBVIEWPANELS_H 14 15 #include <wx/minifram.h> 16 17 // App headers 18 #include "gqb/gqbViewController.h" 19 #include "gqb/gqbGridProjTable.h" 20 #include "gqb/gqbGridRestTable.h" 21 #include "gqb/gqbGridOrderTable.h" 22 #include "gqb/gqbGridJoinTable.h" 23 24 enum gridButtons 25 { 26 GQB_COLS_UP_BUTTON_ID, 27 GQB_COLS_UP_TOP_BUTTON_ID, 28 GQB_COLS_DOWN_BUTTON_ID, 29 GQB_COLS_DOWN_BOTTOM_BUTTON_ID, 30 GQB_COLS_ADD_BUTTON_ID, 31 GQB_COLS_DROP_BUTTON_ID, 32 33 GQB_JOIN_COLS_ADD_BUTTON_ID, 34 GQB_JOIN_COLS_DELETE_BUTTON_ID, 35 36 GQB_ORDER_DROP_BUTTON_ID, 37 GQB_ORDER_DROP_ALL_BUTTON_ID, 38 GQB_ORDER_ADD_ALL_BUTTON_ID, 39 GQB_ORDER_ADD_BUTTON_ID, 40 GQB_ORDER_UP_BUTTON_ID, 41 GQB_ORDER_UP_TOP_BUTTON_ID, 42 GQB_ORDER_DOWN_BUTTON_ID, 43 GQB_ORDER_DOWN_BOTTOM_BUTTON_ID 44 }; 45 46 // 47 // Projection Panel 48 // 49 50 class gqbGridPanel: public wxPanel 51 { 52 public: 53 gqbGridPanel(wxWindow *parent, wxWindowID id, gqbGridProjTable *gridModel); 54 ~gqbGridPanel(); 55 wxBitmapButton *buttonUp, *buttonDown, *buttonUpTop, *buttonDownBottom; 56 wxBitmap upBitmap, upTopBitmap, downBitmap, downBottomBitmap; 57 void SetGridColsSize(); 58 59 // Events for wxGrid 60 void OnGridSelectCell( wxGridEvent &ev ); 61 void OnGridRangeSelected( wxGridRangeSelectEvent &ev ); 62 void OnButtonUp(wxCommandEvent &); 63 void OnButtonUpTop(wxCommandEvent &); 64 void OnButtonDown(wxCommandEvent &); 65 void OnButtonDownBottom(wxCommandEvent &); 66 67 private: 68 bool allowSelCells; 69 int selTop, selBottom; // Range Selection of wxGrid, -1 it's value not set. 70 wxGrid *colsGrid; // Columns Grid used for order of columns in sentence & single row functions 71 gqbGridProjTable *gModel; 72 DECLARE_EVENT_TABLE() 73 }; 74 75 // 76 // Panels reusable components 77 // 78 79 class gqbColsTree : public wxTreeCtrl 80 { 81 public: 82 gqbColsTree(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size, long style); 83 wxTreeItemId &createRoot(wxString &Name); getRootNode()84 wxTreeItemId &getRootNode() 85 { 86 return rootNode; 87 } 88 void refreshTree(gqbModel *model, gqbQueryObject *doNotInclude = NULL); 89 virtual void DeleteAllItems(); ~gqbColsTree()90 ~gqbColsTree() 91 { 92 DeleteAllItems(); 93 } 94 95 private: 96 wxTreeItemId rootNode; 97 }; 98 99 enum 100 { 101 QR_TREE_OK = 9100, 102 QR_TREE 103 }; 104 105 class gqbColsPopUp: public wxDialog 106 { 107 public: 108 gqbColsPopUp(wxWindow *parent, wxWindowID id, wxString title, wxPoint pos, const wxSize size); 109 virtual void refreshTree(gqbModel *_model); 110 void OnPopUpOKClick(wxCommandEvent &event); 111 void OnPopUpTreeClick(wxTreeEvent &event); 112 void OnPopUpTreeDoubleClick(wxTreeEvent &event); 113 void setEditText(wxString text); getEditText()114 wxString getEditText() 115 { 116 return editTree->GetValue(); 117 }; setUsedCell(wxGrid * grid,int row,int col)118 void setUsedCell(wxGrid *grid, int row, int col) 119 { 120 usedGrid = grid; 121 _row = row; 122 _col = col; 123 }; 124 void focus(); 125 126 protected: 127 int _row, _col; 128 wxGrid *usedGrid; 129 gqbColsTree *colsTree; 130 wxTextCtrl *editTree; 131 wxButton *buttonTree; 132 gqbModel *model; // Not owned shouldn't be deleted at this class 133 134 }; 135 136 class gqbJoinsPanel; 137 138 class gqbJoinsPopUp: public gqbColsPopUp 139 { 140 public: 141 gqbJoinsPopUp( 142 gqbJoinsPanel *parent, wxWindowID id, wxString title, wxPoint pos, 143 const wxSize size, gqbQueryJoin *_join, bool isSource, 144 gqbGridJoinTable *_gmodel); 145 void OnPopUpOKClick(wxCommandEvent &event); 146 void OnPopUpTreeClick(wxTreeEvent &event); 147 void OnPopUpTreeDoubleClick(wxTreeEvent &event); 148 149 // This should be called through OnPopUpOKClick & OnPopUpTreeDoubleClick 150 void updateJoin(); 151 152 virtual void refreshTree(gqbModel *_model); 153 154 private: 155 gqbQueryJoin *join; // Not owned, shouldn't be deletedat this class 156 gqbQueryObject *selectedTbl; //Not owned, shouldn't be deletedat this class 157 gqbColumn *selectedCol; //Not owned, shouldn't be deletedat this class 158 bool isSource; 159 gqbGridJoinTable *gModel; //Not owned, shouldn't be deletedat this class 160 }; 161 162 // 163 // Criterias Panel 164 // 165 166 class gqbCustomGrid: public wxGrid 167 { 168 public: 169 gqbCustomGrid(wxWindow *parent, wxWindowID id); 170 void ComboBoxEvent(wxGridEvent &event); 171 void RevertSel(); 172 173 private: 174 wxGridSelection *m_selTemp; 175 176 }; 177 178 class gqbCriteriaPanel: public wxPanel 179 { 180 public: 181 gqbCriteriaPanel(wxWindow *parent, gqbModel *_model, gqbGridRestTable *gridModel); 182 void OnCellLeftClick(wxGridEvent &ev); 183 void refreshTree(gqbModel *_model); 184 void OnButtonAdd(wxCommandEvent &); 185 void OnButtonDrop(wxCommandEvent &); 186 void SetGridColsSize(); 187 188 private: 189 wxBitmapButton *buttonAdd, *buttonDrop; 190 wxBitmap addBitmap, dropBitmap; 191 void showColsPopUp(int row, int col, wxPoint pos); 192 gqbGridRestTable *gModel; 193 wxGrid *restrictionsGrid; // Columns Grid used for order of columns in sentence & single row functions 194 gqbModel *model; // Not owned shouldn't be deleted at this class 195 gqbColsPopUp *colsPopUp; 196 DECLARE_EVENT_TABLE() 197 198 }; 199 200 class gqbJoinsPanel: public wxPanel 201 { 202 public: 203 gqbJoinsPanel(wxWindow *parent, gqbModel *_model, gqbGridJoinTable *_gmodel, gqbController *_controller); 204 void OnCellLeftClick(wxGridEvent &ev); 205 void refreshTree(gqbModel *_model); 206 void OnButtonAdd(wxCommandEvent &); 207 void OnButtonDrop(wxCommandEvent &); 208 void SetGridColsSize(); 209 void updateView(gqbQueryObject *tbl); 210 void selectJoin(gqbQueryJoin *join); 211 212 private: 213 wxBitmapButton *buttonAdd, *buttonDrop; 214 wxBitmap addBitmap, dropBitmap; 215 void showColsPopUp(int row, int col, wxPoint pos); 216 gqbCustomGrid *joinsGrid; 217 gqbModel *model; // Not owned shouldn't be deleted at this class 218 gqbJoinsPopUp *joinsPopUp; // It will be automatically deleted 219 gqbGridJoinTable *gModel; // Not owned shouldn't be deleted at this class 220 gqbController *controller; // Not owned shouldn't be deleted at this class 221 DECLARE_EVENT_TABLE() 222 223 }; 224 225 // 226 // Order by Panel 227 // 228 229 class gqbOrderPanel: public wxPanel 230 { 231 public: 232 gqbOrderPanel(wxWindow *parent, gqbGridOrderTable *gridTableLeft, gqbGridOrderTable *gridTableRight); 233 void SetGridColsSize(); 234 235 private: 236 bool allowSelCells; 237 void OnButtonUp(wxCommandEvent &); 238 void OnButtonUpTop(wxCommandEvent &); 239 void OnButtonDown(wxCommandEvent &); 240 void OnButtonDownBottom(wxCommandEvent &); 241 void OnButtonRemove(wxCommandEvent &); 242 void OnButtonRemoveAll(wxCommandEvent &); 243 void OnButtonAdd(wxCommandEvent &); 244 void OnButtonAddAll(wxCommandEvent &); 245 void OnGridSelectCell( wxGridEvent &ev ); 246 void OnGridRangeSelected( wxGridRangeSelectEvent &ev ); 247 void OnCellLeftClick(wxGridEvent &ev); 248 int selLeft, selRightTop, selRightBottom; 249 gqbGridOrderTable *tableLeft, *tableRight; 250 wxGrid *availableColumns, *usedColumns; 251 wxBitmapButton *buttonAdd, *buttonAddAll, *buttonRemove, *buttonRemoveAll; 252 wxBitmap addBitmap, addAllBitmap, removeBitmap, removeAllBitmap; 253 wxBitmapButton *buttonUp, *buttonDown, *buttonUpTop, *buttonDownBottom; 254 wxBitmap upBitmap, upTopBitmap, downBitmap, downBottomBitmap; 255 DECLARE_EVENT_TABLE() 256 }; 257 #endif 258 259