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, 11 years ago

Correction d'un bug. La suppression d'un

élément est désormais effective

File size: 8.5 KB
RevLine 
[178]1#include <iostream>
2
[265]3#include "GWt_elementLigneFaisceau.h"
[437]4#include "GWt_abstractElementFactory.h"
[198]5#include "nomdElements.h"
[242]6#include "GWt_console.h"
[248]7#include "abstractElement.h"
[178]8
[248]9
[178]10#include <Wt/WCssDecorationStyle>
[186]11#include <Wt/WSignalMapper>
[178]12#include <Wt/WText>
[198]13#include <Wt/WHBoxLayout>
[239]14#include <Wt/WGridLayout>
[246]15#include <Wt/WLength>
16#include <Wt/WVBoxLayout>
[267]17#include <Wt/WApplication>
[178]18
[272]19#define PSPA_DEBUG 1
[246]20
[178]21
[469]22GWt_elementLigneFaisceau::GWt_elementLigneFaisceau(dataManager* data,GWt_ligneFaisceau* ligne, abstractElement* abstractElem,std::string bgcolor)
[379]23  : WContainerWidget(),
24    firstTimeInsertMessage_(NULL),
25    dropZoneLeft_(NULL),
26    dropZoneRight_(NULL),
[455]27    GWt_abstractElement_deprecated_(NULL),
[379]28    elementLabel_(NULL),
[455]29    dataManager_(data)
[178]30{
[379]31  // set the css name
32  setObjectName("elementLigneFaisceau");
[469]33  initialize_ligneFaisceau(ligne,abstractElem,bgcolor);
[178]34}
35
[469]36void GWt_elementLigneFaisceau::initialize_ligneFaisceau(GWt_ligneFaisceau* ligne, abstractElement* abstractElem,std::string bgcolor)
[379]37{   
38  // set layout
39  //     +----------+--------+---------+
40  //     |   (--->) |  ELEM  | (-----) |
41  //     +----------+--------+---------+
42 
43  WGridLayout *gridLayout = new WGridLayout();
[248]44   
[379]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
[455]50  dropZoneLeft_ = new GWt_dropZoneLigneFaisceau(dataManager_,ligne);
51  dropZoneRight_ = new GWt_dropZoneLigneFaisceau(dataManager_,ligne);
[379]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
[455]61  dropZoneLeft_ = new GWt_dropZoneLigneFaisceau(dataManager_,ligne);
62  dropZoneRight_ = new GWt_dropZoneLigneFaisceau(dataManager_,ligne);
[379]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
[455]72 
73  nomdElements::typedElement eType = abstractElem->getNomdElement().getElementType();
74
[379]75  switch (  eType ) {
[418]76  case nomdElements::RFgun :
[455]77    GWt_abstractElement_deprecated_ = new GWt_elementRfgun(this,abstractElem);
[379]78    break;
[418]79  case nomdElements::drift :
[455]80    GWt_abstractElement_deprecated_ = new GWt_elementDrift(this,abstractElem);
[379]81    break;
[418]82  case nomdElements::cell  :
[455]83    GWt_abstractElement_deprecated_ = new GWt_elementCell(this,abstractElem);
[379]84    break;
[418]85  case nomdElements::bend  :
[455]86    GWt_abstractElement_deprecated_ = new GWt_elementBend(this,abstractElem);
[379]87    break;
[418]88  case nomdElements::soleno  :
[455]89    GWt_abstractElement_deprecated_ = new GWt_elementSoleno(this,abstractElem);
[379]90    break;
[418]91  case nomdElements::beam  :
[455]92    GWt_abstractElement_deprecated_ = new GWt_elementBeam(this,abstractElem);
[379]93    break;
[418]94  case nomdElements::fit  :
[455]95    GWt_abstractElement_deprecated_ = new GWt_elementFit(this,abstractElem);
[379]96    break;
[431]97  case nomdElements::mpole  :
[455]98    GWt_abstractElement_deprecated_ = new GWt_elementMpole(this,abstractElem);
[431]99    break;
[418]100  case nomdElements::snapshot :
[379]101    {
[455]102      int incr = dataManager_->getPspaApplication()->getExtensionFile();
[379]103      incr++;
[455]104      dataManager_->getPspaApplication()->setExtensionFile(incr);
105      GWt_abstractElement_deprecated_ = new GWt_elementSnapshot(this,abstractElem,incr);
[379]106      break;
[347]107    }
[418]108  case nomdElements::inconnu :
[455]109    GWt_abstractElement_deprecated_ = NULL;
[379]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 
[455]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);
[379]123  }
124 
[455]125  if (GWt_abstractElement_deprecated_ == NULL) {
[379]126    elementLabel_ = new WText();
127  } else {
[455]128    elementLabel_ = new WText(GWt_abstractElement_deprecated_->getAbstractElement()->getLabel());
[347]129    }
[379]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();
[382]136  WHBoxLayout* hLayoutActions = new WHBoxLayout();
[379]137  actions->setStyleClass("beamLineElementActions");
138  actions->setPositionScheme(Wt::Static);
139 
[382]140  actions->setLayout(hLayoutActions);
141  hLayoutActions->setContentsMargins(0,0,0,0);
[379]142 
143  actionParameters_ = new WText("&nbsp;");
144  actionTrash_ = new WText("&nbsp;");
145 
[365]146    // set tooltips
[379]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 
[382]162  hLayoutActions->addWidget(actionParameters_);
163  hLayoutActions->addWidget(actionTrash_);
[379]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 
[469]175  // Change background color
176  setBGColor(WColor(bgcolor));
177
[379]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);
[455]184  actionParameters_->clicked().connect(GWt_abstractElement_deprecated_,&GWt_abstractElement::showParameters);
185  actionTrash_->clicked().connect(GWt_abstractElement_deprecated_,&GWt_abstractElement::deleteElement);
186
[178]187}
188
[379]189GWt_elementLigneFaisceau::~GWt_elementLigneFaisceau()
190{}
[223]191
[401]192
[347]193void GWt_elementLigneFaisceau::setBGColor(const WColor c) {
[379]194  elementContainer_->decorationStyle().setBackgroundColor (c);
[347]195}
196
[265]197void GWt_elementLigneFaisceau::removeDone(GWt_abstractElement* gw)
[186]198{
[379]199  if (messageDropZone_->result() == WDialog::Accepted) {
200    // FIXME
201    //    removeDropZone();
202  }
[199]203}
[186]204
[198]205
[379]206std::string GWt_elementLigneFaisceau::getElementNumberInBeamLine(nomdElements elem)
207{
208  string str = "";
[272]209   
[379]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 ");
[272]225                 }
[379]226        */
[272]227               
[379]228      }
[198]229    }
230   
[379]231    int n = 999999;
232   
233    std::stringstream stream;
234    stream << n ;
235    std::string number(stream.str());
236   
237    if(n < 10) {
[418]238      str= elem.getGenericLabel()+"0"+number;
[379]239    } else {
[418]240      str= elem.getGenericLabel()+number;
[379]241    }
242  }
243 
244  return str;
[198]245}
[264]246
[305]247
248void GWt_elementLigneFaisceau::setElementLabel(std::string label) {
[379]249  if (elementLabel_) {
250    elementLabel_->setText(label.substr(0,10));
251    elementLabel_->setToolTip(label);
252  }
[264]253}
[365]254
255
256void GWt_elementLigneFaisceau::mouseWentOut() {
[379]257  actionParameters_->setStyleClass("Button WhiteButton HiddenButton parameters");
258  actionTrash_->setStyleClass("Button WhiteButton HiddenButton trash");
[365]259}
260
261
262void GWt_elementLigneFaisceau::mouseWentOver() {
[379]263  actionParameters_->setStyleClass("Button WhiteButton ContrastButton parameters");
264  actionTrash_->setStyleClass("Button WhiteButton ContrastButton trash");
[369]265}
Note: See TracBrowser for help on using the repository browser.