PMD module
[u/mrichter/AliRoot.git] / MUON / AliMUONPainterMasterFrame.h
1 #ifndef ALIMUONPAINTERMASTERFRAME_H
2 #define ALIMUONPAINTERMASTERFRAME_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice                               */
6
7 // $Id$
8
9 /// \ingroup graphics
10 /// \class AliMUONPainterMasterFrame
11 /// \brief The main window for the offline "a la mood" display
12 /// 
13 // Author Laurent Aphecetche, Subatech
14
15 #ifndef ROOT_TGFrame
16 #  include <TGFrame.h>
17 #endif
18 #ifndef ROOT_TArrayI
19 #  include <TArrayI.h>
20 #endif
21
22 class AliMUONAttPainter;
23 class AliMUONPainterMatrix;
24 class AliMUONPainterMatrixFrame;
25 class AliMUONAttPainterSelectorFrame;
26 class AliMUONVPainter;
27 class TGButton;
28 class TGButtonGroup;
29 class TGComboBox;
30 class TGLabel;
31 class TObjArray;
32
33 class AliMUONPainterMasterFrame : public TGCompositeFrame
34 {
35 public:
36   AliMUONPainterMasterFrame(const TGWindow* p, UInt_t w, UInt_t h, AliMUONPainterMatrix* matrix);
37   virtual ~AliMUONPainterMasterFrame();
38
39   void Backward();
40
41   void ChangeTitle(const char* newTitle);
42   
43   void Clicked(AliMUONVPainter* painter, Double_t* values);
44
45   void ShiftClicked(AliMUONVPainter* painter, Double_t* values);
46
47   void Forward();
48   
49   void PainterMatrixWantToShow(AliMUONPainterMatrix* group);
50
51   void Update();
52
53   void AttributesChanged(const AliMUONAttPainter* newValues);
54   
55   void SaveAs(const char* filename = "", Option_t* option = "") const;
56   
57   void PrintAs() const;
58
59   void PrintMe() const;
60   
61 private:
62   /// not implemented
63   AliMUONPainterMasterFrame(const AliMUONPainterMasterFrame& rhs);
64   /// not implemented
65   AliMUONPainterMasterFrame& operator=(const AliMUONPainterMasterFrame& rhs);
66   
67   void AddPainterMatrix(AliMUONPainterMatrix* group);
68   void MakeTopPainterMatrix(UInt_t w, UInt_t h, AliMUONPainterMatrix* matrix);
69   void SetNavigation(Int_t i);
70   void ShowPainterMatrix(AliMUONPainterMatrix* group);  
71   void UpdateNavigation();
72   void UpdateAttributes(const AliMUONPainterMatrix& painterMatrix);
73   
74 private:
75   TGHorizontalFrame* fNavigationFrame; ///< top frame for navigation
76   AliMUONPainterMatrixFrame* fPainterMatrixFrame; ///< main frame with painters
77   
78   TGButton* fBackButton; ///< navigation back 
79   TGButton* fForwardButton; ///< navigation forward
80   TGLabel* fGroupTitle; ///< top title
81   TGButton* fPrintMeButton; ///< print button
82   TGButton* fPrintAsButton; ///< print... button
83   
84   TArrayI fNavigation; ///< navigation "history"
85     
86   Int_t fCurrentNavigationPosition; ///< current position in navigation history
87
88   AliMUONAttPainterSelectorFrame* fAttPainterSelectorFrame; ///< view type selection frame
89   
90   static const Int_t fgkBorderSize; ///< border sizes to use when placing frames
91
92   ClassDef(AliMUONPainterMasterFrame,0) // Main window of display
93 };
94
95 #endif