ROOT logo
#ifndef ALIMUONPAINTERPLOTSELECTOR_H
#define ALIMUONPAINTERPLOTSELECTOR_H

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

// $Id$

/// \ingroup graphics
/// \class AliMUONPainterPlotSelector
/// \brief Widget to pick what to plot for the painters
/// 
// Author Laurent Aphecetche, Subatech

#ifndef ROOT_TGFrame
#  include "TGFrame.h"
#endif
#ifndef ROOT_TString
#  include "TString.h"
#endif

class AliMUONPainterMatrix;
class AliMUONVTrackerData;
class TGButtonGroup;
class TMap;

class AliMUONPainterPlotSelector : public TGCompositeFrame
{
public:
  AliMUONPainterPlotSelector(const TGWindow* window, UInt_t w=1, UInt_t h=1);
  virtual ~AliMUONPainterPlotSelector();
  
  void DataSourceWasRegistered(AliMUONVTrackerData* data);  
  
  void DataSourceWasUnregistered(AliMUONVTrackerData* data);

  void DataSourceWasChanged(const char* type, 
                            AliMUONVTrackerData* data,
                            Int_t dataIndex); // *SIGNAL*
  
  void DimensionButtonWasClicked(Int_t id);
  
  void SourceButtonWasClicked(Int_t id);
  
  void TypeButtonWasClicked(Int_t id);
    
  void Update(const AliMUONPainterMatrix& painterMatrix);

  void NumberOfEventsChanged();

private:
  /// Not implemented
  AliMUONPainterPlotSelector(const AliMUONPainterPlotSelector& rhs);
  /// Not implemented
  AliMUONPainterPlotSelector& operator=(const AliMUONPainterPlotSelector& rhs);
  
  void BackupDimensionButtons();
  
  void CreateDimensionButtons(const char* dataSourceName);

  void CreateTypeButtons(const TObjArray& types);
  
  void DataSourceWasChanged();

  void ResetDimensionButtonMap();

  void RestoreDimensionButtons(const char* dataSourceName,
                               Bool_t updateCurrentDimension);
  
  void SetCurrentData(AliMUONVTrackerData* data);
  
  void SetCurrentDimension(Long_t i);
  
  void SetCurrentType(const char* type);
  
  void UpdateDimensionButton();
  
  void UpdateSourceButton();
  
  void UpdateTypeButton();
  
private:
  
  TGButtonGroup* fTypes; ///< types buttons
  TGButtonGroup* fDataSourceNames; ///< data source names buttons
  TGButtonGroup* fDataSourceDimensions; ///< data source dimensions buttons  
  TMap* fDimensionButtonMap; ///< cache for button group  
  TString fCurrentType; ///< current type
  AliMUONVTrackerData* fCurrentData; ///< current data
  Long_t fCurrentDimension; ///< current data index
  static const char* fgkDefaultSourceName; ///< default source name
  
  ClassDef(AliMUONPainterPlotSelector,1) // Widget to select what to plot for painters
};

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