ui: Prevent activation of already activated Tokens

This commit is contained in:
Eberhard Graether
2015-05-21 03:32:02 +02:00
parent 5868fe4d39
commit 1e8d8cece0
7 changed files with 24 additions and 28 deletions
+7 -1
View File
@@ -245,7 +245,13 @@ void QtCodeArea::mouseReleaseEvent(QMouseEvent* event)
if (annotation) if (annotation)
{ {
MessageActivateTokenLocation(annotation->locationId).dispatch(); const std::vector<Id>& ids = m_fileWidget->getActiveTokenIds();
bool isActive = std::find(ids.begin(), ids.end(), annotation->tokenId) != ids.end();
if (!isActive)
{
MessageActivateTokenLocation(annotation->locationId).dispatch();
}
} }
} }
} }
+1 -1
View File
@@ -9,8 +9,8 @@
QtCodeFileList::QtCodeFileList(QWidget* parent) QtCodeFileList::QtCodeFileList(QWidget* parent)
: QScrollArea(parent) : QScrollArea(parent)
, m_showMaximizeButton(true)
, m_focusedTokenId(0) , m_focusedTokenId(0)
, m_showMaximizeButton(true)
{ {
m_frame = std::make_shared<QFrame>(this); m_frame = std::make_shared<QFrame>(this);
+2 -2
View File
@@ -11,7 +11,7 @@ void QtGraphPostprocessor::doPostprocessing(std::list<std::shared_ptr<QtGraphNod
if (nodes.size() < 2) if (nodes.size() < 2)
{ {
LOG_WARNING_STREAM(<< "Skipping postprocessing, need at least 2 nodes but got " << nodes.size()); LOG_INFO_STREAM(<< "Skipping postprocessing, need at least 2 nodes but got " << nodes.size());
return; return;
} }
@@ -198,7 +198,7 @@ void QtGraphPostprocessor::resolveOverlap(std::list<std::shared_ptr<QtGraphNode>
while (overlap && iterationCount < maxIterations) while (overlap && iterationCount < maxIterations)
{ {
LOG_WARNING_STREAM(<< iterationCount); LOG_INFO_STREAM(<< iterationCount);
overlap = false; overlap = false;
iterationCount++; iterationCount++;
@@ -106,7 +106,7 @@ void QtGraphEdge::onClick()
message.isAggregation = true; message.isAggregation = true;
message.dispatch(); message.dispatch();
} }
else else if (!m_isActive)
{ {
MessageActivateTokens message(getData()->getId()); MessageActivateTokens message(getData()->getId());
message.isEdge = true; message.isEdge = true;
@@ -6,8 +6,8 @@
#include "utility/messaging/type/MessageActivateTokens.h" #include "utility/messaging/type/MessageActivateTokens.h"
#include "utility/messaging/type/MessageGraphNodeMove.h" #include "utility/messaging/type/MessageGraphNodeMove.h"
#include "utility/messaging/type/MessageFocusIn.h"; #include "utility/messaging/type/MessageFocusIn.h"
#include "utility/messaging/type/MessageFocusOut.h"; #include "utility/messaging/type/MessageFocusOut.h"
#include "qt/graphics/QtRoundedRectItem.h" #include "qt/graphics/QtRoundedRectItem.h"
#include "qt/utility/QtDeviceScaledPixmap.h" #include "qt/utility/QtDeviceScaledPixmap.h"
@@ -252,7 +252,7 @@ void QtGraphNode::setShadowEnabledRecursive(bool enabled)
void QtGraphNode::onClick() void QtGraphNode::onClick()
{ {
if (m_data && !m_data->isType(Node::NODE_UNDEFINED | Node::NODE_NAMESPACE)) if (!m_isActive && m_data && !m_data->isType(Node::NODE_UNDEFINED | Node::NODE_NAMESPACE))
{ {
MessageActivateTokens(m_data->getId()).dispatch(); MessageActivateTokens(m_data->getId()).dispatch();
} }
@@ -23,27 +23,22 @@ GraphController::~GraphController()
void GraphController::handleMessage(MessageActivateTokens* message) void GraphController::handleMessage(MessageActivateTokens* message)
{ {
m_activeTokenIds = message->tokenIds;
if (message->isEdge && message->tokenIds.size() == 1) if (message->isEdge && message->tokenIds.size() == 1)
{ {
m_currentActiveTokenIds = m_activeTokenIds; setActiveAndVisibility(message->tokenIds);
m_currentActiveTokenIds.push_back(message->tokenIds[0]);
setActiveAndVisibility(m_currentActiveTokenIds);
getView()->rebuildGraph(nullptr, m_dummyNodes, m_dummyEdges); getView()->rebuildGraph(nullptr, m_dummyNodes, m_dummyEdges);
return; return;
} }
if (message->isAggregation) if (message->isAggregation)
{ {
m_activeTokenIds.clear(); createDummyGraphForTokenIds(message->tokenIds);
m_currentActiveTokenIds = message->tokenIds;
createDummyGraphForTokenIds(m_currentActiveTokenIds);
return; return;
} }
setActiveTokenIds(message->tokenIds); createDummyGraphForTokenIds(message->tokenIds);
createDummyGraphForTokenIds(m_activeTokenIds);
} }
void GraphController::handleMessage(MessageFinishedParsing* message) void GraphController::handleMessage(MessageFinishedParsing* message)
@@ -76,7 +71,7 @@ void GraphController::handleMessage(MessageGraphNodeExpand* message)
node->expanded = !node->expanded; node->expanded = !node->expanded;
} }
setActiveAndVisibility(m_currentActiveTokenIds); setActiveAndVisibility(m_activeTokenIds);
layoutNesting(); layoutNesting();
getView()->rebuildGraph(nullptr, m_dummyNodes, m_dummyEdges); getView()->rebuildGraph(nullptr, m_dummyNodes, m_dummyEdges);
@@ -98,12 +93,6 @@ GraphView* GraphController::getView() const
return Controller::getView<GraphView>(); return Controller::getView<GraphView>();
} }
void GraphController::setActiveTokenIds(const std::vector<Id>& activeTokenIds)
{
m_activeTokenIds = activeTokenIds;
m_currentActiveTokenIds = activeTokenIds;
}
void GraphController::createDummyGraphForTokenIds(const std::vector<Id>& tokenIds) void GraphController::createDummyGraphForTokenIds(const std::vector<Id>& tokenIds)
{ {
GraphView* view = getView(); GraphView* view = getView();
@@ -337,6 +326,10 @@ void GraphController::setNodeActiveRecursive(DummyNode& node, const std::vector<
{ {
node.active = find(activeTokenIds.begin(), activeTokenIds.end(), node.data->getId()) != activeTokenIds.end(); node.active = find(activeTokenIds.begin(), activeTokenIds.end(), node.data->getId()) != activeTokenIds.end();
} }
else if (node.isExpandToggleNode())
{
node.visible = true;
}
for (DummyNode& subNode : node.subNodes) for (DummyNode& subNode : node.subNodes)
{ {
@@ -45,8 +45,6 @@ private:
GraphView* getView() const; GraphView* getView() const;
void setActiveTokenIds(const std::vector<Id>& activeTokenIds);
void createDummyGraphForTokenIds(const std::vector<Id>& tokenIds); void createDummyGraphForTokenIds(const std::vector<Id>& tokenIds);
DummyNode createDummyNodeTopDown(Node* node); DummyNode createDummyNodeTopDown(Node* node);
@@ -71,7 +69,6 @@ private:
std::vector<DummyEdge> m_dummyEdges; std::vector<DummyEdge> m_dummyEdges;
std::vector<Id> m_activeTokenIds; std::vector<Id> m_activeTokenIds;
std::vector<Id> m_currentActiveTokenIds;
}; };
#endif // GRAPH_CONTROLLER_H #endif // GRAPH_CONTROLLER_H