00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef ROOT_TGTable
00012 #define ROOT_TGTable
00013
00014 #ifndef ROOT_TGCanvas
00015 #include "TGCanvas.h"
00016 #endif
00017 #ifndef ROOT_TGWidget
00018 #include "TGWidget.h"
00019 #endif
00020 #ifndef ROOT_TGTableHeader
00021 #include "TGTableHeader.h"
00022 #endif
00023
00024 class TGWindow;
00025 class TGString;
00026 class TGToolTip;
00027 class TGPicture;
00028 class TVirtualTableInterface;
00029 class TGTableCell;
00030 class TGTableHeader;
00031 class TGToolTip;
00032 class TGTableFrame;
00033 class TGTableHeaderFrame;
00034 class TGTextButton;
00035 class TGNumberEntryField;
00036 class TGLabel;
00037 class TGTextEntry;
00038 class TTableRange;
00039
00040 class TGTable : public TGCompositeFrame, public TGWidget {
00041
00042 protected:
00043 TObjArray *fRows;
00044 TObjArray *fRowHeaders;
00045 TObjArray *fColumnHeaders;
00046 TGTableHeader *fTableHeader;
00047 Bool_t fReadOnly;
00048 Pixel_t fSelectColor;
00049 Int_t fTMode;
00050 Bool_t fAllData;
00051 TTableRange *fCurrentRange;
00052 TTableRange *fDataRange;
00053 TTableRange *fGotoRange;
00054 TGTableFrame *fTableFrame;
00055 TGCanvas *fCanvas;
00056 UInt_t fCellWidth;
00057 UInt_t fCellHeight;
00058
00059
00060 TGTableHeaderFrame *fCHdrFrame;
00061 TGTableHeaderFrame *fRHdrFrame;
00062 TGHorizontalFrame *fRangeFrame;
00063 TGHorizontalFrame *fTopFrame;
00064 TGHorizontalFrame *fTopExtraFrame;
00065 TGHorizontalFrame *fBottomFrame;
00066 TGHorizontalFrame *fButtonFrame;
00067
00068
00069 TGTextButton *fNextButton;
00070 TGTextButton *fPrevButton;
00071 TGTextButton *fUpdateButton;
00072 TGTextButton *fGotoButton;
00073
00074
00075 TGLabel *fFirstCellLabel;
00076 TGLabel *fRangeLabel;
00077 TGTextEntry *fFirstCellEntry;
00078 TGTextEntry *fRangeEntry;
00079
00080 Pixel_t fOddRowBackground;
00081 Pixel_t fEvenRowBackground;
00082 Pixel_t fHeaderBackground;
00083
00084
00085
00086
00087
00088
00089
00090
00091 TList *fCellHintsList;
00092 TList *fRHdrHintsList;
00093 TList *fCHdrHintsList;
00094 TList *fMainHintsList;
00095
00096
00097
00098 virtual void Init();
00099
00100
00101 protected:
00102 TVirtualTableInterface *fInterface;
00103
00104 virtual void DoRedraw();
00105
00106 virtual void Expand(UInt_t nrows, UInt_t ncolumns);
00107 virtual void ExpandColumns(UInt_t ncolumns);
00108 virtual void ExpandRows(UInt_t nrows);
00109
00110 virtual UInt_t GetRHdrHeight() const;
00111 virtual UInt_t GetCHdrWidth() const;
00112
00113 virtual void Shrink(UInt_t nrows, UInt_t ncolumns);
00114 virtual void ShrinkColumns(UInt_t ncolumns);
00115 virtual void ShrinkRows(UInt_t nrows);
00116
00117 virtual void UpdateHeaders(EHeaderType type);
00118 virtual void SetInterface(TVirtualTableInterface *interface,
00119 UInt_t nrows = 50, UInt_t ncolumns = 20);
00120 virtual void ResizeTable(UInt_t nrows, UInt_t ncolumns);
00121
00122 virtual void UpdateRangeFrame();
00123
00124 public:
00125 TGTable(const TGWindow *p = 0, Int_t id = 0,
00126 TVirtualTableInterface *interface = 0, UInt_t nrows = 50,
00127 UInt_t ncolumns = 20);
00128 virtual ~TGTable();
00129
00130 virtual TObjArray *GetRow(UInt_t row);
00131 virtual TObjArray *GetColumn(UInt_t columns);
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148 virtual const TGTableCell* GetCell(UInt_t i, UInt_t j) const;
00149 virtual TGTableCell* GetCell(UInt_t i, UInt_t j);
00150
00151 virtual const TGTableCell* FindCell(TGString label) const;
00152 virtual TGTableCell* FindCell(TGString label);
00153
00154 virtual void Show();
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181 virtual void UpdateView();
00182
00183
00184 virtual UInt_t GetNTableRows() const;
00185 virtual UInt_t GetNDataRows() const;
00186 virtual UInt_t GetNTableColumns() const;
00187 virtual UInt_t GetNDataColumns() const;
00188 virtual UInt_t GetNTableCells() const;
00189 virtual UInt_t GetNDataCells() const;
00190 virtual const TTableRange *GetCurrentRange() const;
00191
00192 virtual TVirtualTableInterface *GetInterface() { return fInterface; }
00193
00194 virtual TGCanvas *GetCanvas() { return fCanvas; }
00195 virtual const TGTableHeaderFrame *GetRHdrFrame() { return fRHdrFrame; }
00196 virtual const TGTableHeaderFrame *GetCHdrFrame() { return fCHdrFrame; }
00197 virtual const TGTableHeader *GetRowHeader(const UInt_t row) const;
00198 virtual TGTableHeader *GetRowHeader(const UInt_t row);
00199 virtual const TGTableHeader *GetColumnHeader(const UInt_t column) const;
00200 virtual TGTableHeader *GetColumnHeader(const UInt_t column);
00201 virtual TGTableHeader *GetTableHeader();
00202
00203
00204
00205
00206
00207 virtual Pixel_t GetRowBackground(UInt_t row) const;
00208 virtual Pixel_t GetHeaderBackground() const ;
00209
00210 virtual void SetOddRowBackground(Pixel_t pixel);
00211 virtual void SetEvenRowBackground(Pixel_t pixel);
00212 virtual void SetHeaderBackground(Pixel_t pixel);
00213 virtual void SetDefaultColors();
00214
00215
00216 virtual void MoveTable(Int_t rows, Int_t columns);
00217 virtual void GotoTableRange(Int_t xtl, Int_t ytl,
00218 Int_t xbr, Int_t ybr);
00219
00220 virtual TGTableCell* operator() (UInt_t row, UInt_t column);
00221
00222
00223 virtual void ScrollCHeaders(Int_t xpos);
00224 virtual void ScrollRHeaders(Int_t ypos);
00225 virtual void NextChunk();
00226 virtual void PreviousChunk();
00227 virtual void UserRangeChange();
00228 virtual void Goto();
00229 virtual void Update();
00230
00231 ClassDef(TGTable, 0)
00232 };
00233
00234 class TTableRange {
00235 public:
00236 UInt_t fXtl;
00237 UInt_t fYtl;
00238 UInt_t fXbr;
00239 UInt_t fYbr;
00240
00241 TTableRange();
00242 virtual ~TTableRange() {}
00243 virtual void Print();
00244
00245 Bool_t operator==(TTableRange &other);
00246 ClassDef(TTableRange, 0)
00247 };
00248
00249 #endif
00250