ROOT logo
// $Id$
// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007

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

#include "AliEveTRDLoaderManager.h"
#include "AliEveTRDLoader.h"
#include "AliEveTRDLoaderImp.h"

#include <TEveManager.h>

#include <TGLabel.h>
#include <TGButton.h>
#include <TGComboBox.h>
#include <TGListBox.h>
//#include <TGListTree.h>
//#include <TGString.h>
//#include <TGToolTip.h>
#include <TClonesArray.h>

#include "AliLog.h"

ClassImp(AliEveTRDLoaderManager)
ClassImp(AliEveTRDLoaderManagerEditor)

///////////////////////////////////////////////////////////
/////////        AliEveTRDLoaderManager      //////////////
///////////////////////////////////////////////////////////

//______________________________________________________________________________
AliEveTRDLoaderManager::AliEveTRDLoaderManager(const Text_t* n, const Text_t* t) :
  TEveElementList(n, t)
{
  // Constructor.
}

//______________________________________________________________________________
void AliEveTRDLoaderManager::Add(Int_t type, const Text_t *name, const Text_t *title)
{
  // Add something.

  AliEveTRDLoader *trdl = 0x0;
  switch(type){
  case AliEveTRDLoader::kTRDHits:
  case AliEveTRDLoader::kTRDDigits:
  case AliEveTRDLoader::kTRDClusters:
  case AliEveTRDLoader::kTRDTracklets:
    AddElement(trdl = new AliEveTRDLoader(name, title));
    break;
  case AliEveTRDLoader::kTRDRawRoot:
  case AliEveTRDLoader::kTRDRawDate:
    AddElement(trdl = new AliEveTRDLoaderRaw(name, title));
    break;
  default:
    AddElement(trdl = new AliEveTRDLoaderSim(name, title));
    break;
  }
  trdl->SetDataType(type);

  gEve->Redraw3D();
}


//______________________________________________________________________________
void AliEveTRDLoaderManager::Paint(Option_t *option)
{
  // Paint object.

  AliEveTRDLoader *loader(NULL);
  List_i ichmb = fChildren.begin();
  while(ichmb != fChildren.end()){
    if((loader = dynamic_cast<AliEveTRDLoader*>(*ichmb))) loader->Paint(option);
    ichmb++;
  }
}

//______________________________________________________________________________
void AliEveTRDLoaderManager::Remove(Int_t entry)
{
  // Remove something.

  //printf("AliEveTRDLoaderManager::Remove(%d)\n", entry);
  List_i it = fChildren.begin();
  for(int i=0; i<entry; i++) it++;
  gEve->RemoveElement((*it), this);
  fChildren.erase(it);
}

///////////////////////////////////////////////////////////
//////////   AliEveTRDLoaderManagerEditor       ///////////
///////////////////////////////////////////////////////////

//______________________________________________________________________________
AliEveTRDLoaderManagerEditor::
AliEveTRDLoaderManagerEditor(const TGWindow* p, Int_t width, Int_t height,
			     UInt_t options, Pixel_t back) :
  TGedFrame(p, width, height, options | kVerticalFrame, back),
  fM(0), fSelector(0), fAdd(0), fRemoveButton(0), fGroupFrame(0), fRemove(0)
{
  // Constructor.

  MakeTitle("AliEveTRDLoaderManager");

  // control frame - always there
  TGHorizontalFrame *fHorizontalFrame539 = new TGHorizontalFrame(this, 300, 26, kHorizontalFrame);

  TGLabel *fLabel546 = new TGLabel(fHorizontalFrame539,"Register Loader",TGLabel::GetDefaultGC()(),TGLabel::GetDefaultFontStruct(),kChildFrame);
  fLabel546->SetTextJustify(36);
  fHorizontalFrame539->AddFrame(fLabel546, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY,2,2,2,2));

  // combo box
  fSelector = new TGComboBox(fHorizontalFrame539,-1,kHorizontalFrame | kSunkenFrame | kDoubleBorder | kOwnBackground);
  fSelector->AddEntry("MC (gAlice) ", AliEveTRDLoader::kTRDHits | AliEveTRDLoader::kTRDDigits | AliEveTRDLoader::kTRDClusters);
  fSelector->AddEntry("Hits ", AliEveTRDLoader::kTRDHits);
  fSelector->AddEntry("Digits ", AliEveTRDLoader::kTRDDigits);
  fSelector->AddEntry("Clusters ", AliEveTRDLoader::kTRDClusters);
  fSelector->AddEntry("Tracklets ", AliEveTRDLoader::kTRDTracklets);
  fSelector->AddEntry("Raw (ROOT) ", AliEveTRDLoader::kTRDRawRoot);
  fSelector->AddEntry("Raw (DATE) ", AliEveTRDLoader::kTRDRawDate);
  fSelector->Resize(136,22);
  fHorizontalFrame539->AddFrame(fSelector, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY,2,2,2,2));
  //fSelector->SetToolTipText("Select TRD data loader and add it to the list.\nThe loader can be removed by clicking the \"Remove\" button");
  fSelector->Connect("Selected(char*)", "AliEveTRDLoaderManagerEditor", this, "Add(char*)");
  AddFrame(fHorizontalFrame539, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX,2,2,2,2));

  fGroupFrame = 0;
  fRemove     = 0;
}


