ROOT logo
#ifndef ALIMUONPAINTERMATRIXFRAME_H
#define ALIMUONPAINTERMATRIXFRAME_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice                               */

// $Id$

/// \ingroup graphics
/// \class AliMUONPainterMatrixFrame
/// \brief Widget to plot a matrix of painters
/// 
// Author Laurent Aphecetche, Subatech

#ifndef ROOT_TGFrame
#  include "TGFrame.h"
#endif
#include <float.h>

class AliMUONPainterColorSlider;
class AliMUONPainterPlotSelector;
class AliMUONPainterMatrix;
class AliMUONPainterHighlighter;
class AliMUONVPainter;
class AliMUONVTrackerData;
class TGButtonGroup;
class TGToolTip;
class TList;
class TObjArray;
class TRootEmbeddedCanvas;

class AliMUONPainterMatrixFrame : public TGCompositeFrame
{
public:
  AliMUONPainterMatrixFrame(const TGWindow* window, UInt_t w, UInt_t h);
  virtual ~AliMUONPainterMatrixFrame();
  
  void Clear(Option_t* opt="");

  void DataRangeAutoRequested();
  
  void DataRangeWasChanged(Double_t* range);
    
  void DataSourceWasChanged(const char* name, AliMUONVTrackerData* data, Int_t dataIndex);

  void EventInfo(Int_t event, Int_t px, Int_t py, TObject* selected);

  void MouseEnter(AliMUONVPainter* painter); // *SIGNAL*

  void MouseMotion(AliMUONVPainter* painter, Double_t* position); // *SIGNAL*

  void MouseLeave(const AliMUONVPainter* painter); // *SIGNAL*
  
  void ResponderButtonWasClicked(Int_t id); 

  void OutlineButtonWasClicked(Int_t id); 
  
  void Use(AliMUONPainterMatrix* group);
  
  void TitleHasChanged(const char* newTitle); // *SIGNAL*
  
  void Update(); 

  /// Get the matrix pointer
  AliMUONPainterMatrix* Matrix() const { return fPainterMatrix; }
  
  void SaveAs(const char* filename="", Option_t* option="") const;

  void UpdateInterface(Bool_t fromScratch);
  
private:
  /// not implemented
  AliMUONPainterMatrixFrame(const AliMUONPainterMatrixFrame& rhs);
  /// not implemented
  AliMUONPainterMatrixFrame& operator=(const AliMUONPainterMatrixFrame& rhs);

  void ChangeTitle(const TString& title);
  
  void ChangeTitle(AliMUONVPainter* painter, const char* basename=0x0,
                   Double_t x=FLT_MAX, Double_t y=FLT_MAX);
  
  void CreateButtons();
  
  void UpdateDataRange();
  
  void ViewModified();
  
private:
  AliMUONPainterMatrix* fPainterMatrix; ///< the matrix we plot (not owner)
  TRootEmbeddedCanvas* fView; ///< the canvas used to plot
  TGHorizontalFrame* fInterface;  ///< the interface frame
  TGButtonGroup* fResponderButtons; ///< the responder buttons
  TGButtonGroup* fOutlineButtons; ///< the outline buttons
  
  AliMUONPainterPlotSelector* fPlotSelector; ///< the data source selection
    
  AliMUONPainterHighlighter* fPainterHighlighter; ///< the highlighter
  
  UInt_t fCanvasWidth; ///< canvas width
  UInt_t fCanvasHeight; ///< canvas height
  
  TGCompositeFrame* fMainFrame; ///< our main frame
  
  AliMUONPainterColorSlider* fColorSlider; ///< color slider (for data)
  
  ClassDef(AliMUONPainterMatrixFrame,1) // Widget for drawing painter matrix
};

