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

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

Changement de la couleur des sections selectionnes + plein dautres choses

File size: 7.6 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 inconnu :
120            GWt_abstractElement_ = NULL;
121    }
122   
123    elementContainer_ = new WContainerWidget();
124    WVBoxLayout* vLayoutElementContainer = new WVBoxLayout();
125   
126    elementContainer_->setStyleClass("beamLineIcon");
127    elementContainer_->setLayout(vLayoutElementContainer);
128   
129   
130   
131    if (GWt_abstractElement_ != NULL) {
132        vLayoutElementContainer->addWidget(GWt_abstractElement_);
133        GWt_abstractElement_->setMaximumSize(80,80);
134        GWt_abstractElement_->setMinimumSize(80,80);
135    }
136   
137    if (GWt_abstractElement_ == NULL) {
138        elementLabel_ = new WText();
139    } else {
140        elementLabel_ = new WText(GWt_abstractElement_->getAbstractElement()->getLabel());
141    }
142   
143    vLayoutElementContainer->addWidget(elementLabel_,Wt::AlignCenter |Wt::AlignMiddle);
144    //    gridLayout->addWidget(elementLabel_,1,0,1,3,Wt::AlignCenter |Wt::AlignMiddle);
145   
146    // Add Actions
147    WContainerWidget* actions = new WContainerWidget();
148    WVBoxLayout* vLayoutActions = new WVBoxLayout();
149    actions->setLayout(vLayoutActions);
150   
151    WText* actionParameters = new WText("&nbsp;");
152    WText* actionSoftware = new WText("Software");
153   
154    // Set class for actions elements
155    actionParameters->setStyleClass("Button WhiteButton ContrastButton parameters");
156    actionParameters->setMaximumSize(32,32);
157    actionParameters->setMinimumSize(32,32);
158   
159    actionSoftware->setStyleClass("Button WhiteButton ContrastButton software");
160    actionParameters->setPositionScheme(Wt::Static);
161   
162    // Set the global action class
163    actions->setStyleClass("beamLineElementActions");
164    actions->setPositionScheme(Wt::Static);
165    actions->setOffsets(0);
166   
167    vLayoutActions->addWidget(actionParameters);
168    vLayoutActions->addWidget(actionSoftware);
169    vLayoutElementContainer->addWidget(actions);
170   
171    gridLayout->addWidget       (elementContainer_,0,1);
172   
173    gridLayout->setColumnStretch (0,1);
174    gridLayout->setColumnStretch (2,1);
175   
176    // set layout
177    setLayout(gridLayout);
178   
179}
180
181
182GWt_elementLigneFaisceau::~GWt_elementLigneFaisceau()
183{
184}
185
186void GWt_elementLigneFaisceau::setBGColor(const WColor c) {
187    elementContainer_->decorationStyle().setBackgroundColor (c);
188}
189
190
191void GWt_elementLigneFaisceau::removeDone(GWt_abstractElement* gw)
192{
193    if (messageDropZone_->result() == WDialog::Accepted) {
194        // FIXME
195        //    removeDropZone();
196    }
197}
198
199
200void GWt_elementLigneFaisceau::addElement(GWt_abstractElement* elem)
201{
202    clear();
203    GWt_abstractElement_ = elem;
204    addWidget(GWt_abstractElement_);
205    if (static_cast <WContainerWidget*> (parent())) {
206        WContainerWidget* wc = static_cast <WContainerWidget*> (parent());
207        WBoxLayout* layout = ((WBoxLayout*)(wc->layout()));
208        layout->setStretchFactor(this,0);
209    }
210   
211   
212    firstTimeInsertMessage_ = NULL;
213    dropZoneLeft_ = NULL;
214}
215
216
217std::string GWt_elementLigneFaisceau::getElementNumberInBeamLine(nomdElements elem){
218    string str = "";
219   
220    if (static_cast <WContainerWidget*> (parent())) {
221        WContainerWidget* wc = static_cast <WContainerWidget*> (parent());
222        for (int a=0; a<wc->count(); a++) {
223            if (static_cast <GWt_abstractElement*> (wc->widget (a))) {
224                //        GWt_abstractElement* ab = static_cast <GWt_abstractElement*> (wc->widget (a));
225                /*
226                 printf("1--->%d\n",ab->getElement());
227                 printf("2--->%d\n",ab->getElement()->getLenghtOfElement());
228                 printf("3--->%d\n",ab->getElement()->getName().getElementType());
229                 printf("4--->%d\n",elem.getElementType());
230                 
231                 if (static_cast <GWt_abstractElement*> (wc->widget (a))->getElement()->getName().getElementType() == elem.getElementType()) {
232                 pspa_->addConsoleMessage("type trouvÈ");
233                 } else {
234                 pspa_->addConsoleMessage("type trouvÈ NOT ");
235                 }
236                 */
237               
238            }
239        }
240       
241        int n = 999999;
242       
243        std::stringstream stream;
244        stream << n ;
245        std::string number(stream.str());
246       
247        if(n < 10) {
248            str= elem.getElementLabel()+"0"+number;
249        } else {
250            str= elem.getElementLabel()+number;
251        }
252    }
253   
254    return str;
255}
256
257
258void GWt_elementLigneFaisceau::setElementLabel(std::string label) {
259    if (elementLabel_) {
260        elementLabel_->setText(label.substr(0,10));
261        elementLabel_->setToolTip(label);
262    }
263}
Note: See TracBrowser for help on using the repository browser.