//______________________________________________________________________________
void AliEveTRDLoaderManagerEditor::Add(Char_t *name)
{
  // Slot to add something.
  if(!fGroupFrame){
    // "TRD Loaders" group frame
    fGroupFrame = new TGGroupFrame(this,"TRD Loaders",kVerticalFrame,TGGroupFrame::GetDefaultGC()(),TGGroupFrame::GetDefaultFontStruct());
    fGroupFrame->SetLayoutManager(new TGVerticalLayout(fGroupFrame));
    fGroupFrame->Resize(300,128);
    AddFrame(fGroupFrame, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX, 2,2,2,2));

    fRemove = new TClonesArray("TGTextButton", 3);
  }


  // horizontal frame
  TGHorizontalFrame *fHorizontalFrame = new TGHorizontalFrame(fGroupFrame, 264, 26, kHorizontalFrame);

  TGLabel *fLabel717 = new TGLabel(fHorizontalFrame, name);
  fLabel717->SetTextJustify(36);
  fHorizontalFrame->AddFrame(fLabel717, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));


  Int_t nbutton = fM->fChildren.size();
  fRemoveButton = new((*fRemove)[nbutton]) TGTextButton(fHorizontalFrame, "Remove", nbutton);
  fRemoveButton->SetTextJustify(36);
  fRemoveButton->Resize(53,22);
  fRemoveButton->Connect("Clicked()", "AliEveTRDLoaderManagerEditor", this, Form("Remove(=%d)", nbutton));
  fRemoveButton->SetToolTipText(Form("Remove %s Loader", name));
  fHorizontalFrame->AddFrame(fRemoveButton, new TGLayoutHints(kLHintsLeft | kLHintsCenterX | kLHintsTop | kLHintsCenterY,2,2,2,2));

  fGroupFrame->AddFrame(fHorizontalFrame, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));


  MapSubwindows();
  Resize(GetDefaultSize());
  MapWindow();

  const char *title[] = {"MC loader", "Single file loader", "Raw data loader"};
  // char *color[] = {"#ff0000", "#0000ff", "#59d454"};
  int id = fSelector->GetSelected(), type;
  switch(id){
  case AliEveTRDLoader::kTRDHits:
  case AliEveTRDLoader::kTRDDigits:
  case AliEveTRDLoader::kTRDClusters:
  case AliEveTRDLoader::kTRDTracklets:
    type = 1;
    break;
  case AliEveTRDLoader::kTRDRawRoot:
  case AliEveTRDLoader::kTRDRawDate:
    type = 2;
    break;
  default:
    type = 0;
    break;
  }
  fM->Add(id, name, title[type]);
}


//______________________________________________________________________________
void AliEveTRDLoaderManagerEditor::Remove(Int_t entry)
{
  // Slot to remove something.

  TIterator *it = fGroupFrame->GetList()->MakeIterator();
  int ientry = 0;
  while(/*TGFrame *f=(TGFrame*)*/it->Next()){
    //printf("%s\n", f->IsA()->GetName());
    if(entry == ientry){
      //fGroupFrame->RemoveFrame(f);
      break;
    }
    ientry++;
  }


  MapSubwindows();
  Resize(GetDefaultSize());
  MapWindow();

  //fM->Remove(entry);
}

