18 #include "OutlineViewPlugin.h"
20 #include "core/modules/LanguageControl.h"
28 SIGNAL( elementAddedByUser ( QString,
30 QMap <QString, QString> &,
33 SLOT( elementAddedByUser( QString,
35 QMap <QString, QString> &,
38 connect (window, SIGNAL(elementRemovedByUser(QString)),
this,
39 SLOT(elementRemovedByUser(QString)));
42 SIGNAL(itemSelectionChanged()),
44 SLOT(itemSelectionChanged()));
47 isSyncFromTextual =
false;
52 if(selectedId != NULL)
56 delete windowBuffering;
70 qDebug() <<
"OutlineViewPlugin::onEntityAdded(" << pluginID << entity << endl;
73 QTreeWidgetItem *item;
74 QMap <QString, QString> attrs;
75 QMap <QString, QString>::iterator begin, end, it;
77 entity->getAttributeIterator(begin, end);
78 for (it = begin; it != end; ++it)
80 attrs[it.key()] = it.value();
83 if(idToItem.contains(entity->getParentUniqueId()))
85 item = window->
addElement( idToItem[entity->getParentUniqueId()],
88 entity->getUniqueId(),
97 entity->getUniqueId(),
102 idToItem[entity->getUniqueId()] = item;
104 if(entity->getType() ==
"ncl" ||
105 entity->getType() ==
"body" ||
106 entity->getType() ==
"link" ||
107 entity->getType() ==
"media" ||
108 entity->getType() ==
"context" ||
109 entity->getType() ==
"switch" ||
110 entity->getType() ==
"port" ||
111 entity->getType() ==
"switchPort" ||
112 entity->getType() ==
"regionBase" ||
113 entity->getType() ==
"descriptorBase" ||
114 entity->getType() ==
"connectorBase" ||
115 entity->getType() ==
"ruleBase" ||
116 entity->getType() ==
"transitionBase" )
118 if(!attrs.keys().contains(
"id"))
120 attrs.insert(
"id",
project->generateUniqueNCLId(entity->getType()));
126 clearErrorMessages();
132 qDebug() <<
"OutlineViewPlugin::onEntityAddError(" << error <<
")";
137 if(isSyncFromTextual)
140 QMap <QString, QString> attrs;
141 QMap <QString, QString>::iterator begin, end, it;
143 entity->getAttributeIterator(begin, end);
144 for (it = begin; it != end; ++it)
146 attrs[it.key()] = it.value();
149 idToItem[entity->getUniqueId()]->setTextColor(0, Qt::black);
150 idToItem[entity->getUniqueId()]->setToolTip(0,
"");
152 window->
updateItem(idToItem[entity->getUniqueId()], entity->getType(),
156 clearErrorMessages();
162 if(isSyncFromTextual)
170 if(idToItem.contains(entityID))
172 idToItem.remove(entityID);
174 if (selectedId != NULL && entityID == *selectedId)
181 clearErrorMessages();
184 void OutlineViewPlugin::elementRemovedByUser(QString itemId)
186 Entity *entity =
project->getEntityById(itemId);
190 void OutlineViewPlugin::elementAddedByUser( QString type,
192 QMap <QString, QString> & atts,
197 parentId =
project->getUniqueId();
199 emit
addEntity(type, parentId, atts, force);
211 window->collapseAll();
217 if(
project->getChildren().size())
220 QList <Entity *> entities;
221 entities.push_back(entity);
224 while(entities.size())
226 entity = entities.front();
227 entities.pop_front();
234 QVector<Entity *> children = entity->getChildren();
235 for(
int i = 0; i < children.size(); i++)
237 entities.push_back(children.at(i));
250 foreach(key, idToItem.keys())
257 if(!
project->getChildren().size())
return;
259 QTreeWidgetItem *item;
260 QStack <Entity*> stack;
261 Entity *entity =
project->getChildren().at(0);
263 QMap <QString, QString> attrs;
264 QMap <QString, QString>::iterator begin, end, it;
266 entity->getAttributeIterator(begin, end);
267 for (it = begin; it != end; ++it)
269 attrs[it.key()] = it.value();
275 entity->getUniqueId(),
279 idToItem[entity->getUniqueId()] = item;
282 while(stack.size() > 0)
284 entity = stack.top();
287 QVector <Entity *> children = entity->getChildren();
288 for(
int i = 0; i < children.size(); i++)
290 if(idToItem.contains(children.at(i)->getUniqueId()))
continue;
293 children.at(i)->getAttributeIterator(begin, end);
294 for (it = begin; it != end; ++it)
296 attrs[it.key()] = it.value();
299 item = window->
addElement( idToItem[entity->getUniqueId()],
301 children.at(i)->getType(),
302 children.at(i)->getUniqueId(),
306 idToItem[children.at(i)->getUniqueId()] = item;
307 stack.push_front(children.at(i));
317 qDebug() <<
"OutlineViewPlugin::debugHasSendClearAll";
320 void OutlineViewPlugin::itemSelectionChanged()
322 if(selectedId != NULL)
328 QList <QTreeWidgetItem*> selecteds = window->selectedItems();
332 selectedId =
new QString(selecteds.at(0)->text(2));
339 if(isSyncFromTextual)
344 QString *
id = (QString*)param;
347 window->setCurrentItem(item, 0);
349 qWarning() <<
"The OutlineViewPlugin receive a message to select an"
350 <<
" Entity that it doesn't know.";
354 void OutlineViewPlugin::textualStartSync(QString,
void*)
356 isSyncFromTextual =
true;
359 void OutlineViewPlugin::textualFinishSync(QString,
void*)
361 isSyncFromTextual =
false;
366 void OutlineViewPlugin::clearErrorMessages()
368 if(isSyncFromTextual)
371 qDebug() <<
"OutlineViewPlugin::clearErrorMessages" << endl;
373 foreach (QTreeWidgetItem *item, idToItem.values())
375 item->setTextColor(0, Qt::black);
376 item->setToolTip(0,
"");
382 clearErrorMessages();
387 if(isSyncFromTextual)
392 pair <QString , QString> *p = (pair <QString, QString> *) param;
394 QString uid = p->first;
399 item->setTextColor(0, Qt::red);
400 item->setToolTip(0, p->second);