source: PSPA/Interface_Web/trunk/pspaWT/sources/userInterface/src/GWt_elementLigneFaisceau.cc @ 375

Last change on this file since 375 was 375, checked in by garnier, 11 years ago

Affichage du nom du cas test dans le titre de la fenetre + see History

File size: 9.4 KB
Line 
1#include <iostream>
2
3#include "GWt_elementLigneFaisceau.h"
4#include "nomdElements.h"
5#include "GWt_console.h"
6#include "abstractElement.h"
7#include "GWt_rfgun.h"
8#include "GWt_drift.h"
9#include "GWt_cell.h"
10#include "GWt_bend.h"
11#include "GWt_soleno.h"
12#include "GWt_beam.h"
13#include "GWt_fit.h"
14#include "GWt_snapshot.h"
15
16
17#include <Wt/WCssDecorationStyle>
18#include <Wt/WSignalMapper>
19#include <Wt/WText>
20#include <Wt/WImage>
21#include <Wt/WHBoxLayout>
22#include <Wt/WGridLayout>
23#include <Wt/WLength>
24#include <Wt/WVBoxLayout>
25#include <Wt/WApplication>
26
27#define PSPA_DEBUG 1
28
29GWt_elementLigneFaisceau::GWt_elementLigneFaisceau(PspaApplication* pspa)
30: WContainerWidget(),
31firstTimeInsertMessage_(NULL),
32dropZoneLeft_(NULL),
33dropZoneRight_(NULL),
34GWt_abstractElement_(NULL),
35elementLabel_(NULL),
36pspa_(pspa)
37{
38    initialize_ligneFaisceau(inconnu);
39}
40
41
42GWt_elementLigneFaisceau::GWt_elementLigneFaisceau(typedElement type, PspaApplication* pspa)
43: WContainerWidget(),
44firstTimeInsertMessage_(NULL),
45dropZoneLeft_(NULL),
46dropZoneRight_(NULL),
47GWt_abstractElement_(NULL),
48elementLabel_(NULL),
49pspa_(pspa)
50{
51    // set the css name
52    setObjectName("elementLigneFaisceau");
53    initialize_ligneFaisceau(type);
54}
55
56void GWt_elementLigneFaisceau::initialize_ligneFaisceau(typedElement eType)
57{
58   
59    cout<<"new GWt_elementLigneFaisceau : "<< this << endl;
60   
61    // set layout
62    //     +----------+--------+---------+
63    //     |   (--->) |  ELEM  | (-----) |
64    //     +----------+--------+---------+
65   
66   
67    WGridLayout *gridLayout = new WGridLayout();
68   
69    gridLayout->setContentsMargins(0,0,0,0);
70    gridLayout->setHorizontalSpacing(0);
71    gridLayout->setVerticalSpacing(0);
72   
73    // add first line :  initialize arrow and link images
74    dropZoneLeft_ = new GWt_dropZoneLigneFaisceau(pspa_);
75    dropZoneRight_ = new GWt_dropZoneLigneFaisceau(pspa_);
76   
77    // change object name in order to manage css :
78    dropZoneLeft_->resize(10,30);
79    dropZoneRight_->resize(10,30);
80   
81    gridLayout->addWidget       (dropZoneLeft_,0,0);
82    gridLayout->addWidget       (dropZoneRight_,0,2);
83   
84    // add first line :  initialize arrow and link images
85    dropZoneLeft_ = new GWt_dropZoneLigneFaisceau(pspa_);
86    dropZoneRight_ = new GWt_dropZoneLigneFaisceau(pspa_);
87   
88    // change object name in order to manage css :
89    dropZoneLeft_->resize(10,30);
90    dropZoneRight_->resize(10,30);
91   
92    gridLayout->addWidget       (dropZoneLeft_,0,0);
93    gridLayout->addWidget       (dropZoneRight_,0,2);
94   
95    // add the image if present
96   
97    switch (  eType ) {
98        case RFgun :
99            GWt_abstractElement_ = new GWt_rfgun(this);
100            break;
101        case drift :
102            GWt_abstractElement_ = new GWt_drift(this);
103            break;
104        case cell  :
105            GWt_abstractElement_ = new GWt_cell(this);
106            break;
107        case bend  :
108            GWt_abstractElement_ = new GWt_bend(this);
109            break;
110        case soleno  :
111            GWt_abstractElement_ = new GWt_soleno(this);
112            break;
113        case beam  :
114            GWt_abstractElement_ = new GWt_beam(this);
115            break;
116        case fit  :
117            GWt_abstractElement_ = new GWt_fit(this);
118            break;
119        case snapshot  :
120            GWt_abstractElement_ = new GWt_snapshot(this);
121            break;
122        case inconnu :
123            GWt_abstractElement_ = NULL;
124    }
125   
126    elementContainer_ = new WContainerWidget();
127    WVBoxLayout* vLayoutElementContainer = new WVBoxLayout();
128   
129    elementContainer_->setStyleClass("beamLineIcon");
130    elementContainer_->setLayout(vLayoutElementContainer);
131   
132   
133   
134    if (GWt_abstractElement_ != NULL) {
135        vLayoutElementContainer->addWidget(GWt_abstractElement_);
136        GWt_abstractElement_->setMaximumSize(80,80);
137        GWt_abstractElement_->setMinimumSize(80,80);
138    }
139   
140    if (GWt_abstractElement_ == NULL) {
141        elementLabel_ = new WText();
142    } else {
143        elementLabel_ = new WText(GWt_abstractElement_->getAbstractElement()->getLabel());
144    }
145   
146    vLayoutElementContainer->addWidget(elementLabel_,Wt::AlignCenter |Wt::AlignMiddle);
147    //    gridLayout->addWidget(elementLabel_,1,0,1,3,Wt::AlignCenter |Wt::AlignMiddle);
148   
149    // Add Actions
150    WContainerWidget* actions = new WContainerWidget();
151    WVBoxLayout* vLayoutActions = new WVBoxLayout();
152    actions->setLayout(vLayoutActions);
153   
154    actionParameters_ = new WText("&nbsp;");
155    actionTrash_ = new WText("&nbsp;");
156   
157    // set tooltips
158    actionParameters_->setToolTip("change parameters");
159    actionTrash_->setToolTip("delete");
160
161    // Set class for actions elements
162    actionParameters_->setStyleClass("Button WhiteButton HiddenButton parameters");
163    actionParameters_->setMaximumSize(32,32);
164    actionParameters_->setMinimumSize(32,32);
165    actionParameters_->setPositionScheme(Wt::Static);
166   
167    actionTrash_->setStyleClass("Button WhiteButton HiddenButton trash");
168    actionTrash_->setMaximumSize(32,32);
169    actionTrash_->setMinimumSize(32,32);
170    actionTrash_->setPositionScheme(Wt::Static);
171   
172    // Set the global action class
173    actions->setStyleClass("beamLineElementActions");
174    actions->setPositionScheme(Wt::Static);
175    actions->setOffsets(0);
176   
177    vLayoutActions->addWidget(actionParameters_);
178    vLayoutActions->addWidget(actionTrash_);
179    vLayoutElementContainer->addWidget(actions);
180   
181    // add software name
182    softwareName_ = new WText("");
183    softwareName_->setStyleClass("softwareElementLigneFaisceauName");
184    vLayoutElementContainer->addWidget(softwareName_);
185   
186    gridLayout->addWidget       (elementContainer_,0,1);
187
188    gridLayout->setColumnStretch (0,1);
189    gridLayout->setColumnStretch (2,1);
190   
191    // set layout
192    setLayout(gridLayout);
193   
194    // enable signals
195    elementContainer_->mouseWentOut().connect(this,&GWt_elementLigneFaisceau::mouseWentOut);
196    elementContainer_->mouseWentOver().connect(this,&GWt_elementLigneFaisceau::mouseWentOver);
197
198    actionParameters_->clicked().connect(GWt_abstractElement_,&GWt_abstractElement::showParameters);
199    actionTrash_->clicked().connect(GWt_abstractElement_,&GWt_abstractElement::deleteElement);
200}
201
202
203GWt_elementLigneFaisceau::~GWt_elementLigneFaisceau()
204{
205}
206
207void GWt_elementLigneFaisceau::update() {
208    if (getGWt_AbstractElement()->getAbstractElement()) {
209        if (getGWt_AbstractElement()->getAbstractElement()->getAbstractSoftware()) {
210            setBGColor(WColor(getGWt_AbstractElement()->getAbstractElement()->getAbstractSoftware()->getColor()));
211            softwareName_->setText(getGWt_AbstractElement()->getAbstractElement()->getAbstractSoftware()->getName());
212        }
213    }
214}
215
216
217void GWt_elementLigneFaisceau::setBGColor(const WColor c) {
218    elementContainer_->decorationStyle().setBackgroundColor (c);
219}
220
221
222void GWt_elementLigneFaisceau::removeDone(GWt_abstractElement* gw)
223{
224    if (messageDropZone_->result() == WDialog::Accepted) {
225        // FIXME
226        //    removeDropZone();
227    }
228}
229
230
231void GWt_elementLigneFaisceau::addElement(GWt_abstractElement* elem)
232{
233    clear();
234    GWt_abstractElement_ = elem;
235    addWidget(GWt_abstractElement_);
236    if (static_cast <WContainerWidget*> (parent())) {
237        WContainerWidget* wc = static_cast <WContainerWidget*> (parent());
238        WBoxLayout* layout = ((WBoxLayout*)(wc->layout()));
239        layout->setStretchFactor(this,0);
240    }
241   
242   
243    firstTimeInsertMessage_ = NULL;
244    dropZoneLeft_ = NULL;
245}
246
247
248std::string GWt_elementLigneFaisceau::getElementNumberInBeamLine(nomdElements elem){
249    string str = "";
250   
251    if (static_cast <WContainerWidget*> (parent())) {
252        WContainerWidget* wc = static_cast <WContainerWidget*> (parent());
253        for (int a=0; a<wc->count(); a++) {
254            if (static_cast <GWt_abstractElement*> (wc->widget (a))) {
255                //        GWt_abstractElement* ab = static_cast <GWt_abstractElement*> (wc->widget (a));
256                /*
257                 printf("1--->%d\n",ab->getElement());
258                 printf("2--->%d\n",ab->getElement()->getLenghtOfElement());
259                 printf("3--->%d\n",ab->getElement()->getName().getElementType());
260                 printf("4--->%d\n",elem.getElementType());
261                 
262                 if (static_cast <GWt_abstractElement*> (wc->widget (a))->getElement()->getName().getElementType() == elem.getElementType()) {
263                 pspa_->addConsoleMessage("type trouvÈ");
264                 } else {
265                 pspa_->addConsoleMessage("type trouvÈ NOT ");
266                 }
267                 */
268               
269            }
270        }
271       
272        int n = 999999;
273       
274        std::stringstream stream;
275        stream << n ;
276        std::string number(stream.str());
277       
278        if(n < 10) {
279            str= elem.getElementLabel()+"0"+number;
280        } else {
281            str= elem.getElementLabel()+number;
282        }
283    }
284   
285    return str;
286}
287
288
289void GWt_elementLigneFaisceau::setElementLabel(std::string label) {
290    if (elementLabel_) {
291        elementLabel_->setText(label.substr(0,10));
292        elementLabel_->setToolTip(label);
293    }
294}
295
296
297void GWt_elementLigneFaisceau::mouseWentOut() {
298    actionParameters_->setStyleClass("Button WhiteButton HiddenButton parameters");
299    actionTrash_->setStyleClass("Button WhiteButton HiddenButton trash");
300}
301
302
303void GWt_elementLigneFaisceau::mouseWentOver() {
304    actionParameters_->setStyleClass("Button WhiteButton ContrastButton parameters");
305    actionTrash_->setStyleClass("Button WhiteButton ContrastButton trash");
306}
Note: See TracBrowser for help on using the repository browser.