#endif
 AliMUONPainterMatrixFrame.h:1
 AliMUONPainterMatrixFrame.h:2
 AliMUONPainterMatrixFrame.h:3
 AliMUONPainterMatrixFrame.h:4
 AliMUONPainterMatrixFrame.h:5
 AliMUONPainterMatrixFrame.h:6
 AliMUONPainterMatrixFrame.h:7
 AliMUONPainterMatrixFrame.h:8
 AliMUONPainterMatrixFrame.h:9
 AliMUONPainterMatrixFrame.h:10
 AliMUONPainterMatrixFrame.h:11
 AliMUONPainterMatrixFrame.h:12
 AliMUONPainterMatrixFrame.h:13
 AliMUONPainterMatrixFrame.h:14
 AliMUONPainterMatrixFrame.h:15
 AliMUONPainterMatrixFrame.h:16
 AliMUONPainterMatrixFrame.h:17
 AliMUONPainterMatrixFrame.h:18
 AliMUONPainterMatrixFrame.h:19
 AliMUONPainterMatrixFrame.h:20
 AliMUONPainterMatrixFrame.h:21
 AliMUONPainterMatrixFrame.h:22
 AliMUONPainterMatrixFrame.h:23
 AliMUONPainterMatrixFrame.h:24
 AliMUONPainterMatrixFrame.h:25
 AliMUONPainterMatrixFrame.h:26
 AliMUONPainterMatrixFrame.h:27
 AliMUONPainterMatrixFrame.h:28
 AliMUONPainterMatrixFrame.h:29
 AliMUONPainterMatrixFrame.h:30
 AliMUONPainterMatrixFrame.h:31
 AliMUONPainterMatrixFrame.h:32
 AliMUONPainterMatrixFrame.h:33
 AliMUONPainterMatrixFrame.h:34
 AliMUONPainterMatrixFrame.h:35
 AliMUONPainterMatrixFrame.h:36
 AliMUONPainterMatrixFrame.h:37
 AliMUONPainterMatrixFrame.h:38
 AliMUONPainterMatrixFrame.h:39
 AliMUONPainterMatrixFrame.h:40
 AliMUONPainterMatrixFrame.h:41
 AliMUONPainterMatrixFrame.h:42
 AliMUONPainterMatrixFrame.h:43
 AliMUONPainterMatrixFrame.h:44
 AliMUONPainterMatrixFrame.h:45
 AliMUONPainterMatrixFrame.h:46
 AliMUONPainterMatrixFrame.h:47
 AliMUONPainterMatrixFrame.h:48
 AliMUONPainterMatrixFrame.h:49
 AliMUONPainterMatrixFrame.h:50
 AliMUONPainterMatrixFrame.h:51
 AliMUONPainterMatrixFrame.h:52
 AliMUONPainterMatrixFrame.h:53
 AliMUONPainterMatrixFrame.h:54
 AliMUONPainterMatrixFrame.h:55
 AliMUONPainterMatrixFrame.h:56
 AliMUONPainterMatrixFrame.h:57
 AliMUONPainterMatrixFrame.h:58
 AliMUONPainterMatrixFrame.h:59
 AliMUONPainterMatrixFrame.h:60
 AliMUONPainterMatrixFrame.h:61
 AliMUONPainterMatrixFrame.h:62
 AliMUONPainterMatrixFrame.h:63
 AliMUONPainterMatrixFrame.h:64
 AliMUONPainterMatrixFrame.h:65
 AliMUONPainterMatrixFrame.h:66
 AliMUONPainterMatrixFrame.h:67
 AliMUONPainterMatrixFrame.h:68
 AliMUONPainterMatrixFrame.h:69
 AliMUONPainterMatrixFrame.h:70
 AliMUONPainterMatrixFrame.h:71
 AliMUONPainterMatrixFrame.h:72
 AliMUONPainterMatrixFrame.h:73
 AliMUONPainterMatrixFrame.h:74
 AliMUONPainterMatrixFrame.h:75
 AliMUONPainterMatrixFrame.h:76
 AliMUONPainterMatrixFrame.h:77
 AliMUONPainterMatrixFrame.h:78
 AliMUONPainterMatrixFrame.h:79
 AliMUONPainterMatrixFrame.h:80
 AliMUONPainterMatrixFrame.h:81
 AliMUONPainterMatrixFrame.h:82
 AliMUONPainterMatrixFrame.h:83
 AliMUONPainterMatrixFrame.h:84
 AliMUONPainterMatrixFrame.h:85
 AliMUONPainterMatrixFrame.h:86
 AliMUONPainterMatrixFrame.h:87
 AliMUONPainterMatrixFrame.h:88
 AliMUONPainterMatrixFrame.h:89
 AliMUONPainterMatrixFrame.h:90
 AliMUONPainterMatrixFrame.h:91
 AliMUONPainterMatrixFrame.h:92
 AliMUONPainterMatrixFrame.h:93
 AliMUONPainterMatrixFrame.h:94
 AliMUONPainterMatrixFrame.h:95
 AliMUONPainterMatrixFrame.h:96
 AliMUONPainterMatrixFrame.h:97
 AliMUONPainterMatrixFrame.h:98
 AliMUONPainterMatrixFrame.h:99
 AliMUONPainterMatrixFrame.h:100
 AliMUONPainterMatrixFrame.h:101
 AliMUONPainterMatrixFrame.h:102
 AliMUONPainterMatrixFrame.h:103
 AliMUONPainterMatrixFrame.h:104
 AliMUONPainterMatrixFrame.h:105
 AliMUONPainterMatrixFrame.h:106
 AliMUONPainterMatrixFrame.h:107
 AliMUONPainterMatrixFrame.h:108
 AliMUONPainterMatrixFrame.h:109