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

Last change on this file since 496 was 487, checked in by touze, 10 years ago

ajout de quadrupole et sextupole

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