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

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

merge avec la branche 12_03_12-managerComboBox

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