ROOT logo
// $Id$
// Author: Stefano Carrazza 2010, CERN, stefano.carrazza@cern.ch

/**************************************************************************
 * Copyright(c) 1998-2009, ALICE Experiment at CERN, all rights reserved. *
 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
 * full copyright notice.                                                 *
 **************************************************************************/

#include "AliEveBeamsInfo.h"
#include "AliEveBeamsInfoEditor.h"

#include "TVirtualPad.h"
#include "TColor.h"
#include "TGButton.h"
#include "TGColorSelect.h"
#include "TGComboBox.h"
#include "TGDoubleSlider.h"
#include "TGFrame.h"
#include "TGLabel.h"
#include "TGNumberEntry.h"
#include "TGString.h"

//______________________________________________________________________________
// GUI editor for AliEveBeamsInfo.
//

ClassImp(AliEveBeamsInfoEditor)

//______________________________________________________________________________
AliEveBeamsInfoEditor::AliEveBeamsInfoEditor(const TGWindow *p, Int_t width, Int_t height,
             UInt_t options, Pixel_t back) :
  TGedFrame(p, width, height, options | kVerticalFrame, back),
  fM(0),
  fIsMC(0),
  fEventSelection(0),
  fShowEvents(0),
  fSelect(0),
  fButtonPrev(0),
  fButtonNext(0),
  fSetAlpha(0),
  fAlpha(0)
{
  // Constructor.
  MakeTitle("AliEveBeamsInfo");

  // Events selection  
  fShowEvents = new TGCheckButton(this, new TGHotString("&Show information box"));
  fShowEvents->SetState(kButtonDown);
  fShowEvents->Connect("Clicked()", "AliEveBeamsInfoEditor", this, "ShowEventSelection()");
  AddFrame(fShowEvents, new TGLayoutHints(kLHintsExpandX));

  fIsMC = new TGCheckButton(this, new TGHotString("&Data is from simulation (MC)"));
  fIsMC->SetState(kButtonUp);
  fIsMC->Connect("Clicked()", "AliEveBeamsInfoEditor", this, "SwitchDataType()");
  AddFrame(fIsMC, new TGLayoutHints(kLHintsExpandX));

  fEventSelection = new TGGroupFrame(this, "Event filter:", kHorizontalFrame);
  fSelect = new TGComboBox(fEventSelection,-1,kHorizontalFrame | kSunkenFrame | kDoubleBorder | kOwnBackground);
  fSelect->AddEntry("Show all events",0);
  fSelect->AddEntry("Only Beam 1 events",1);
  fSelect->AddEntry("Only Beam 2 events",2);
  fSelect->AddEntry("Beams 1 & 2 events",3);
  fSelect->Resize(120,22);
  fSelect->Select(0);
  fEventSelection->AddFrame(fSelect, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));

  fSelect->Connect("Selected(Int_t)", "AliEveBeamsInfoEditor", this, "SelectEventSelection(Int_t)");

  AddFrame(fEventSelection, new TGLayoutHints(kLHintsExpandX));

  //------

  TGHorizontalFrame *h = new TGHorizontalFrame(this);

  fButtonPrev = new TGTextButton(h, "Previous event");
  h->AddFrame(fButtonPrev, new TGLayoutHints(kLHintsLeft | kLHintsCenterY | kLHintsExpandX));
  fButtonPrev->Connect("Clicked()", "AliEveBeamsInfoEditor", this, "ShowPrevEvent()");

  fButtonNext = new TGTextButton(h, "Next event");
  h->AddFrame( fButtonNext, new TGLayoutHints(kLHintsRight | kLHintsNormal | kLHintsExpandX));
  fButtonNext->Connect("Clicked()", "AliEveBeamsInfoEditor", this, "ShowNextEvent()");

  AddFrame(h, new TGLayoutHints(kLHintsExpandX | kLHintsCenterY));

  fSetAlpha = new TGGroupFrame(this, "Transparency value:", kHorizontalFrame);
  fAlpha = new TGNumberEntry(fSetAlpha,  1.5, 7, -1,
                             TGNumberFormat::kNESRealOne,
                             TGNumberFormat::kNEANonNegative,
                             TGNumberFormat::kNELLimitMinMax,
                             0, 1.5);
  fAlpha->Resize(120,22);
  fSetAlpha->AddFrame(fAlpha, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
  fAlpha->Connect("ValueSet(Long_t)", "AliEveBeamsInfoEditor", this, "SetAlpha()");

  AddFrame(fSetAlpha, new TGLayoutHints(kLHintsExpandX));
}

//______________________________________________________________________________
void AliEveBeamsInfoEditor::SetModel(TObject* obj)
{
  // Set model object.
  fM = dynamic_cast<AliEveBeamsInfo*>(obj);
}

