Skip to content

Commit

Permalink
Removed duplicate code. Instead create a new method for LineAnnotation
Browse files Browse the repository at this point in the history
  • Loading branch information
JKRT authored and adeas31 committed May 21, 2019
1 parent dc9a2b2 commit 00057d2
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 72 deletions.
31 changes: 31 additions & 0 deletions OMEdit/OMEdit/OMEditGUI/Annotations/LineAnnotation.cpp
Expand Up @@ -1315,6 +1315,19 @@ void LineAnnotation::duplicate()
pLineAnnotation->setSelected(true);
}

void LineAnnotation::redraw(const QString& annotation, std::function<void()> updateAnnotationFunction)
{
parseShapeAnnotation(annotation);
initializeTransformation();
removeCornerItems();
drawCornerItems();
adjustGeometries();
setCornerItemsActiveOrPassive();
update();
emitChanged();
updateAnnotationFunction();
}

/*!
* \class ExpandableConnectorTreeItem
* \brief Contains the information about the expandable connector item.
Expand Down Expand Up @@ -2185,3 +2198,21 @@ void CreateOrEditTransitionDialog::createOrEditTransition()
mpGraphicsView->getModelWidget()->updateModelText();
accept();
}

void LineAnnotation::setProperties(const QString& condition, const bool immediate, const bool rest, const bool synchronize, const int priority)
{
setCondition(condition);
setImmediate(immediate);
setReset(rest);
setSynchronize(synchronize);
setPriority(priority);
getTextAnnotation()->setTextString("%condition");
}

void LineAnnotation::updateTransistion(const QString& condition, const bool immediate, const bool rest, const bool synchronize, const int priority)
{
getTextAnnotation()->updateTextString();
updateTransitionTextPosition();
updateTransitionAnnotation(condition, immediate, rest, synchronize, priority);
updateToolTip();
}
4 changes: 4 additions & 0 deletions OMEdit/OMEdit/OMEditGUI/Annotations/LineAnnotation.h
Expand Up @@ -42,6 +42,7 @@
#include <QSortFilterProxyModel>
#include <QSpinBox>
#include <QUndoCommand>
#include<functional>

class Label;
class Component;
Expand Down Expand Up @@ -136,6 +137,8 @@ class LineAnnotation : public ShapeAnnotation
void updateOMSConnection();
void updateToolTip();
void showOMSConnection();
void updateTransistion(const QString& condition, const bool immediate, const bool rest, const bool synchronize, const int priority);
void setProperties(const QString& condition, const bool immediate, const bool rest, const bool synchronize, const int priority);

static QColor findLineColorForConnection(Component *pComponent);
protected:
Expand Down Expand Up @@ -167,6 +170,7 @@ public slots:
void updateConnectionAnnotation();
void updateConnectionTransformation();
void updateTransitionAnnotation(QString oldCondition, bool oldImmediate, bool oldReset, bool oldSynchronize, int oldPriority);
void redraw(const QString& annotation, std::function<void()> updateAnnotationFunction);
void updateInitialStateAnnotation();
void duplicate();
};
Expand Down
108 changes: 36 additions & 72 deletions OMEdit/OMEdit/OMEditGUI/Modeling/Commands.cpp
Expand Up @@ -35,6 +35,7 @@
#include "MainWindow.h"

#include <QMessageBox>
#include <functional>

UndoCommand::UndoCommand(QUndoCommand *pParent)
: QUndoCommand(pParent), mFailed(false), mEnabled(true)
Expand Down Expand Up @@ -926,15 +927,7 @@ UpdateConnectionCommand::UpdateConnectionCommand(LineAnnotation *pConnectionLine
*/
void UpdateConnectionCommand::redoInternal()
{
mpConnectionLineAnnotation->parseShapeAnnotation(mNewAnnotation);
mpConnectionLineAnnotation->initializeTransformation();
mpConnectionLineAnnotation->removeCornerItems();
mpConnectionLineAnnotation->drawCornerItems();
mpConnectionLineAnnotation->adjustGeometries();
mpConnectionLineAnnotation->setCornerItemsActiveOrPassive();
mpConnectionLineAnnotation->update();
mpConnectionLineAnnotation->emitChanged();
mpConnectionLineAnnotation->updateConnectionAnnotation();
redrawConnectionWithAnnotation(mNewAnnotation);
}