//______________________________________________________________________________
void AliEveTRDLoaderManagerEditor::SetModel(TObject* obj)
{
  // Set model object.

  fM = dynamic_cast<AliEveTRDLoaderManager*>(obj);
}

 AliEveTRDLoaderManager.cxx:1
 AliEveTRDLoaderManager.cxx:2
 AliEveTRDLoaderManager.cxx:3
 AliEveTRDLoaderManager.cxx:4
 AliEveTRDLoaderManager.cxx:5
 AliEveTRDLoaderManager.cxx:6
 AliEveTRDLoaderManager.cxx:7
 AliEveTRDLoaderManager.cxx:8
 AliEveTRDLoaderManager.cxx:9
 AliEveTRDLoaderManager.cxx:10
 AliEveTRDLoaderManager.cxx:11
 AliEveTRDLoaderManager.cxx:12
 AliEveTRDLoaderManager.cxx:13
 AliEveTRDLoaderManager.cxx:14
 AliEveTRDLoaderManager.cxx:15
 AliEveTRDLoaderManager.cxx:16
 AliEveTRDLoaderManager.cxx:17
 AliEveTRDLoaderManager.cxx:18
 AliEveTRDLoaderManager.cxx:19
 AliEveTRDLoaderManager.cxx:20
 AliEveTRDLoaderManager.cxx:21
 AliEveTRDLoaderManager.cxx:22
 AliEveTRDLoaderManager.cxx:23
 AliEveTRDLoaderManager.cxx:24
 AliEveTRDLoaderManager.cxx:25
 AliEveTRDLoaderManager.cxx:26
 AliEveTRDLoaderManager.cxx:27
 AliEveTRDLoaderManager.cxx:28
 AliEveTRDLoaderManager.cxx:29
 AliEveTRDLoaderManager.cxx:30
 AliEveTRDLoaderManager.cxx:31
 AliEveTRDLoaderManager.cxx:32
 AliEveTRDLoaderManager.cxx:33
 AliEveTRDLoaderManager.cxx:34
 AliEveTRDLoaderManager.cxx:35
 AliEveTRDLoaderManager.cxx:36
 AliEveTRDLoaderManager.cxx:37
 AliEveTRDLoaderManager.cxx:38
 AliEveTRDLoaderManager.cxx:39
 AliEveTRDLoaderManager.cxx:40
 AliEveTRDLoaderManager.cxx:41
 AliEveTRDLoaderManager.cxx:42
 AliEveTRDLoaderManager.cxx:43
 AliEveTRDLoaderManager.cxx:44
 AliEveTRDLoaderManager.cxx:45
 AliEveTRDLoaderManager.cxx:46
 AliEveTRDLoaderManager.cxx:47
 AliEveTRDLoaderManager.cxx:48
 AliEveTRDLoaderManager.cxx:49
 AliEveTRDLoaderManager.cxx:50
 AliEveTRDLoaderManager.cxx:51
 AliEveTRDLoaderManager.cxx:52
 AliEveTRDLoaderManager.cxx:53
 AliEveTRDLoaderManager.cxx:54
 AliEveTRDLoaderManager.cxx:55
 AliEveTRDLoaderManager.cxx:56
 AliEveTRDLoaderManager.cxx:57
 AliEveTRDLoaderManager.cxx:58
 AliEveTRDLoaderManager.cxx:59
 AliEveTRDLoaderManager.cxx:60
 AliEveTRDLoaderManager.cxx:61
 AliEveTRDLoaderManager.cxx:62
 AliEveTRDLoaderManager.cxx:63
 AliEveTRDLoaderManager.cxx:64
 AliEveTRDLoaderManager.cxx:65
 AliEveTRDLoaderManager.cxx:66
 AliEveTRDLoaderManager.cxx:67
 AliEveTRDLoaderManager.cxx:68
 AliEveTRDLoaderManager.cxx:69
 AliEveTRDLoaderManager.cxx:70
 AliEveTRDLoaderManager.cxx:71
 AliEveTRDLoaderManager.cxx:72
 AliEveTRDLoaderManager.cxx:73
 AliEveTRDLoaderManager.cxx:74
 AliEveTRDLoaderManager.cxx:75
 AliEveTRDLoaderManager.cxx:76
 AliEveTRDLoaderManager.cxx:77
 AliEveTRDLoaderManager.cxx:78
 AliEveTRDLoaderManager.cxx:79
 AliEveTRDLoaderManager.cxx:80
 AliEveTRDLoaderManager.cxx:81
 AliEveTRDLoaderManager.cxx:82
 AliEveTRDLoaderManager.cxx:83
 AliEveTRDLoaderManager.cxx:84
 AliEveTRDLoaderManager.cxx:85
 AliEveTRDLoaderManager.cxx:86
 AliEveTRDLoaderManager.cxx:87
 AliEveTRDLoaderManager.cxx:88
 AliEveTRDLoaderManager.cxx:89
 AliEveTRDLoaderManager.cxx:90
 AliEveTRDLoaderManager.cxx:91
 AliEveTRDLoaderManager.cxx:92
 AliEveTRDLoaderManager.cxx:93
 AliEveTRDLoaderManager.cxx:94
 AliEveTRDLoaderManager.cxx:95
 AliEveTRDLoaderManager.cxx:96
 AliEveTRDLoaderManager.cxx:97
 AliEveTRDLoaderManager.cxx:98
 AliEveTRDLoaderManager.cxx:99
 AliEveTRDLoaderManager.cxx:100
 AliEveTRDLoaderManager.cxx:101
 AliEveTRDLoaderManager.cxx:102
 AliEveTRDLoaderManager.cxx:103
 AliEveTRDLoaderManager.cxx:104
 AliEveTRDLoaderManager.cxx:105
 AliEveTRDLoaderManager.cxx:106
 AliEveTRDLoaderManager.cxx:107
 AliEveTRDLoaderManager.cxx:108
 AliEveTRDLoaderManager.cxx:109
 AliEveTRDLoaderManager.cxx:110
 AliEveTRDLoaderManager.cxx:111
 AliEveTRDLoaderManager.cxx:112
 AliEveTRDLoaderManager.cxx:113
 AliEveTRDLoaderManager.cxx:114
 AliEveTRDLoaderManager.cxx:115
 AliEveTRDLoaderManager.cxx:116
 AliEveTRDLoaderManager.cxx:117
 AliEveTRDLoaderManager.cxx:118
 AliEveTRDLoaderManager.cxx:119
 AliEveTRDLoaderManager.cxx:120
 AliEveTRDLoaderManager.cxx:121
 AliEveTRDLoaderManager.cxx:122
 AliEveTRDLoaderManager.cxx:123
 AliEveTRDLoaderManager.cxx:124
 AliEveTRDLoaderManager.cxx:125
 AliEveTRDLoaderManager.cxx:126
 AliEveTRDLoaderManager.cxx:127
 AliEveTRDLoaderManager.cxx:128
 AliEveTRDLoaderManager.cxx:129
 AliEveTRDLoaderManager.cxx:130
 AliEveTRDLoaderManager.cxx:131
 AliEveTRDLoaderManager.cxx:132
 AliEveTRDLoaderManager.cxx:133
 AliEveTRDLoaderManager.cxx:134
 AliEveTRDLoaderManager.cxx:135
 AliEveTRDLoaderManager.cxx:136
 AliEveTRDLoaderManager.cxx:137
 AliEveTRDLoaderManager.cxx:138
 AliEveTRDLoaderManager.cxx:139
 AliEveTRDLoaderManager.cxx:140
 AliEveTRDLoaderManager.cxx:141
 AliEveTRDLoaderManager.cxx:142
 AliEveTRDLoaderManager.cxx:143
 AliEveTRDLoaderManager.cxx:144
 AliEveTRDLoaderManager.cxx:145
 AliEveTRDLoaderManager.cxx:146
 AliEveTRDLoaderManager.cxx:147
 AliEveTRDLoaderManager.cxx:148
 AliEveTRDLoaderManager.cxx:149
 AliEveTRDLoaderManager.cxx:150
 AliEveTRDLoaderManager.cxx:151
 AliEveTRDLoaderManager.cxx:152
 AliEveTRDLoaderManager.cxx:153
 AliEveTRDLoaderManager.cxx:154
 AliEveTRDLoaderManager.cxx:155
 AliEveTRDLoaderManager.cxx:156
 AliEveTRDLoaderManager.cxx:157
 AliEveTRDLoaderManager.cxx:158
 AliEveTRDLoaderManager.cxx:159
 AliEveTRDLoaderManager.cxx:160
 AliEveTRDLoaderManager.cxx:161
 AliEveTRDLoaderManager.cxx:162
 AliEveTRDLoaderManager.cxx:163
 AliEveTRDLoaderManager.cxx:164
 AliEveTRDLoaderManager.cxx:165
 AliEveTRDLoaderManager.cxx:166
 AliEveTRDLoaderManager.cxx:167
 AliEveTRDLoaderManager.cxx:168
 AliEveTRDLoaderManager.cxx:169
 AliEveTRDLoaderManager.cxx:170
 AliEveTRDLoaderManager.cxx:171
 AliEveTRDLoaderManager.cxx:172
 AliEveTRDLoaderManager.cxx:173
 AliEveTRDLoaderManager.cxx:174
 AliEveTRDLoaderManager.cxx:175
 AliEveTRDLoaderManager.cxx:176
 AliEveTRDLoaderManager.cxx:177
 AliEveTRDLoaderManager.cxx:178
 AliEveTRDLoaderManager.cxx:179
 AliEveTRDLoaderManager.cxx:180
 AliEveTRDLoaderManager.cxx:181
 AliEveTRDLoaderManager.cxx:182
 AliEveTRDLoaderManager.cxx:183
 AliEveTRDLoaderManager.cxx:184
 AliEveTRDLoaderManager.cxx:185
 AliEveTRDLoaderManager.cxx:186
 AliEveTRDLoaderManager.cxx:187
 AliEveTRDLoaderManager.cxx:188
 AliEveTRDLoaderManager.cxx:189
 AliEveTRDLoaderManager.cxx:190
 AliEveTRDLoaderManager.cxx:191
 AliEveTRDLoaderManager.cxx:192
 AliEveTRDLoaderManager.cxx:193
 AliEveTRDLoaderManager.cxx:194
 AliEveTRDLoaderManager.cxx:195
 AliEveTRDLoaderManager.cxx:196
 AliEveTRDLoaderManager.cxx:197
 AliEveTRDLoaderManager.cxx:198
 AliEveTRDLoaderManager.cxx:199
 AliEveTRDLoaderManager.cxx:200
 AliEveTRDLoaderManager.cxx:201
 AliEveTRDLoaderManager.cxx:202
 AliEveTRDLoaderManager.cxx:203
 AliEveTRDLoaderManager.cxx:204
 AliEveTRDLoaderManager.cxx:205
 AliEveTRDLoaderManager.cxx:206
 AliEveTRDLoaderManager.cxx:207
 AliEveTRDLoaderManager.cxx:208
 AliEveTRDLoaderManager.cxx:209
 AliEveTRDLoaderManager.cxx:210
 AliEveTRDLoaderManager.cxx:211
 AliEveTRDLoaderManager.cxx:212
 AliEveTRDLoaderManager.cxx:213
 AliEveTRDLoaderManager.cxx:214
 AliEveTRDLoaderManager.cxx:215
 AliEveTRDLoaderManager.cxx:216
 AliEveTRDLoaderManager.cxx:217
 AliEveTRDLoaderManager.cxx:218
 AliEveTRDLoaderManager.cxx:219
 AliEveTRDLoaderManager.cxx:220
 AliEveTRDLoaderManager.cxx:221
 AliEveTRDLoaderManager.cxx:222
 AliEveTRDLoaderManager.cxx:223
 AliEveTRDLoaderManager.cxx:224
 AliEveTRDLoaderManager.cxx:225
 AliEveTRDLoaderManager.cxx:226