//______________________________________________________________________________
void AliEveBeamsInfoEditor::ShowEventSelection()
{
  // Show event selection
  fM->ShowEventSelection(fShowEvents->IsOn());
}

//______________________________________________________________________________
void AliEveBeamsInfoEditor::SelectEventSelection(Int_t id)
{
  // Show event selection
  fM->SelectEventSelection(id);
}

//______________________________________________________________________________
void AliEveBeamsInfoEditor::ShowPrevEvent()
{
  // Show previous event
  fM->ShowPrevEvent();
}

//______________________________________________________________________________
void AliEveBeamsInfoEditor::ShowNextEvent()
{
  // Show next event
  fM->ShowNextEvent();
}

//______________________________________________________________________________
void AliEveBeamsInfoEditor::SwitchDataType()
{
  // Show previous event
  fM->SwitchDataType(fIsMC->IsOn());
}

//______________________________________________________________________________
void AliEveBeamsInfoEditor::SetAlpha()
{
  // Set alpha
  fM->SetAlpha(fAlpha->GetNumber());
}


/******************************************************************************/
 AliEveBeamsInfoEditor.cxx:1
 AliEveBeamsInfoEditor.cxx:2
 AliEveBeamsInfoEditor.cxx:3
 AliEveBeamsInfoEditor.cxx:4
 AliEveBeamsInfoEditor.cxx:5
 AliEveBeamsInfoEditor.cxx:6
 AliEveBeamsInfoEditor.cxx:7
 AliEveBeamsInfoEditor.cxx:8
 AliEveBeamsInfoEditor.cxx:9
 AliEveBeamsInfoEditor.cxx:10
 AliEveBeamsInfoEditor.cxx:11
 AliEveBeamsInfoEditor.cxx:12
 AliEveBeamsInfoEditor.cxx:13
 AliEveBeamsInfoEditor.cxx:14
 AliEveBeamsInfoEditor.cxx:15
 AliEveBeamsInfoEditor.cxx:16
 AliEveBeamsInfoEditor.cxx:17
 AliEveBeamsInfoEditor.cxx:18
 AliEveBeamsInfoEditor.cxx:19
 AliEveBeamsInfoEditor.cxx:20
 AliEveBeamsInfoEditor.cxx:21
 AliEveBeamsInfoEditor.cxx:22
 AliEveBeamsInfoEditor.cxx:23
 AliEveBeamsInfoEditor.cxx:24
 AliEveBeamsInfoEditor.cxx:25
 AliEveBeamsInfoEditor.cxx:26
 AliEveBeamsInfoEditor.cxx:27
 AliEveBeamsInfoEditor.cxx:28
 AliEveBeamsInfoEditor.cxx:29
 AliEveBeamsInfoEditor.cxx:30
 AliEveBeamsInfoEditor.cxx:31
 AliEveBeamsInfoEditor.cxx:32
 AliEveBeamsInfoEditor.cxx:33
 AliEveBeamsInfoEditor.cxx:34
 AliEveBeamsInfoEditor.cxx:35
 AliEveBeamsInfoEditor.cxx:36
 AliEveBeamsInfoEditor.cxx:37
 AliEveBeamsInfoEditor.cxx:38
 AliEveBeamsInfoEditor.cxx:39
 AliEveBeamsInfoEditor.cxx:40
 AliEveBeamsInfoEditor.cxx:41
 AliEveBeamsInfoEditor.cxx:42
 AliEveBeamsInfoEditor.cxx:43
 AliEveBeamsInfoEditor.cxx:44
 AliEveBeamsInfoEditor.cxx:45
 AliEveBeamsInfoEditor.cxx:46
 AliEveBeamsInfoEditor.cxx:47
 AliEveBeamsInfoEditor.cxx:48
 AliEveBeamsInfoEditor.cxx:49
 AliEveBeamsInfoEditor.cxx:50
 AliEveBeamsInfoEditor.cxx:51
 AliEveBeamsInfoEditor.cxx:52
 AliEveBeamsInfoEditor.cxx:53
 AliEveBeamsInfoEditor.cxx:54
 AliEveBeamsInfoEditor.cxx:55
 AliEveBeamsInfoEditor.cxx:56
 AliEveBeamsInfoEditor.cxx:57
 AliEveBeamsInfoEditor.cxx:58
 AliEveBeamsInfoEditor.cxx:59
 AliEveBeamsInfoEditor.cxx:60
 AliEveBeamsInfoEditor.cxx:61
 AliEveBeamsInfoEditor.cxx:62
 AliEveBeamsInfoEditor.cxx:63
 AliEveBeamsInfoEditor.cxx:64
 AliEveBeamsInfoEditor.cxx:65
 AliEveBeamsInfoEditor.cxx:66
 AliEveBeamsInfoEditor.cxx:67
 AliEveBeamsInfoEditor.cxx:68
 AliEveBeamsInfoEditor.cxx:69
 AliEveBeamsInfoEditor.cxx:70
 AliEveBeamsInfoEditor.cxx:71
 AliEveBeamsInfoEditor.cxx:72
 AliEveBeamsInfoEditor.cxx:73
 AliEveBeamsInfoEditor.cxx:74
 AliEveBeamsInfoEditor.cxx:75
 AliEveBeamsInfoEditor.cxx:76
 AliEveBeamsInfoEditor.cxx:77
 AliEveBeamsInfoEditor.cxx:78
 AliEveBeamsInfoEditor.cxx:79
 AliEveBeamsInfoEditor.cxx:80
 AliEveBeamsInfoEditor.cxx:81
 AliEveBeamsInfoEditor.cxx:82
 AliEveBeamsInfoEditor.cxx:83
 AliEveBeamsInfoEditor.cxx:84
 AliEveBeamsInfoEditor.cxx:85
 AliEveBeamsInfoEditor.cxx:86
 AliEveBeamsInfoEditor.cxx:87
 AliEveBeamsInfoEditor.cxx:88
 AliEveBeamsInfoEditor.cxx:89
 AliEveBeamsInfoEditor.cxx:90
 AliEveBeamsInfoEditor.cxx:91
 AliEveBeamsInfoEditor.cxx:92
 AliEveBeamsInfoEditor.cxx:93
 AliEveBeamsInfoEditor.cxx:94
 AliEveBeamsInfoEditor.cxx:95
 AliEveBeamsInfoEditor.cxx:96
 AliEveBeamsInfoEditor.cxx:97
 AliEveBeamsInfoEditor.cxx:98
 AliEveBeamsInfoEditor.cxx:99
 AliEveBeamsInfoEditor.cxx:100
 AliEveBeamsInfoEditor.cxx:101
 AliEveBeamsInfoEditor.cxx:102
 AliEveBeamsInfoEditor.cxx:103
 AliEveBeamsInfoEditor.cxx:104
 AliEveBeamsInfoEditor.cxx:105
 AliEveBeamsInfoEditor.cxx:106
 AliEveBeamsInfoEditor.cxx:107
 AliEveBeamsInfoEditor.cxx:108
 AliEveBeamsInfoEditor.cxx:109
 AliEveBeamsInfoEditor.cxx:110
 AliEveBeamsInfoEditor.cxx:111
 AliEveBeamsInfoEditor.cxx:112
 AliEveBeamsInfoEditor.cxx:113
 AliEveBeamsInfoEditor.cxx:114
 AliEveBeamsInfoEditor.cxx:115
 AliEveBeamsInfoEditor.cxx:116
 AliEveBeamsInfoEditor.cxx:117
 AliEveBeamsInfoEditor.cxx:118
 AliEveBeamsInfoEditor.cxx:119
 AliEveBeamsInfoEditor.cxx:120
 AliEveBeamsInfoEditor.cxx:121
 AliEveBeamsInfoEditor.cxx:122
 AliEveBeamsInfoEditor.cxx:123
 AliEveBeamsInfoEditor.cxx:124
 AliEveBeamsInfoEditor.cxx:125
 AliEveBeamsInfoEditor.cxx:126
 AliEveBeamsInfoEditor.cxx:127
 AliEveBeamsInfoEditor.cxx:128
 AliEveBeamsInfoEditor.cxx:129
 AliEveBeamsInfoEditor.cxx:130
 AliEveBeamsInfoEditor.cxx:131
 AliEveBeamsInfoEditor.cxx:132
 AliEveBeamsInfoEditor.cxx:133
 AliEveBeamsInfoEditor.cxx:134
 AliEveBeamsInfoEditor.cxx:135
 AliEveBeamsInfoEditor.cxx:136
 AliEveBeamsInfoEditor.cxx:137
 AliEveBeamsInfoEditor.cxx:138
 AliEveBeamsInfoEditor.cxx:139
 AliEveBeamsInfoEditor.cxx:140
 AliEveBeamsInfoEditor.cxx:141
 AliEveBeamsInfoEditor.cxx:142
 AliEveBeamsInfoEditor.cxx:143
 AliEveBeamsInfoEditor.cxx:144
 AliEveBeamsInfoEditor.cxx:145
 AliEveBeamsInfoEditor.cxx:146
 AliEveBeamsInfoEditor.cxx:147
 AliEveBeamsInfoEditor.cxx:148
 AliEveBeamsInfoEditor.cxx:149