/*!
Expand All @@ -943,15 +936,13 @@ void UpdateConnectionCommand::redoInternal()
*/
void UpdateConnectionCommand::undo()
{
mpConnectionLineAnnotation->parseShapeAnnotation(mOldAnnotation);
mpConnectionLineAnnotation->initializeTransformation();
mpConnectionLineAnnotation->removeCornerItems();
mpConnectionLineAnnotation->drawCornerItems();
mpConnectionLineAnnotation->adjustGeometries();
mpConnectionLineAnnotation->setCornerItemsActiveOrPassive();
mpConnectionLineAnnotation->update();
mpConnectionLineAnnotation->emitChanged();
mpConnectionLineAnnotation->updateConnectionAnnotation();
redrawConnectionWithAnnotation(mOldAnnotation);
}

void UpdateConnectionCommand::redrawConnectionWithAnnotation(QString const& annotation)
{
auto updateFunction = std::bind(&LineAnnotation::updateConnectionAnnotation ,mpConnectionLineAnnotation);
mpConnectionLineAnnotation->redraw(annotation, updateFunction);
}

UpdateCompositeModelConnection::UpdateCompositeModelConnection(LineAnnotation *pConnectionLineAnnotation,
Expand Down Expand Up @@ -1162,24 +1153,7 @@ UpdateTransitionCommand::UpdateTransitionCommand(LineAnnotation *pTransitionLine
*/
void UpdateTransitionCommand::redoInternal()
{
mpTransitionLineAnnotation->parseShapeAnnotation(mNewAnnotation);
mpTransitionLineAnnotation->initializeTransformation();
mpTransitionLineAnnotation->removeCornerItems();
mpTransitionLineAnnotation->drawCornerItems();
mpTransitionLineAnnotation->adjustGeometries();
mpTransitionLineAnnotation->setCornerItemsActiveOrPassive();
mpTransitionLineAnnotation->update();
mpTransitionLineAnnotation->emitChanged();
mpTransitionLineAnnotation->setCondition(mNewCondition);
mpTransitionLineAnnotation->setImmediate(mNewImmediate);
mpTransitionLineAnnotation->setReset(mNewReset);
mpTransitionLineAnnotation->setSynchronize(mNewSynchronize);
mpTransitionLineAnnotation->setPriority(mNewPriority);
mpTransitionLineAnnotation->getTextAnnotation()->setTextString("%condition");
mpTransitionLineAnnotation->getTextAnnotation()->updateTextString();
mpTransitionLineAnnotation->updateTransitionTextPosition();
mpTransitionLineAnnotation->updateTransitionAnnotation(mOldCondition, mOldImmediate, mOldReset, mOldSynchronize, mOldPriority);
mpTransitionLineAnnotation->updateToolTip();
redrawTransitionWithUpdateFunction(mNewAnnotation, std::bind(&UpdateTransitionCommand::updateTransistionWithNewConditions, this));
}

/*!
Expand All @@ -1188,24 +1162,24 @@ void UpdateTransitionCommand::redoInternal()
*/
void UpdateTransitionCommand::undo()
{
mpTransitionLineAnnotation->parseShapeAnnotation(mOldAnnotation);
mpTransitionLineAnnotation->initializeTransformation();
mpTransitionLineAnnotation->removeCornerItems();
mpTransitionLineAnnotation->drawCornerItems();
mpTransitionLineAnnotation->adjustGeometries();
mpTransitionLineAnnotation->setCornerItemsActiveOrPassive();
mpTransitionLineAnnotation->update();
mpTransitionLineAnnotation->emitChanged();
mpTransitionLineAnnotation->setCondition(mOldCondition);
mpTransitionLineAnnotation->setImmediate(mOldImmediate);
mpTransitionLineAnnotation->setReset(mOldReset);
mpTransitionLineAnnotation->setSynchronize(mOldSynchronize);
mpTransitionLineAnnotation->setPriority(mOldPriority);
mpTransitionLineAnnotation->getTextAnnotation()->setTextString("%condition");
mpTransitionLineAnnotation->getTextAnnotation()->updateTextString();
mpTransitionLineAnnotation->updateTransitionTextPosition();
mpTransitionLineAnnotation->updateTransitionAnnotation(mNewCondition, mNewImmediate, mNewReset, mNewSynchronize, mNewPriority);
mpTransitionLineAnnotation->updateToolTip();
redrawTransitionWithUpdateFunction(mOldAnnotation, std::bind(&UpdateTransitionCommand::updateTransistionWithOldConditions, this));
}

void UpdateTransitionCommand::redrawTransitionWithUpdateFunction(const QString& annotation, std::function<void()> updateFunction)
{
mpTransitionLineAnnotation->redraw(annotation, updateFunction);
}

void UpdateTransitionCommand::updateTransistionWithNewConditions()
{
mpTransitionLineAnnotation->setProperties(mNewCondition, mNewImmediate, mNewReset, mNewSynchronize, mNewPriority);
mpTransitionLineAnnotation->updateTransistion(mOldCondition, mOldImmediate, mOldReset, mOldSynchronize, mOldPriority);
}

void UpdateTransitionCommand::updateTransistionWithOldConditions()
{
mpTransitionLineAnnotation->setProperties(mOldCondition, mOldImmediate, mOldReset, mOldSynchronize, mOldPriority);
mpTransitionLineAnnotation->updateTransistion(mNewCondition, mNewImmediate, mNewReset, mNewSynchronize, mNewPriority);
}

DeleteTransitionCommand::DeleteTransitionCommand(LineAnnotation *pTransitionLineAnnotation, UndoCommand *pParent)
Expand Down Expand Up @@ -1346,15 +1320,7 @@ UpdateInitialStateCommand::UpdateInitialStateCommand(LineAnnotation *pInitialSta
*/
void UpdateInitialStateCommand::redoInternal()
{
mpInitialStateLineAnnotation->parseShapeAnnotation(mNewAnnotation);
mpInitialStateLineAnnotation->initializeTransformation();
mpInitialStateLineAnnotation->removeCornerItems();
mpInitialStateLineAnnotation->drawCornerItems();
mpInitialStateLineAnnotation->adjustGeometries();
mpInitialStateLineAnnotation->setCornerItemsActiveOrPassive();
mpInitialStateLineAnnotation->update();
mpInitialStateLineAnnotation->emitChanged();
mpInitialStateLineAnnotation->updateInitialStateAnnotation();
redrawInitialStateWithAnnotation(mNewAnnotation);
}

/*!
Expand All @@ -1363,15 +1329,13 @@ void UpdateInitialStateCommand::redoInternal()
*/
void UpdateInitialStateCommand::undo()
{
mpInitialStateLineAnnotation->parseShapeAnnotation(mOldAnnotation);
mpInitialStateLineAnnotation->initializeTransformation();
mpInitialStateLineAnnotation->removeCornerItems();
mpInitialStateLineAnnotation->drawCornerItems();
mpInitialStateLineAnnotation->adjustGeometries();
mpInitialStateLineAnnotation->setCornerItemsActiveOrPassive();
mpInitialStateLineAnnotation->update();
mpInitialStateLineAnnotation->emitChanged();
mpInitialStateLineAnnotation->updateInitialStateAnnotation();
redrawInitialStateWithAnnotation(mOldAnnotation);
}

void UpdateInitialStateCommand::redrawInitialStateWithAnnotation(const QString& annotation)
{
auto updateFunction = std::bind(&LineAnnotation::updateInitialStateAnnotation ,mpInitialStateLineAnnotation);
mpInitialStateLineAnnotation->redraw(annotation, updateFunction);
}

DeleteInitialStateCommand::DeleteInitialStateCommand(LineAnnotation *pInitialStateLineAnnotation, UndoCommand *pParent)
Expand Down
5 changes: 5 additions & 0 deletions OMEdit/OMEdit/OMEditGUI/Modeling/Commands.h
Expand Up @@ -185,6 +185,7 @@ class UpdateConnectionCommand : public UndoCommand
UpdateConnectionCommand(LineAnnotation *pConnectionLineAnnotation, QString oldAnnotaton, QString newAnnotation, UndoCommand *pParent = 0);
void redoInternal();
void undo();
void redrawConnectionWithAnnotation(QString const& annotation);
private:
LineAnnotation *mpConnectionLineAnnotation;
QString mOldAnnotation;
Expand Down Expand Up @@ -235,6 +236,9 @@ class UpdateTransitionCommand : public UndoCommand
void redoInternal();
void undo();
private:
void updateTransistionWithNewConditions();
void updateTransistionWithOldConditions();
void redrawTransitionWithUpdateFunction(const QString& annotation, std::function<void()> updateFunction);
LineAnnotation *mpTransitionLineAnnotation;
QString mOldCondition;
bool mOldImmediate;
Expand Down Expand Up @@ -278,6 +282,7 @@ class UpdateInitialStateCommand : public UndoCommand
UpdateInitialStateCommand(LineAnnotation *pInitialStateLineAnnotation, QString oldAnnotaton, QString newAnnotation, UndoCommand *pParent = 0);
void redoInternal();
void undo();
void redrawInitialStateWithAnnotation(QString const& annotation);
private:
LineAnnotation *mpInitialStateLineAnnotation;
QString mOldAnnotation;
Expand Down

0 comments on commit 00057d2

Please sign in to comment.