diff options
author | Sandro S. Andrade <sandroandrade@kde.org> | 2013-11-27 14:59:39 -0300 |
---|---|---|
committer | Sandro S. Andrade <sandroandrade@kde.org> | 2013-11-27 19:07:09 +0100 |
commit | 1c5eb2d398f03e3a1227305aab652c18ed7df174 (patch) | |
tree | 028a89fed1cee7ee7fdc8a7ce01c9e008efc5ac6 /examples/uml | |
parent | 480140149c6ebd4a90da2227e022f51aeec935a1 (diff) |
Add first steps for element creation during design space navigation
Change-Id: Ic27a8d4452d598259531315dfea15ff416cb8000
Reviewed-by: Sandro S. Andrade <sandroandrade@kde.org>
Diffstat (limited to 'examples/uml')
3 files changed, 40 insertions, 16 deletions
diff --git a/examples/uml/duse-mt/src/app/SADuse.xmi b/examples/uml/duse-mt/src/app/SADuse.xmi index 04714586..fab95038 100644 --- a/examples/uml/duse-mt/src/app/SADuse.xmi +++ b/examples/uml/duse-mt/src/app/SADuse.xmi @@ -1,6 +1,15 @@ <?xml version="1.0" encoding="UTF-8"?> <xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:duse="http://liveblue.wordpress.com/Duse" xmlns:uml="http://www.omg.org/spec/UML/20110701"> <duse:DesignSpace name="SADuse" xmi:id="SADuse" requiredProfile="SADuseProfile"> + <packageImport xmi:type="uml:PackageImport" xmi:id="_packageImport.0"> + <importedPackage href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#_0"/> + </packageImport> + <elementImport xmi:type="uml:ElementImport" xmi:id="ElementImport.0"> + <importedElement href="http://www.omg.org/spec/UML/20110701/UML.xmi#NamedElement"/> + </elementImport> + <elementImport xmi:type="uml:ElementImport" xmi:id="ElementImport.1"> + <importedElement href="http://www.omg.org/spec/UML/20110701/UML.xmi#Component"/> + </elementImport> <qualityMetric xmi:type="duse:QualityMetric" name="Control Robustness" xmi:id="SADuse-ControlRobustness"> <expression xmi:type="uml:OpaqueExpression" xmi:id="SADuse-ControlRobustness-Expression"> <language>JavaScript</language> @@ -40,7 +49,9 @@ <language>JavaScript</language> <body>input</body> </valueSelectionRule> + <targetProperty href="NamedElement-visibility"/> </modelChange> + <addedElement href="http://www.omg.org/spec/UML/20110701/UML.xmi#Component"/> </variationPoint> <variationPoint xmi:type="duse:VariationPoint" name="Proportional-Integral" xmi:id="SADuse-ControlLaw-Proportional-Integral"> <modelChange xmi:type="duse:ModelChange" xmi:id="SADuse-ControlLaw-Proportional-Integral-ModelChange1"> diff --git a/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp b/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp index c07fb6e5..f1fd43bc 100644 --- a/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp +++ b/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp @@ -53,7 +53,6 @@ #include <QtWidgets/QTableWidget> #include <QtWidgets/QApplication> - #include <QtCore/QFileInfo> #include <QtScript/QScriptValueIterator> @@ -79,6 +78,8 @@ #include "newdusedesigndialog.h" +#include <QDebug> + template <class T> QScriptValue qSetToScriptValue(QScriptEngine *engine, const QSet<T *> &elements) { @@ -123,10 +124,10 @@ DesignSpaceExplorerPlugin::DesignSpaceExplorerPlugin(QObject *parent) : _metricsQuickView(new QQuickView), _designSpaceExplorer(new QTableWidget), _currentDesignSpaceLocationView(new QModelingObjectView), - _currentDesignSpaceLocationModel(new QModelingObjectModel), + _currentDesignSpaceLocationQtModel(new QModelingObjectModel), _newDuseDesignDialog(new NewDuseDesignDialog) { - _currentDesignSpaceLocationView->setModel(_currentDesignSpaceLocationModel); + _currentDesignSpaceLocationView->setModel(_currentDesignSpaceLocationQtModel); } DesignSpaceExplorerPlugin::~DesignSpaceExplorerPlugin() @@ -305,22 +306,30 @@ void DesignSpaceExplorerPlugin::openDuseDesign() void DesignSpaceExplorerPlugin::currentDesignSpaceLocationChanged() { - qDeleteAll(_currentDesignSpaceLocation); + qDeleteAll(_currentDesignSpaceLocationMofModel); + _currentDesignSpaceLocationMofModel.clear(); + _currentDesignSpaceLocation.clear(); -// QXmiReader reader; -// QFile inputModel(_newDuseDesignDialog->_inputModelFileName); -// if (!inputModel.open(QFile::ReadOnly | QFile::Text)) { -// QMessageBox::critical(0, tr("Create new DuSE design"), tr("Cannot read file %1").arg(_newDuseDesignDialog->_inputModelFileName)); -// return; -// } -// _currentDesignSpaceLocation = reader.readFile(&inputModel); + QModelingObject *designSpaceObject = _duseInstance.first()->asQModelingObject(); + int rowCount = _designSpaceExplorer->rowCount(); + for (int i = 0; i < rowCount; ++i) + _currentDesignSpaceLocation[_designSpaceExplorer->item(i, 1)->text()][qmodelingelementproperty_cast<QDuseDesignDimension *>(designSpaceObject->findChild<QModelingObject *>(_designSpaceExplorer->item(i, 0)->text()))] = qmodelingelementproperty_cast<QDuseVariationPoint *>(designSpaceObject->findChild<QModelingObject *>((dynamic_cast<QComboBox *>(_designSpaceExplorer->cellWidget(i, 2)))->currentText())); + foreach (QModelingElement *element, _core->projectController()->currentModelElements()) - _currentDesignSpaceLocation << element->clone(); + _currentDesignSpaceLocationMofModel << element->clone(); QList<QModelingObject *> currentModelObjects; - foreach (QModelingElement *element, _currentDesignSpaceLocation) + foreach (QModelingElement *element, _currentDesignSpaceLocationMofModel) currentModelObjects << element->asQModelingObject(); - _currentDesignSpaceLocationModel->setModelingObjects(currentModelObjects); + QDuseDesignSpace *designSpace = dynamic_cast<QDuseDesignSpace *>(_duseInstance.first()); + foreach (QDuseDesignDimension *designDimension, designSpace->designDimensions()) + foreach (QDuseDesignDimensionInstance *designDimensionInstance, designDimension->designDimensionInstances()) { + QDuseVariationPoint *variationPoint = _currentDesignSpaceLocation[designDimensionInstance->targetInstance()->asQModelingObject()->objectName()][designDimension]; + foreach (QModelingElement *addedElement, variationPoint->addedElements()) + qDebug() << "Added" << addedElement->asQModelingObject()->objectName(); + } + + _currentDesignSpaceLocationQtModel->setModelingObjects(currentModelObjects); } diff --git a/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.h b/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.h index b91028ab..f9602ca4 100644 --- a/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.h +++ b/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.h @@ -55,6 +55,9 @@ class QModelingElement; class QModelingObjectModel; class QModelingObjectView; +class QDuseDesignDimension; +class QDuseVariationPoint; + namespace Duse { class ICore; } @@ -82,11 +85,12 @@ private: QQuickView *_metricsQuickView; QTableWidget *_designSpaceExplorer; QModelingObjectView *_currentDesignSpaceLocationView; - QModelingObjectModel *_currentDesignSpaceLocationModel; + QModelingObjectModel *_currentDesignSpaceLocationQtModel; NewDuseDesignDialog *_newDuseDesignDialog; QList<QModelingElement *> _duseInstance; - QList<QModelingElement *> _currentDesignSpaceLocation; + QList<QModelingElement *> _currentDesignSpaceLocationMofModel; + QHash<QString, QHash<QDuseDesignDimension *, QDuseVariationPoint *> > _currentDesignSpaceLocation; QScriptEngine _engine; |