1 #include "AliStorageAdministratorPanelListEvents.h"
16 AliStorageAdministratorPanelListEvents *AliStorageAdministratorPanelListEvents::fInstance=0;
18 ClassImp(AliStorageAdministratorPanelListEvents);
20 #define WINDOWS_WIDTH 400
21 #define WINDOWS_HEIGHT 500
38 TEXTENTRY_MULTIPLICITY_MIN,
39 TEXTENTRY_MULTIPLICITY_MAX
42 AliStorageAdministratorPanelListEvents::AliStorageAdministratorPanelListEvents() :
43 TGMainFrame(gClient->GetRoot(),400,400),
45 fRunNumberMinEntry(0),
46 fRunNumberMaxEntry(0),
47 fEventNumberMinEntry(0),
48 fEventNumberMaxEntry(0),
49 fMultiplicityMinEntry(0),
50 fMultiplicityMaxEntry(0),
51 fProtonProtonCheckButton(0),
52 fLeadLeadCheckButton(0),
60 fEventManager = new AliStorageEventManager();
64 AliStorageAdministratorPanelListEvents::~AliStorageAdministratorPanelListEvents()
66 cout<<"ADMIN PANEL -- List events descructor called";
68 cout<<" --- OK"<<endl;
71 AliStorageAdministratorPanelListEvents* AliStorageAdministratorPanelListEvents::GetInstance()
73 if(!fInstance){fInstance = new AliStorageAdministratorPanelListEvents();}
77 void AliStorageAdministratorPanelListEvents::SetSocket(socket_t *socket)
79 fServerSocket = socket;
82 void AliStorageAdministratorPanelListEvents::InitWindow()
84 SetCleanup(kDeepCleanup);
87 AddFrame(new TGLabel(this,"Minimum run number:"),new TGLayoutHints(kLHintsLeft));
89 fRunNumberMinEntry = new TGNumberEntry(this,
93 TGNumberFormat::kNESInteger,
94 TGNumberFormat::kNEAPositive,
95 TGNumberFormat::kNELNoLimits);
96 AddFrame(fRunNumberMinEntry,new TGLayoutHints(kLHintsLeft));
99 AddFrame(new TGLabel(this,"Maximum run number:"),new TGLayoutHints(kLHintsLeft));
101 fRunNumberMaxEntry = new TGNumberEntry(this,
105 TGNumberFormat::kNESInteger,
106 TGNumberFormat::kNEAPositive,
107 TGNumberFormat::kNELNoLimits);
108 AddFrame(fRunNumberMaxEntry,new TGLayoutHints(kLHintsLeft));
111 AddFrame(new TGLabel(this,"Minimum event number:"),new TGLayoutHints(kLHintsLeft));
113 fEventNumberMinEntry = new TGNumberEntry(this,
117 TGNumberFormat::kNESInteger,
118 TGNumberFormat::kNEAPositive,
119 TGNumberFormat::kNELNoLimits);
120 AddFrame(fEventNumberMinEntry,new TGLayoutHints(kLHintsLeft));
123 AddFrame(new TGLabel(this,"Maximum event number:"),new TGLayoutHints(kLHintsLeft));
125 fEventNumberMaxEntry = new TGNumberEntry(this,
129 TGNumberFormat::kNESInteger,
130 TGNumberFormat::kNEAPositive,
131 TGNumberFormat::kNELNoLimits);
132 AddFrame(fEventNumberMaxEntry,new TGLayoutHints(kLHintsLeft));
135 AddFrame(new TGLabel(this,"Minimum multiplicity:"),new TGLayoutHints(kLHintsLeft));
137 fMultiplicityMinEntry = new TGNumberEntry(this,
140 TEXTENTRY_MULTIPLICITY_MIN,
141 TGNumberFormat::kNESInteger,
142 TGNumberFormat::kNEAPositive,
143 TGNumberFormat::kNELNoLimits);
144 AddFrame(fMultiplicityMinEntry,new TGLayoutHints(kLHintsLeft));
147 AddFrame(new TGLabel(this,"Maximum multiplicity:"),new TGLayoutHints(kLHintsLeft));
149 fMultiplicityMaxEntry = new TGNumberEntry(this,
152 TEXTENTRY_MULTIPLICITY_MAX,
153 TGNumberFormat::kNESInteger,
154 TGNumberFormat::kNEAPositive,
155 TGNumberFormat::kNELNoLimits);
156 AddFrame(fMultiplicityMaxEntry,new TGLayoutHints(kLHintsLeft));
159 AddFrame(new TGLabel(this,"System:"),new TGLayoutHints(kLHintsLeft));
160 fProtonProtonCheckButton = new TGCheckButton(this,"p-p",BUTTON_CHECK_PP);
161 fProtonProtonCheckButton->SetOn();
162 AddFrame(fProtonProtonCheckButton,new TGLayoutHints(kLHintsLeft));
165 fLeadLeadCheckButton = new TGCheckButton(this,"Pb-Pb",BUTTON_CHECK_PBPB);
166 fLeadLeadCheckButton->SetOn();
167 AddFrame(fLeadLeadCheckButton,new TGLayoutHints(kLHintsLeft));
170 AddFrame(new TGLabel(this,"Storage type:"),new TGLayoutHints(kLHintsLeft));
171 fTempCheckButton = new TGCheckButton(this,"Temporary",BUTTON_CHECK_TEMP);
172 fTempCheckButton->SetOn();
173 AddFrame(fTempCheckButton,new TGLayoutHints(kLHintsLeft));
176 fPermCheckButton = new TGCheckButton(this,"Permanent",BUTTON_CHECK_PERM);
177 fPermCheckButton->SetOn();
178 AddFrame(fPermCheckButton,new TGLayoutHints(kLHintsLeft));
181 fStatusLabel = new TGLabel(this,"");
182 AddFrame(fStatusLabel,new TGLayoutHints(kLHintsExpandX | kLHintsLeft));
185 AddFrame(new TGTextButton(this,"Close",BUTTON_CLOSE),
186 new TGLayoutHints(kLHintsLeft));
188 AddFrame(new TGTextButton(this,"Get event's list",BUTTON_GET_LIST),
189 new TGLayoutHints(kLHintsRight));
191 AddFrame(new TGTextButton(this,"Mark selected event",BUTTON_MARK_EVENT),
192 new TGLayoutHints(kLHintsRight));
196 fEventsList = new TGListBox(this,0);
197 fEventsList->AddEntry(new TGString("Run Event System Mult Marked"),0);
198 AddFrame(fEventsList,new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
200 SetWindowName("List Events");
202 Resize(WINDOWS_WIDTH,WINDOWS_HEIGHT);
209 void AliStorageAdministratorPanelListEvents::onGetListButton()
211 //prepare and send request message
212 struct serverRequestStruct *requestMessage = new struct serverRequestStruct;
213 struct listRequestStruct list;
215 //get listing parameters from somwhere
216 list.runNumber[0]=fRunNumberMinEntry->GetIntNumber();
217 list.runNumber[1]=fRunNumberMaxEntry->GetIntNumber();
218 list.eventNumber[0]=fEventNumberMinEntry->GetIntNumber();
219 list.eventNumber[1]=fEventNumberMaxEntry->GetIntNumber();
220 if(fTempCheckButton->GetState()==1)
228 if(fPermCheckButton->GetState()==1)
236 list.multiplicity[0]=fMultiplicityMinEntry->GetIntNumber();
237 list.multiplicity[1]=fMultiplicityMaxEntry->GetIntNumber();
238 if(fProtonProtonCheckButton->GetState()==1)
240 strcpy(list.system[0],"p-p");
244 strcpy(list.system[0],"");
246 if(fLeadLeadCheckButton->GetState()==1)
248 strcpy(list.system[1],"Pb-Pb");
252 strcpy(list.system[1],"");
255 requestMessage->messageType = REQUEST_LIST_EVENTS;
256 requestMessage->list = list;
258 fEventManager->Send(requestMessage,fServerSocket);
260 fEventsList->RemoveAll();
261 fEventsList->AddEntry(new TGString("Run Event System Mult Marked"),0);
263 vector<serverListStruct> receivedList = fEventManager->GetServerListVector(fServerSocket);
265 cout<<"PANEL:"<<receivedList[0].runNumber<<endl;
266 cout<<"VECTOR SIZE:"<<receivedList.size()<<endl;
268 //do something with list of maching events
269 cout<<"Received list of perm events"<<endl;
271 for(unsigned int i=0;i<receivedList.size();i++)
273 fEventsList->InsertEntry(Form("%d %d %s %d %d ",
274 receivedList[i].runNumber,
275 receivedList[i].eventNumber,
276 receivedList[i].system,
277 receivedList[i].multiplicity,
278 receivedList[i].marked),i+1,i);
280 cout<<receivedList[i].runNumber<<receivedList[i].eventNumber<<endl;
284 fEventsListVector = receivedList;
286 gClient->HandleInput();
287 gClient->NeedRedraw(fEventsList, kTRUE);
288 gClient->HandleInput();
295 void AliStorageAdministratorPanelListEvents::onMarkButton()
300 //get run and event number from selected row
301 int selectedEventNumber = fEventsList->GetSelected()-1;
303 cout<<"SELECTED:"<<selectedEventNumber<<endl;
305 if(selectedEventNumber<0)return;
307 runNumber=fEventsListVector[selectedEventNumber].runNumber;
308 eventNumber=fEventsListVector[selectedEventNumber].eventNumber;
310 struct serverRequestStruct *requestMessage = new struct serverRequestStruct;
311 struct eventStruct mark;
312 mark.runNumber = runNumber;
313 mark.eventNumber = eventNumber;
314 requestMessage->messageType = REQUEST_MARK_EVENT;
315 requestMessage->event = mark;
317 fEventManager->Send(requestMessage,fServerSocket);
319 message_t *response = new message_t();
320 fServerSocket->recv(response);
321 char *result = (char*)response->data();
322 //if(response)delete response;
324 if(!strcmp("true",result))
326 fStatusLabel->SetText("Event marked");
327 cout<<"ADMIN PANEL -- Event marked succesfully"<<endl;
331 fStatusLabel->SetText("Couldn't mark this event");
332 cout<<"ADMIN PANEL -- Could not matk event"<<endl;
336 void AliStorageAdministratorPanelListEvents::onCloseButton(){onExit();}
337 void AliStorageAdministratorPanelListEvents::CloseWindow(){onExit();}
339 void AliStorageAdministratorPanelListEvents::onExit()
341 cout<<"Quiting list events";
342 if(fInstance){delete fInstance;fInstance=0;}
343 cout<<" -- OK"<<endl;
346 Bool_t AliStorageAdministratorPanelListEvents::ProcessMessage(Long_t msg, Long_t parm1, Long_t)
348 switch (GET_MSG(msg))
351 switch (GET_SUBMSG(msg))
356 case BUTTON_CLOSE:onCloseButton();break;
357 case BUTTON_GET_LIST:onGetListButton();break;
358 case BUTTON_MARK_EVENT:onMarkButton();break;