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

Last change on this file since 483 was 483, checked in by garnier, 10 years ago

Correction d'un bug. La suppression d'un

élément est désormais effective

File size: 8.5 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 
73  nomdElements::typedElement eType = abstractElem->getNomdElement().getElementType();
74
75  switch (  eType ) {
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::snapshot :
101    {
102      int incr = dataManager_->getPspaApplication()->getExtensionFile();
103      incr++;
104      dataManager_->getPspaApplication()->setExtensionFile(incr);
105      GWt_abstractElement_deprecated_ = new GWt_elementSnapshot(this,abstractElem,incr);
106      break;
107    }
108  case nomdElements::inconnu :
109    GWt_abstractElement_deprecated_ = NULL;
110  }
111 
112  elementContainer_ = new WContainerWidget();
113  WVBoxLayout* vLayoutElementContainer = new WVBoxLayout();
114  vLayoutElementContainer->setContentsMargins(0,0,0,0);
115  elementContainer_->setPadding (4);
116  elementContainer_->setStyleClass("beamLineIcon");
117  elementContainer_->setLayout(vLayoutElementContainer);
118 
119  if (GWt_abstractElement_deprecated_ != NULL) {
120    vLayoutElementContainer->addWidget(GWt_abstractElement_deprecated_);
121    GWt_abstractElement_deprecated_->setMaximumSize(64,40);
122    GWt_abstractElement_deprecated_->setMinimumSize(64,40);
123  }
124 
125  if (GWt_abstractElement_deprecated_ == NULL) {
126    elementLabel_ = new WText();
127  } else {
128    elementLabel_ = new WText(GWt_abstractElement_deprecated_->getAbstractElement()->getLabel());
129    }
130 
131  vLayoutElementContainer->addWidget(elementLabel_,Wt::AlignCenter |Wt::AlignMiddle);
132  //    gridLayout->addWidget(elementLabel_,1,0,1,3,Wt::AlignCenter |Wt::AlignMiddle);
133 
134  // Add Actions
135  WContainerWidget* actions = new WContainerWidget();
136  WHBoxLayout* hLayoutActions = new WHBoxLayout();
137  actions->setStyleClass("beamLineElementActions");
138  actions->setPositionScheme(Wt::Static);
139 
140  actions->setLayout(hLayoutActions);
141  hLayoutActions->setContentsMargins(0,0,0,0);
142 
143  actionParameters_ = new WText("&nbsp;");
144  actionTrash_ = new WText("&nbsp;");
145 
146    // set tooltips
147  actionParameters_->setToolTip("change parameters");
148  actionTrash_->setToolTip("delete");
149 
150  // Set class for actions elements
151  actionParameters_->setStyleClass("Button WhiteButton HiddenButton parameters");
152  actionParameters_->setMaximumSize(32,32);
153  actionParameters_->setMinimumSize(32,32);
154 
155  actionTrash_->setStyleClass("Button WhiteButton HiddenButton trash");
156  actionTrash_->setMaximumSize(32,32);
157  actionTrash_->setMinimumSize(32,32);
158 
159  // Set the global action class
160  actions->setOffsets(0);
161 
162  hLayoutActions->addWidget(actionParameters_);
163  hLayoutActions->addWidget(actionTrash_);
164  vLayoutElementContainer->addWidget(actions);
165 
166  // add software name
167  softwareName_ = new WText("");
168  softwareName_->setStyleClass("softwareElementLigneFaisceauName");
169  vLayoutElementContainer->addWidget(softwareName_);
170 
171  gridLayout->addWidget (elementContainer_,0,1);
172  gridLayout->setColumnStretch (0,1);
173  gridLayout->setColumnStretch (2,1);
174 
175  // Change background color
176  setBGColor(WColor(bgcolor));
177
178  // set layout
179  setLayout(gridLayout);
180 
181  // enable signals
182  elementContainer_->mouseWentOut().connect(this,&GWt_elementLigneFaisceau::mouseWentOut);
183  elementContainer_->mouseWentOver().connect(this,&GWt_elementLigneFaisceau::mouseWentOver);
184  actionParameters_->clicked().connect(GWt_abstractElement_deprecated_,&GWt_abstractElement::showParameters);
185  actionTrash_->clicked().connect(GWt_abstractElement_deprecated_,&GWt_abstractElement::deleteElement);
186
187}
188
189GWt_elementLigneFaisceau::~GWt_elementLigneFaisceau()
190{}
191
192
193void GWt_elementLigneFaisceau::setBGColor(const WColor c) {
194  elementContainer_->decorationStyle().setBackgroundColor (c);
195}
196
197void GWt_elementLigneFaisceau::removeDone(GWt_abstractElement* gw)
198{
199  if (messageDropZone_->result() == WDialog::Accepted) {
200    // FIXME
201    //    removeDropZone();
202  }
203}
204
205
206std::string GWt_elementLigneFaisceau::getElementNumberInBeamLine(nomdElements elem)
207{
208  string str = "";
209   
210  if (static_cast <WContainerWidget*> (parent())) {
211    WContainerWidget* wc = static_cast <WContainerWidget*> (parent());
212    for (int a=0; a<wc->count(); a++) {
213      if (static_cast <GWt_abstractElement*> (wc->widget (a))) {
214        //        GWt_abstractElement* ab = static_cast <GWt_abstractElement*> (wc->widget (a));
215        /*
216          printf("1--->%d\n",ab->getElement());
217          printf("2--->%d\n",ab->getElement()->getLenghtOfElement());
218          printf("3--->%d\n",ab->getElement()->getName().getElementType());
219          printf("4--->%d\n",elem.getElementType());
220         
221          if (static_cast <GWt_abstractElement*> (wc->widget (a))->getElement()->getName().getElementType() == elem.getElementType()) {
222          pspa_->addConsoleMessage("type trouvÈ");
223          } else {
224          pspa_->addConsoleMessage("type trouvÈ NOT ");
225                 }
226        */
227               
228      }
229    }
230   
231    int n = 999999;
232   
233    std::stringstream stream;
234    stream << n ;
235    std::string number(stream.str());
236   
237    if(n < 10) {
238      str= elem.getGenericLabel()+"0"+number;
239    } else {
240      str= elem.getGenericLabel()+number;
241    }
242  }
243 
244  return str;
245}
246
247
248void GWt_elementLigneFaisceau::setElementLabel(std::string label) {
249  if (elementLabel_) {
250    elementLabel_->setText(label.substr(0,10));
251    elementLabel_->setToolTip(label);
252  }
253}
254
255
256void GWt_elementLigneFaisceau::mouseWentOut() {
257  actionParameters_->setStyleClass("Button WhiteButton HiddenButton parameters");
258  actionTrash_->setStyleClass("Button WhiteButton HiddenButton trash");
259}
260
261
262void GWt_elementLigneFaisceau::mouseWentOver() {
263  actionParameters_->setStyleClass("Button WhiteButton ContrastButton parameters");
264  actionTrash_->setStyleClass("Button WhiteButton ContrastButton trash");
265}
Note: See TracBrowser for help on using the repository browser.