summaryrefslogtreecommitdiffstats
path: root/examples/uml
diff options
context:
space:
mode:
authorSandro S. Andrade <sandroandrade@kde.org>2013-11-27 14:59:39 -0300
committerSandro S. Andrade <sandroandrade@kde.org>2013-11-27 19:07:09 +0100
commit1c5eb2d398f03e3a1227305aab652c18ed7df174 (patch)
tree028a89fed1cee7ee7fdc8a7ce01c9e008efc5ac6 /examples/uml
parent480140149c6ebd4a90da2227e022f51aeec935a1 (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')
-rw-r--r--examples/uml/duse-mt/src/app/SADuse.xmi11
-rw-r--r--examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp37
-rw-r--r--examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.h8
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;