diff --git a/GUI/coregui/Views/Components/SampleDesigner/DesignerScene.cpp b/GUI/coregui/Views/Components/SampleDesigner/DesignerScene.cpp
index 10d5a9d0e11e2ab9968334ef31679beed1d95aa0..0b1a0d69e518dd64d07d632aee0d220070a13706 100644
--- a/GUI/coregui/Views/Components/SampleDesigner/DesignerScene.cpp
+++ b/GUI/coregui/Views/Components/SampleDesigner/DesignerScene.cpp
@@ -33,10 +33,10 @@ DesignerScene::DesignerScene(QObject *parent)
     setSceneRect(QRectF(-800, 0, 1600, 1600));
     setBackgroundBrush(DesignerHelper::getSceneBackground());
 
-    NodeEditor *nodeEditor = new NodeEditor(parent);
-    nodeEditor->install(this);
-    connect(nodeEditor, SIGNAL(connectionIsEstablished(NodeEditorConnection*)), this, SLOT(onEstablishedConnection(NodeEditorConnection*)));
-
+    m_nodeEditor = new NodeEditor(parent);
+    m_nodeEditor->install(this);
+    connect(m_nodeEditor, SIGNAL(connectionIsEstablished(NodeEditorConnection*)), this, SLOT(onEstablishedConnection(NodeEditorConnection*)));
+    connect(m_nodeEditor, SIGNAL(selectionModeChangeRequest(int)), this, SIGNAL(selectionModeChangeRequest(int)));
     connect(this, SIGNAL(selectionChanged()), this, SLOT(onSceneSelectionChanged()));
 }
 
diff --git a/GUI/coregui/Views/Components/SampleDesigner/DesignerScene.h b/GUI/coregui/Views/Components/SampleDesigner/DesignerScene.h
index 049718122c91e5a751fcf24751a42d4162ae811c..4b4c2bbdc3d2ac6022b397dac7886957c040a94b 100644
--- a/GUI/coregui/Views/Components/SampleDesigner/DesignerScene.h
+++ b/GUI/coregui/Views/Components/SampleDesigner/DesignerScene.h
@@ -15,6 +15,7 @@ class QItemSelection;
 class NodeEditorConnection;
 class DesignerMimeData;
 class SampleViewAligner;
+class NodeEditor;
 
 
 //! Main class which represents SessionModel on graphics scene
@@ -34,6 +35,11 @@ public:
 
     IView *getViewForItem(ParameterizedItem *item) { return m_ItemToView[item]; }
 
+    NodeEditor *getNodeEditor() { return m_nodeEditor;}
+
+signals:
+    void selectionModeChangeRequest(int);
+
 public slots:
     void onSceneSelectionChanged();
     void onSessionSelectionChanged(const QItemSelection &, const QItemSelection &);
@@ -83,6 +89,8 @@ private:
     //!< foreground line representing appropriate interface during lauer's movement
 
     SampleViewAligner *m_aligner;
+
+    NodeEditor *m_nodeEditor;
 };
 
 
diff --git a/GUI/coregui/Views/Components/SampleDesigner/NodeEditor.cpp b/GUI/coregui/Views/Components/SampleDesigner/NodeEditor.cpp
index aa0a2173d7e891a731a7344a78d3711de92489b9..44d554b13b398c205648b374dc0551a3545b09c6 100644
--- a/GUI/coregui/Views/Components/SampleDesigner/NodeEditor.cpp
+++ b/GUI/coregui/Views/Components/SampleDesigner/NodeEditor.cpp
@@ -1,6 +1,7 @@
 #include "NodeEditor.h"
 #include "NodeEditorPort.h"
 #include "NodeEditorConnection.h"
+#include "DesignerView.h"
 #include <QGraphicsScene>
 #include <QEvent>
 #include <QGraphicsSceneMouseEvent>
@@ -47,6 +48,7 @@ bool NodeEditor::eventFilter(QObject *o, QEvent *e)
             QGraphicsItem *item = itemAt(me->scenePos());
             if (item && item->type() == NodeEditorPort::Type)
             {
+                emit selectionModeChangeRequest(DesignerView::SimpleSelectionMode);
                 conn = new NodeEditorConnection(0, scene);
                 conn->setPort1((NodeEditorPort*) item);
                 conn->setPos1(item->scenePos());
@@ -73,6 +75,8 @@ bool NodeEditor::eventFilter(QObject *o, QEvent *e)
     {
         if (conn && me->button() == Qt::LeftButton)
         {
+            emit selectionModeChangeRequest(DesignerView::RubberSelectionMode);
+
             QGraphicsItem *item = itemAt(me->scenePos());
             if (item && item->type() == NodeEditorPort::Type)
             {
diff --git a/GUI/coregui/Views/Components/SampleDesigner/NodeEditor.h b/GUI/coregui/Views/Components/SampleDesigner/NodeEditor.h
index 6996134e0b3549b32d50f4d2d7a41e48901e0637..0eaa29fa2715e411c4175c6d6d8683ee3046fa05 100644
--- a/GUI/coregui/Views/Components/SampleDesigner/NodeEditor.h
+++ b/GUI/coregui/Views/Components/SampleDesigner/NodeEditor.h
@@ -29,6 +29,7 @@ public:
 	bool eventFilter(QObject *, QEvent *);
 
 signals:
+    void selectionModeChangeRequest(int);
     void connectionIsEstablished(NodeEditorConnection *);
 
 private:
diff --git a/GUI/coregui/Views/Components/SampleDesigner/SampleToolBar.cpp b/GUI/coregui/Views/Components/SampleDesigner/SampleToolBar.cpp
index 72e2dad11c876f6743be19f2e4132c3f242f9899..4d368c98d62d6d71350da0af1a1919764134abda 100644
--- a/GUI/coregui/Views/Components/SampleDesigner/SampleToolBar.cpp
+++ b/GUI/coregui/Views/Components/SampleDesigner/SampleToolBar.cpp
@@ -130,7 +130,8 @@ SampleToolBar::SampleToolBar(QWidget *parent)
 void SampleToolBar::onViewSelectionMode(int mode)
 {
     qDebug() << "SampleToolBar::onViewSelectionMode" << mode;
-    m_pointerModeGroup->button(mode)->setChecked(true);
+    if(mode == DesignerView::RubberSelectionMode || mode == DesignerView::HandDragMode)
+        m_pointerModeGroup->button(mode)->setChecked(true);
 }
 
 void SampleToolBar::onScaleComboChanged(const QString &scale_string)
diff --git a/GUI/coregui/Views/SampleView.cpp b/GUI/coregui/Views/SampleView.cpp
index 2f965851ec2513b6a2f76aaa0dda6bcde7e8d21a..926c2276133db4342febc95f67d05d11fff3395f 100644
--- a/GUI/coregui/Views/SampleView.cpp
+++ b/GUI/coregui/Views/SampleView.cpp
@@ -229,6 +229,8 @@ void SampleView::connectSignals()
     connect(m_toolBar, SIGNAL(zoomIn()),
             m_sampleDesigner->getView(), SLOT(zoomIn()));
 
+    connect(m_sampleDesigner->getScene(), SIGNAL(selectionModeChangeRequest(int)), m_sampleDesigner->getView(), SLOT(onSelectionMode(int)));
+
     // connect context menu for tree view
     connect(m_tree_view, SIGNAL(customContextMenuRequested(const QPoint &)),
             this, SLOT(showContextMenu(const QPoint &)));