Index: /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 68199)
+++ /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 68200)
@@ -380,4 +380,5 @@
 	src/selector/UISnapshotDetailsWidget.h \
 	src/selector/UISnapshotPane.h \
+	src/selector/UIToolsPaneGlobal.h \
 	src/selector/UIToolsPaneMachine.h \
 	src/selector/UIToolsToolbar.h \
@@ -697,4 +698,5 @@
 	src/selector/UISnapshotDetailsWidget.cpp \
 	src/selector/UISnapshotPane.cpp \
+	src/selector/UIToolsPaneGlobal.cpp \
 	src/selector/UIToolsPaneMachine.cpp \
 	src/selector/UIToolsToolbar.cpp \
Index: /trunk/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc	(revision 68199)
+++ /trunk/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc	(revision 68200)
@@ -186,4 +186,5 @@
         <file alias="statusbar_settings_16px.png">images/statusbar_settings_16px.png</file>
         <file alias="statusbar_settings_disabled_16px.png">images/statusbar_settings_disabled_16px.png</file>
+        <file alias="tools_global_32px.png">images/tools_global_32px.png</file>
         <file alias="tools_machine_32px.png">images/tools_machine_32px.png</file>
         <file alias="tpixel.png">images/tpixel.png</file>
Index: /trunk/src/VBox/Frontends/VirtualBox/VirtualBox2_hidpi.qrc
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/VirtualBox2_hidpi.qrc	(revision 68199)
+++ /trunk/src/VBox/Frontends/VirtualBox/VirtualBox2_hidpi.qrc	(revision 68200)
@@ -195,4 +195,5 @@
         <file alias="statusbar_settings_16px_hidpi.png">images/hidpi/statusbar_settings_16px_hidpi.png</file>
         <file alias="statusbar_settings_disabled_16px_hidpi.png">images/hidpi/statusbar_settings_disabled_16px_hidpi.png</file>
+        <file alias="tools_global_32px_hidpi.png">images/hidpi/tools_global_32px_hidpi.png</file>
         <file alias="tools_machine_32px_hidpi.png">images/hidpi/tools_machine_32px_hidpi.png</file>
         <file alias="usb_16px_hidpi.png">images/hidpi/usb_16px_hidpi.png</file>
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIActionPoolSelector.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIActionPoolSelector.cpp	(revision 68199)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIActionPoolSelector.cpp	(revision 68200)
@@ -1021,4 +1021,101 @@
         setName(QApplication::translate("UIActionPool", "&Snapshots"));
         setStatusTip(QApplication::translate("UIActionPool", "Open machine snapshots pane"));
+    }
+};
+
+
+class UIActionToggleToolsGlobal : public UIActionToggle
+{
+    Q_OBJECT;
+
+public:
+
+    UIActionToggleToolsGlobal(UIActionPool *pParent)
+        : UIActionToggle(pParent, ":/tools_global_32px.png") {}
+
+protected:
+
+    QString shortcutExtraDataID() const
+    {
+        return QString("ToolsGlobal");
+    }
+
+    void retranslateUi()
+    {
+        setName(QApplication::translate("UIActionPool", "&Global Tools"));
+        setStatusTip(QApplication::translate("UIActionPool", "Switch to global tools"));
+    }
+};
+
+class UIActionMenuToolsGlobal : public UIActionMenu
+{
+    Q_OBJECT;
+
+public:
+
+    UIActionMenuToolsGlobal(UIActionPool *pParent)
+        : UIActionMenu(pParent) {}
+
+protected:
+
+    QString shortcutExtraDataID() const
+    {
+        return QString("ToolsGlobalMenu");
+    }
+
+    void retranslateUi()
+    {
+        setName(QApplication::translate("UIActionPool", "&Global Tools Menu"));
+        setStatusTip(QApplication::translate("UIActionPool", "Open global tools menu"));
+    }
+};
+
+class UIActionSimpleToolsGlobalVirtualMediaManager : public UIActionSimple
+{
+    Q_OBJECT;
+
+public:
+
+    UIActionSimpleToolsGlobalVirtualMediaManager(UIActionPool *pParent)
+        : UIActionSimple(pParent,
+                         ":/diskimage_22px.png", ":/diskimage_16px.png",
+                         ":/diskimage_22px.png", ":/diskimage_16px.png") {}
+
+protected:
+
+    QString shortcutExtraDataID() const
+    {
+        return QString("ToolsGlobalVirtualMediaManager");
+    }
+
+    void retranslateUi()
+    {
+        setName(QApplication::translate("UIActionPool", "&Virtual Media Manager"));
+        setStatusTip(QApplication::translate("UIActionPool", "Open Virtual Media Manager"));
+    }
+};
+
+class UIActionSimpleToolsGlobalHostNetworkManager : public UIActionSimple
+{
+    Q_OBJECT;
+
+public:
+
+    UIActionSimpleToolsGlobalHostNetworkManager(UIActionPool *pParent)
+        : UIActionSimple(pParent,
+                         ":/host_iface_manager_22px.png", ":/host_iface_manager_16px.png",
+                         ":/host_iface_manager_22px.png", ":/host_iface_manager_16px.png") {}
+
+protected:
+
+    QString shortcutExtraDataID() const
+    {
+        return QString("ToolsGlobalHostNetworkManager");
+    }
+
+    void retranslateUi()
+    {
+        setName(QApplication::translate("UIActionPool", "&Host Network Manager"));
+        setStatusTip(QApplication::translate("UIActionPool", "Open Host Network Manager"));
     }
 };
@@ -1224,4 +1321,10 @@
     m_pool[UIActionIndexST_M_Tools_M_Machine_Snapshots] = new UIActionSimpleToolsMachineSnapshots(this);
 
+    /* Global Tools actions: */
+    m_pool[UIActionIndexST_M_Tools_T_Global] = new UIActionToggleToolsGlobal(this);
+    m_pool[UIActionIndexST_M_Tools_M_Global] = new UIActionMenuToolsGlobal(this);
+    m_pool[UIActionIndexST_M_Tools_M_Global_VirtualMediaManager] = new UIActionSimpleToolsGlobalVirtualMediaManager(this);
+    m_pool[UIActionIndexST_M_Tools_M_Global_HostNetworkManager] = new UIActionSimpleToolsGlobalHostNetworkManager(this);
+
     /* Call to base-class: */
     UIActionPool::preparePool();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIActionPoolSelector.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIActionPoolSelector.h	(revision 68199)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIActionPoolSelector.h	(revision 68200)
@@ -98,4 +98,10 @@
     UIActionIndexST_M_Tools_M_Machine_Snapshots,
 
+    /* Global Tools actions: */
+    UIActionIndexST_M_Tools_T_Global,
+    UIActionIndexST_M_Tools_M_Global,
+    UIActionIndexST_M_Tools_M_Global_VirtualMediaManager,
+    UIActionIndexST_M_Tools_M_Global_HostNetworkManager,
+
     /* Maximum index: */
     UIActionIndexST_Max
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp	(revision 68199)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp	(revision 68200)
@@ -44,4 +44,5 @@
 # include "UISelectorWindow.h"
 # include "UISettingsDialogSpecific.h"
+# include "UISlidingWidget.h"
 # include "UISpacerWidgets.h"
 # include "UIToolBar.h"
@@ -111,4 +112,5 @@
     , m_fWarningAboutInaccessibleMediaShown(false)
     , m_pActionPool(0)
+    , m_pSlidingWidget(0)
     , m_pSplitter(0)
 #ifndef VBOX_WS_MAC
@@ -119,4 +121,5 @@
     , m_pPaneChooser(0)
     , m_pPaneToolsMachine(0)
+    , m_pPaneToolsGlobal(0)
     , m_pGroupMenuAction(0)
     , m_pMachineMenuAction(0)
@@ -279,5 +282,6 @@
 
     /* Make sure MM window is not opened: */
-    if (m_pManagerVirtualMedia)
+    if (   m_pManagerVirtualMedia
+        || m_pPaneToolsGlobal->isToolOpened(ToolTypeGlobal_VirtualMedia))
         return;
 
@@ -384,4 +388,11 @@
 void UISelectorWindow::sltOpenVirtualMediumManagerWindow()
 {
+    /* First check if instance of widget opened embedded: */
+    if (m_pPaneToolsGlobal->isToolOpened(ToolTypeGlobal_VirtualMedia))
+    {
+        m_pPaneToolsGlobal->openTool(ToolTypeGlobal_VirtualMedia);
+        return;
+    }
+
     /* Create instance if not yet created: */
     if (!m_pManagerVirtualMedia)
@@ -410,4 +421,11 @@
 void UISelectorWindow::sltOpenHostNetworkManagerWindow()
 {
+    /* First check if instance of widget opened embedded: */
+    if (m_pPaneToolsGlobal->isToolOpened(ToolTypeGlobal_HostNetwork))
+    {
+        m_pPaneToolsGlobal->openTool(ToolTypeGlobal_HostNetwork);
+        return;
+    }
+
     /* Create instance if not yet created: */
     if (!m_pManagerHostNetwork)
@@ -1009,4 +1027,20 @@
 }
 
+void UISelectorWindow::sltHandleToolsTypeSwitch()
+{
+    /* If Machine tool button is checked => go backward: */
+    if (actionPool()->action(UIActionIndexST_M_Tools_T_Machine)->isChecked())
+        m_pSlidingWidget->moveBackward();
+
+    else
+
+    /* If Global tool button is checked => go forward: */
+    if (actionPool()->action(UIActionIndexST_M_Tools_T_Global)->isChecked())
+        m_pSlidingWidget->moveForward();
+
+    /* Update action visibility: */
+    updateActionsVisibility();
+}
+
 void UISelectorWindow::sltHandleToolOpenedMachine(ToolTypeMachine enmType)
 {
@@ -1026,8 +1060,20 @@
 }
 
+void UISelectorWindow::sltHandleToolOpenedGlobal(ToolTypeGlobal enmType)
+{
+    /* Open corresponding tool: */
+    m_pPaneToolsGlobal->openTool(enmType);
+}
+
 void UISelectorWindow::sltHandleToolClosedMachine(ToolTypeMachine enmType)
 {
     /* Close corresponding tool: */
     m_pPaneToolsMachine->closeTool(enmType);
+}
+
+void UISelectorWindow::sltHandleToolClosedGlobal(ToolTypeGlobal enmType)
+{
+    /* Close corresponding tool: */
+    m_pPaneToolsGlobal->closeTool(enmType);
 }
 
@@ -1064,4 +1110,20 @@
            "<p>The right part of this window represents a set of tools "
            "you have opened for the currently chosen machine. "
+           "For more tools check the corresponding menu at the right side "
+           "of the main tool bar located at the top of the window.</p>"
+           "<p>You can press the <b>%1</b> key to get instant help, "
+           "or visit "
+           "<a href=https://www.virtualbox.org>www.virtualbox.org</a> "
+           "for the latest information and news.</p>")
+           .arg(QKeySequence(QKeySequence::HelpContents).toString(QKeySequence::NativeText)));
+
+    /* Translate Global Tools welcome screen: */
+    m_pPaneToolsGlobal->setDetailsText(
+        tr("<h3>Welcome to VirtualBox!</h3>"
+           "<p>This window represents a set of global tools "
+           "you have opened. They are not related to any particular machine "
+           "but to whole VirtualBox instead. This list will be extended with "
+           "new tools in the future releases. "
+           "<img src=:/welcome.png align=right/></p>"
            "For more tools check the corresponding menu at the right side "
            "of the main tool bar located at the top of the window.</p>"
@@ -1713,4 +1775,5 @@
                 /* Add 'Tools' actions into action-group: */
                 pActionGroupTools->addAction(actionPool()->action(UIActionIndexST_M_Tools_T_Machine));
+                pActionGroupTools->addAction(actionPool()->action(UIActionIndexST_M_Tools_T_Global));
             }
 
@@ -1779,38 +1842,50 @@
 #endif /* !VBOX_WS_MAC */
 
-            /* Create splitter: */
-            m_pSplitter = new QISplitter;
-            AssertPtrReturnVoid(m_pSplitter);
+            /* Create sliding-widget: */
+            m_pSlidingWidget = new UISlidingWidget;
+            AssertPtrReturnVoid(m_pSlidingWidget);
             {
-                /* Configure splitter: */
+                /* Create splitter: */
+                m_pSplitter = new QISplitter;
+                AssertPtrReturnVoid(m_pSplitter);
+                {
+                    /* Configure splitter: */
 #ifdef VBOX_WS_X11
-                m_pSplitter->setHandleType(QISplitter::Native);
+                    m_pSplitter->setHandleType(QISplitter::Native);
 #endif
 
-                /* Prepare Chooser-pane: */
-                m_pPaneChooser = new UIGChooser(this);
-                AssertPtrReturnVoid(m_pPaneChooser);
-                {
-                    /* Add into splitter: */
-                    m_pSplitter->addWidget(m_pPaneChooser);
+                    /* Prepare Chooser-pane: */
+                    m_pPaneChooser = new UIGChooser(this);
+                    AssertPtrReturnVoid(m_pPaneChooser);
+                    {
+                        /* Add into splitter: */
+                        m_pSplitter->addWidget(m_pPaneChooser);
+                    }
+
+                    /* Prepare Machine Tools-pane: */
+                    m_pPaneToolsMachine = new UIToolsPaneMachine(actionPool());
+                    AssertPtrReturnVoid(m_pPaneToolsMachine);
+                    {
+                        /* Add into splitter: */
+                        m_pSplitter->addWidget(m_pPaneToolsMachine);
+                    }
+
+                    /* Adjust splitter colors according to main widgets it splits: */
+                    m_pSplitter->configureColors(m_pPaneChooser->palette().color(QPalette::Active, QPalette::Window),
+                                                 m_pPaneToolsMachine->palette().color(QPalette::Active, QPalette::Window));
+                    /* Set the initial distribution. The right site is bigger. */
+                    m_pSplitter->setStretchFactor(0, 2);
+                    m_pSplitter->setStretchFactor(1, 3);
                 }
 
-                /* Prepare Machine Tools-pane: */
-                m_pPaneToolsMachine = new UIToolsPaneMachine(actionPool());
-                AssertPtrReturnVoid(m_pPaneToolsMachine);
-                {
-                    /* Add into splitter: */
-                    m_pSplitter->addWidget(m_pPaneToolsMachine);
-                }
-
-                /* Adjust splitter colors according to main widgets it splits: */
-                m_pSplitter->configureColors(m_pPaneChooser->palette().color(QPalette::Active, QPalette::Window),
-                                             m_pPaneToolsMachine->palette().color(QPalette::Active, QPalette::Window));
-                /* Set the initial distribution. The right site is bigger. */
-                m_pSplitter->setStretchFactor(0, 2);
-                m_pSplitter->setStretchFactor(1, 3);
+                /* Prepare Global Tools-pane: */
+                m_pPaneToolsGlobal = new UIToolsPaneGlobal(actionPool());
+                AssertPtrReturnVoid(m_pPaneToolsGlobal);
+
+                /* Add left/right widgets into sliding widget: */
+                m_pSlidingWidget->setWidgets(m_pSplitter, m_pPaneToolsGlobal);
 
                 /* Add into layout: */
-                pLayout->addWidget(m_pSplitter);
+                pLayout->addWidget(m_pSlidingWidget);
             }
         }
@@ -1891,4 +1966,10 @@
     connect(actionPool()->action(UIActionIndexST_M_Machine_M_Close_S_PowerOff), SIGNAL(triggered()), this, SLOT(sltPerformPowerOffMachine()));
 
+    /* 'Tools' actions connections: */
+    connect(actionPool()->action(UIActionIndexST_M_Tools_T_Machine), &UIAction::toggled,
+            this, &UISelectorWindow::sltHandleToolsTypeSwitch);
+    connect(actionPool()->action(UIActionIndexST_M_Tools_T_Global), &UIAction::toggled,
+            this, &UISelectorWindow::sltHandleToolsTypeSwitch);
+
     /* Status-bar connections: */
     connect(statusBar(), SIGNAL(customContextMenuRequested(const QPoint&)),
@@ -1910,5 +1991,7 @@
 #endif /* VBOX_WS_MAC */
     connect(m_pToolbarTools, &UIToolsToolbar::sigToolOpenedMachine, this, &UISelectorWindow::sltHandleToolOpenedMachine);
+    connect(m_pToolbarTools, &UIToolsToolbar::sigToolOpenedGlobal,  this, &UISelectorWindow::sltHandleToolOpenedGlobal);
     connect(m_pToolbarTools, &UIToolsToolbar::sigToolClosedMachine, this, &UISelectorWindow::sltHandleToolClosedMachine);
+    connect(m_pToolbarTools, &UIToolsToolbar::sigToolClosedGlobal,  this, &UISelectorWindow::sltHandleToolClosedGlobal);
 
     /* VM desktop connections: */
@@ -2073,7 +2156,8 @@
 {
     /* Determine whether Machine or Group menu should be shown at all: */
+    const bool fMachineOrGroupMenuShown = actionPool()->action(UIActionIndexST_M_Tools_T_Machine)->isChecked();
     const bool fMachineMenuShown = !m_pPaneChooser->isSingleGroupSelected();
-    m_pMachineMenuAction->setVisible(fMachineMenuShown);
-    m_pGroupMenuAction->setVisible(!fMachineMenuShown);
+    m_pMachineMenuAction->setVisible(fMachineOrGroupMenuShown && fMachineMenuShown);
+    m_pGroupMenuAction->setVisible(fMachineOrGroupMenuShown && !fMachineMenuShown);
 
     /* Hide action shortcuts: */
@@ -2084,4 +2168,8 @@
         foreach (UIAction *pAction, m_groupActions)
             pAction->hideShortcut();
+
+    /* Update actions visibility: */
+    foreach (UIAction *pAction, m_machineActions)
+        pAction->setVisible(fMachineOrGroupMenuShown);
 
     /* Show what should be shown: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.h	(revision 68199)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.h	(revision 68200)
@@ -25,4 +25,5 @@
 #include "QIMainWindow.h"
 #include "QIWithRetranslateUI.h"
+#include "UIToolsPaneGlobal.h"
 #include "UIToolsPaneMachine.h"
 #include "VBoxGlobal.h"
@@ -38,4 +39,5 @@
 class UIMainBar;
 #endif
+class UISlidingWidget;
 class UIToolBar;
 class UIToolsToolbar;
@@ -183,11 +185,21 @@
     /** @} */
 
+    /** @name Tools-toolbar stuff.
+      * @{ */
+        /** Handles tools type switch. */
+        void sltHandleToolsTypeSwitch();
+    /** @} */
+
     /** @name Tools-pane stuff.
       * @{ */
         /** Handles rquest to open Machine tool of passed @a enmType. */
         void sltHandleToolOpenedMachine(ToolTypeMachine enmType);
+        /** Handles rquest to open Global tool of passed @a enmType. */
+        void sltHandleToolOpenedGlobal(ToolTypeGlobal enmType);
 
         /** Handles rquest to close Machine tool of passed @a enmType. */
         void sltHandleToolClosedMachine(ToolTypeMachine enmType);
+        /** Handles rquest to close Global tool of passed @a enmType. */
+        void sltHandleToolClosedGlobal(ToolTypeGlobal enmType);
     /** @} */
 
@@ -313,4 +325,7 @@
     UIActionPool *m_pActionPool;
 
+    /** Holds the sliding-widget isntance. */
+    UISlidingWidget *m_pSlidingWidget;
+
     /** Holds the central splitter instance. */
     QISplitter *m_pSplitter;
@@ -329,4 +344,6 @@
     /** Holds the Machine Tools-pane instance. */
     UIToolsPaneMachine *m_pPaneToolsMachine;
+    /** Holds the Global Tools-pane instance. */
+    UIToolsPaneGlobal  *m_pPaneToolsGlobal;
 
     /** Holds the list of Group menu actions. */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIToolsPaneGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIToolsPaneGlobal.cpp	(revision 68200)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIToolsPaneGlobal.cpp	(revision 68200)
@@ -0,0 +1,201 @@
+/* $Id$ */
+/** @file
+ * VBox Qt GUI - UIToolsPaneGlobal class implementation.
+ */
+
+/*
+ * Copyright (C) 2017 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#ifdef VBOX_WITH_PRECOMPILED_HEADERS
+# include <precomp.h>
+#else  /* !VBOX_WITH_PRECOMPILED_HEADERS */
+
+/* Qt includes: */
+# include <QStackedLayout>
+
+/* GUI includes */
+# include "UIActionPoolSelector.h"
+# include "UIDesktopPane.h"
+# include "UIMediumManager.h"
+# include "UIHostNetworkManager.h"
+# include "UIToolsPaneGlobal.h"
+
+/* Other VBox includes: */
+# include <iprt/assert.h>
+
+#endif /* !VBOX_WITH_PRECOMPILED_HEADERS */
+
+
+UIToolsPaneGlobal::UIToolsPaneGlobal(UIActionPool *pActionPool, QWidget *pParent /* = 0 */)
+    : QWidget(pParent)
+    , m_pActionPool(pActionPool)
+    , m_pLayout(0)
+    , m_pPaneDesktop(0)
+    , m_pPaneMedia(0)
+    , m_pPaneNetwork(0)
+{
+    /* Prepare: */
+    prepare();
+}
+
+UIToolsPaneGlobal::~UIToolsPaneGlobal()
+{
+    /* Cleanup: */
+    cleanup();
+}
+
+bool UIToolsPaneGlobal::isToolOpened(ToolTypeGlobal enmType) const
+{
+    /* Search through the stacked widgets: */
+    for (int iIndex = 0; iIndex < m_pLayout->count(); ++iIndex)
+        if (m_pLayout->widget(iIndex)->property("ToolType").value<ToolTypeGlobal>() == enmType)
+            return true;
+    return false;
+}
+
+void UIToolsPaneGlobal::openTool(ToolTypeGlobal enmType)
+{
+    /* Search through the stacked widgets: */
+    int iActualIndex = -1;
+    for (int iIndex = 0; iIndex < m_pLayout->count(); ++iIndex)
+        if (m_pLayout->widget(iIndex)->property("ToolType").value<ToolTypeGlobal>() == enmType)
+            iActualIndex = iIndex;
+
+    /* If widget with such type exists: */
+    if (iActualIndex != -1)
+    {
+        /* Activate corresponding index: */
+        m_pLayout->setCurrentIndex(iActualIndex);
+    }
+    /* Otherwise: */
+    else
+    {
+        /* Create, remember, append corresponding stacked widget: */
+        switch (enmType)
+        {
+            case ToolTypeGlobal_Desktop:
+            {
+                /* Create Desktop pane: */
+                m_pPaneDesktop = new UIDesktopPane;
+                AssertPtrReturnVoid(m_pPaneDesktop);
+                {
+                    /* Configure pane: */
+                    m_pPaneDesktop->setProperty("ToolType", QVariant::fromValue(ToolTypeGlobal_Desktop));
+
+                    /* Add into layout: */
+                    m_pLayout->addWidget(m_pPaneDesktop);
+                    m_pLayout->setCurrentWidget(m_pPaneDesktop);
+                }
+                break;
+            }
+            case ToolTypeGlobal_VirtualMedia:
+            {
+                /* Create Virtual Media Manager: */
+                m_pPaneMedia = new UIMediumManagerWidget(EmbedTo_Stack);
+                AssertPtrReturnVoid(m_pPaneMedia);
+                {
+                    /* Configure pane: */
+                    m_pPaneMedia->setProperty("ToolType", QVariant::fromValue(ToolTypeGlobal_VirtualMedia));
+
+                    /* Add into layout: */
+                    m_pLayout->addWidget(m_pPaneMedia);
+                    m_pLayout->setCurrentWidget(m_pPaneMedia);
+                }
+                break;
+            }
+            case ToolTypeGlobal_HostNetwork:
+            {
+                /* Create Host Network Manager: */
+                m_pPaneNetwork = new UIHostNetworkManagerWidget(EmbedTo_Stack);
+                AssertPtrReturnVoid(m_pPaneNetwork);
+                {
+                    /* Configure pane: */
+                    m_pPaneNetwork->setProperty("ToolType", QVariant::fromValue(ToolTypeGlobal_HostNetwork));
+
+                    /* Add into layout: */
+                    m_pLayout->addWidget(m_pPaneNetwork);
+                    m_pLayout->setCurrentWidget(m_pPaneNetwork);
+                }
+                break;
+            }
+            default:
+                AssertFailedReturnVoid();
+        }
+    }
+}
+
+void UIToolsPaneGlobal::closeTool(ToolTypeGlobal enmType)
+{
+    /* Search through the stacked widgets: */
+    int iActualIndex = -1;
+    for (int iIndex = 0; iIndex < m_pLayout->count(); ++iIndex)
+        if (m_pLayout->widget(iIndex)->property("ToolType").value<ToolTypeGlobal>() == enmType)
+            iActualIndex = iIndex;
+
+    /* If widget with such type doesn't exist: */
+    if (iActualIndex != -1)
+    {
+        /* Forget corresponding widget: */
+        switch (enmType)
+        {
+            case ToolTypeGlobal_Desktop:      m_pPaneDesktop = 0; break;
+            case ToolTypeGlobal_VirtualMedia: m_pPaneMedia = 0; break;
+            case ToolTypeGlobal_HostNetwork:  m_pPaneNetwork = 0; break;
+            default: break;
+        }
+        /* Delete corresponding widget: */
+        QWidget *pWidget = m_pLayout->widget(iActualIndex);
+        m_pLayout->removeWidget(pWidget);
+        delete pWidget;
+    }
+}
+
+void UIToolsPaneGlobal::setDetailsText(const QString &strText)
+{
+    /* Update desktop pane: */
+    AssertPtrReturnVoid(m_pPaneDesktop);
+    m_pPaneDesktop->updateDetailsText(strText);
+}
+
+void UIToolsPaneGlobal::setDetailsError(const QString &strError)
+{
+    /* Update desktop pane: */
+    AssertPtrReturnVoid(m_pPaneDesktop);
+    m_pPaneDesktop->updateDetailsError(strError);
+}
+
+void UIToolsPaneGlobal::prepare()
+{
+    /* Create stacked-layout: */
+    m_pLayout = new QStackedLayout(this);
+    AssertPtrReturnVoid(m_pLayout);
+    {
+        /* Configure layout: */
+        m_pLayout->setSpacing(0);
+        m_pLayout->setContentsMargins(3, 4, 5, 0);
+    }
+
+    /* Create desktop pane: */
+    openTool(ToolTypeGlobal_Desktop);
+}
+
+void UIToolsPaneGlobal::cleanup()
+{
+    /* Remove all widgets prematurelly: */
+    while (m_pLayout->count())
+    {
+        QWidget *pWidget = m_pLayout->widget(0);
+        m_pLayout->removeWidget(pWidget);
+        delete pWidget;
+    }
+}
+
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIToolsPaneGlobal.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIToolsPaneGlobal.h	(revision 68200)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIToolsPaneGlobal.h	(revision 68200)
@@ -0,0 +1,96 @@
+/* $Id$ */
+/** @file
+ * VBox Qt GUI - UIToolsPaneGlobal class declaration.
+ */
+
+/*
+ * Copyright (C) 2017 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#ifndef ___UIToolsPaneGlobal_h___
+#define ___UIToolsPaneGlobal_h___
+
+/* Qt includes: */
+#include <QWidget>
+
+/* Forward declarations: */
+class QHBoxLayout;
+class QStackedLayout;
+class QVBoxLayout;
+class UIActionPool;
+class UIDesktopPane;
+class UIHostNetworkManagerWidget;
+class UIMediumManagerWidget;
+class UIVMItem;
+class CMachine;
+
+
+/** Global tool types. */
+enum ToolTypeGlobal
+{
+    ToolTypeGlobal_Invalid,
+    ToolTypeGlobal_Desktop,
+    ToolTypeGlobal_VirtualMedia,
+    ToolTypeGlobal_HostNetwork,
+};
+
+/* Make sure QVariant can eat ToolTypeGlobal: */
+Q_DECLARE_METATYPE(ToolTypeGlobal);
+
+
+/** QWidget subclass representing container for tool panes. */
+class UIToolsPaneGlobal : public QWidget
+{
+    Q_OBJECT;
+
+public:
+
+    /** Constructs tools pane passing @a pParent to the base-class. */
+    UIToolsPaneGlobal(UIActionPool *pActionPool, QWidget *pParent = 0);
+    /** Destructs tools pane. */
+    virtual ~UIToolsPaneGlobal() /* override */;
+
+    /** Returns whether tool of particular @a enmType is opened. */
+    bool isToolOpened(ToolTypeGlobal enmType) const;
+    /** Activates tool of passed @a enmType, creates new one if necessary. */
+    void openTool(ToolTypeGlobal enmType);
+    /** Closes tool of passed @a enmType, deletes one if exists. */
+    void closeTool(ToolTypeGlobal enmType);
+
+    /** Defines @a strText and switches to text details pane. */
+    void setDetailsText(const QString &strText);
+    /** Defines @a strError and switches to error details pane. */
+    void setDetailsError(const QString &strError);
+
+private:
+
+    /** Prepares all. */
+    void prepare();
+    /** Prepares stacked-layout. */
+    void prepareStackedLayout();
+    /** Cleanups all. */
+    void cleanup();
+
+    /** Holds the action pool reference. */
+    UIActionPool *m_pActionPool;
+
+    /** Holds the stacked-layout instance. */
+    QStackedLayout             *m_pLayout;
+    /** Holds the Desktop pane instance. */
+    UIDesktopPane              *m_pPaneDesktop;
+    /** Holds the Virtual Media Manager instance. */
+    UIMediumManagerWidget      *m_pPaneMedia;
+    /** Holds the Host Network Manager instance. */
+    UIHostNetworkManagerWidget *m_pPaneNetwork;
+};
+
+#endif /* !___UIToolsPaneGlobal_h___ */
+
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIToolsToolbar.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIToolsToolbar.cpp	(revision 68199)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIToolsToolbar.cpp	(revision 68200)
@@ -45,4 +45,5 @@
     , m_pLayoutStacked(0)
     , m_pTabBarMachine(0)
+    , m_pTabBarGlobal(0)
     , m_pToolBar(0)
 {
@@ -74,4 +75,27 @@
 }
 
+void UIToolsToolbar::sltHandleOpenToolGlobal()
+{
+    /* Acquire sender action: */
+    const QAction *pAction = sender() ? qobject_cast<const QAction*>(sender()) : 0;
+    /* Acquire action type: */
+    const ToolTypeGlobal enmType = pAction->property("ToolTypeGlobal").value<ToolTypeGlobal>();
+
+    /* Get corresponding tab id: */
+    QUuid idTab;
+    if (m_mapTabIdsGlobal.contains(enmType))
+        idTab = m_mapTabIdsGlobal.value(enmType);
+    else
+    {
+        idTab = m_pTabBarGlobal->addTab(pAction->icon(), pAction->text().remove('&'));
+        m_mapTabIdsGlobal[enmType] = idTab;
+    }
+    /* And make it active: */
+    m_pTabBarGlobal->setCurrent(idTab);
+
+    /* Notify listeners: */
+    emit sigToolOpenedGlobal(enmType);
+}
+
 void UIToolsToolbar::sltHandleCloseToolMachine(const QUuid &uuid)
 {
@@ -88,4 +112,18 @@
 }
 
+void UIToolsToolbar::sltHandleCloseToolGlobal(const QUuid &uuid)
+{
+    /* If the ID is registered: */
+    if (m_mapTabIdsGlobal.values().contains(uuid))
+    {
+        /* Notify listeners: */
+        emit sigToolClosedGlobal(m_mapTabIdsGlobal.key(uuid));
+
+        /* And remove the tab: */
+        m_pTabBarGlobal->removeTab(uuid);
+        m_mapTabIdsGlobal.remove(m_mapTabIdsGlobal.key(uuid));
+    }
+}
+
 void UIToolsToolbar::sltHandleToolChosenMachine(const QUuid &uuid)
 {
@@ -93,4 +131,11 @@
     if (m_mapTabIdsMachine.values().contains(uuid))
         emit sigToolOpenedMachine(m_mapTabIdsMachine.key(uuid));
+}
+
+void UIToolsToolbar::sltHandleToolChosenGlobal(const QUuid &uuid)
+{
+    /* If the ID is registered => Notify listeners: */
+    if (m_mapTabIdsGlobal.values().contains(uuid))
+        emit sigToolOpenedGlobal(m_mapTabIdsGlobal.key(uuid));
 }
 
@@ -107,4 +152,9 @@
         if (pAction == m_pActionPool->action(UIActionIndexST_M_Tools_T_Machine))
             m_pLayoutStacked->setCurrentWidget(m_pTabBarMachine);
+
+        else
+
+        if (pAction == m_pActionPool->action(UIActionIndexST_M_Tools_T_Global))
+            m_pLayoutStacked->setCurrentWidget(m_pTabBarGlobal);
     }
 }
@@ -143,4 +193,31 @@
     connect(m_pActionPool->action(UIActionIndexST_M_Tools_T_Machine), &UIAction::toggled,
             this, &UIToolsToolbar::sltHandleActionToggle);
+
+    /* Configure 'Global' menu: */
+    UIMenu *pMenuGlobal = m_pActionPool->action(UIActionIndexST_M_Tools_M_Global)->menu();
+    AssertPtrReturnVoid(pMenuGlobal);
+    {
+        /* Add 'Virtual Media Manager' action: */
+        pMenuGlobal->addAction(m_pActionPool->action(UIActionIndexST_M_Tools_M_Global_VirtualMediaManager));
+        connect(m_pActionPool->action(UIActionIndexST_M_Tools_M_Global_VirtualMediaManager), &UIAction::triggered,
+                this, &UIToolsToolbar::sltHandleOpenToolGlobal);
+        m_pActionPool->action(UIActionIndexST_M_Tools_M_Global_VirtualMediaManager)
+            ->setProperty("ToolTypeGlobal", QVariant::fromValue(ToolTypeGlobal_VirtualMedia));
+
+        /* Add 'Host Network Manager' action: */
+        pMenuGlobal->addAction(m_pActionPool->action(UIActionIndexST_M_Tools_M_Global_HostNetworkManager));
+        connect(m_pActionPool->action(UIActionIndexST_M_Tools_M_Global_HostNetworkManager), &UIAction::triggered,
+                this, &UIToolsToolbar::sltHandleOpenToolGlobal);
+        m_pActionPool->action(UIActionIndexST_M_Tools_M_Global_HostNetworkManager)
+            ->setProperty("ToolTypeGlobal", QVariant::fromValue(ToolTypeGlobal_HostNetwork));
+    }
+
+    /* Configure 'Global' toggle action: */
+    m_pActionPool->action(UIActionIndexST_M_Tools_T_Global)->setMenu(pMenuGlobal);
+    connect(m_pActionPool->action(UIActionIndexST_M_Tools_T_Global), &UIAction::toggled,
+            this, &UIToolsToolbar::sltHandleActionToggle);
+
+    /* By default 'Machine' toggle action is toggled: */
+    m_pActionPool->action(UIActionIndexST_M_Tools_T_Machine)->setChecked(true);
 }
 
@@ -173,4 +250,18 @@
             }
 
+            /* Create Global tab-bar: */
+            m_pTabBarGlobal = new UITabBar;
+            AssertPtrReturnVoid(m_pTabBarGlobal);
+            {
+                /* Configure tab-bar: */
+                connect(m_pTabBarGlobal, &UITabBar::sigTabRequestForClosing,
+                        this, &UIToolsToolbar::sltHandleCloseToolGlobal);
+                connect(m_pTabBarGlobal, &UITabBar::sigCurrentTabChanged,
+                        this, &UIToolsToolbar::sltHandleToolChosenGlobal);
+
+                /* Add into layout: */
+                m_pLayoutStacked->addWidget(m_pTabBarGlobal);
+            }
+
             /* Add into layout: */
             m_pLayoutMain->addLayout(m_pLayoutStacked);
@@ -189,8 +280,6 @@
 
             /* Add actions: */
-            UIAction *pActionMachine = m_pActionPool->action(UIActionIndexST_M_Tools_T_Machine);
-            m_pToolBar->addAction(pActionMachine);
-            QToolButton *pNamedMenuToolButton = qobject_cast<QToolButton*>(m_pToolBar->widgetForAction(pActionMachine));
-            pNamedMenuToolButton->setPopupMode(QToolButton::InstantPopup);
+            m_pToolBar->addAction(m_pActionPool->action(UIActionIndexST_M_Tools_T_Machine));
+            m_pToolBar->addAction(m_pActionPool->action(UIActionIndexST_M_Tools_T_Global));
 
             /* Add into layout: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIToolsToolbar.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIToolsToolbar.h	(revision 68199)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIToolsToolbar.h	(revision 68200)
@@ -25,4 +25,5 @@
 
 /* GUI includes: */
+#include "UIToolsPaneGlobal.h"
 #include "UIToolsPaneMachine.h"
 
@@ -47,7 +48,11 @@
     /** Notify listeners about Machine tool of particular @a enmType opened. */
     void sigToolOpenedMachine(const ToolTypeMachine enmType);
+    /** Notify listeners about Global tool of particular @a enmType opened. */
+    void sigToolOpenedGlobal(const ToolTypeGlobal enmType);
 
     /** Notify listeners about Machine tool of particular @a enmType closed. */
     void sigToolClosedMachine(const ToolTypeMachine enmType);
+    /** Notify listeners about Global tool of particular @a enmType closed. */
+    void sigToolClosedGlobal(const ToolTypeGlobal enmType);
 
 public:
@@ -61,10 +66,16 @@
     /** Handles request to open Machine tool. */
     void sltHandleOpenToolMachine();
+    /** Handles request to open Global tool. */
+    void sltHandleOpenToolGlobal();
 
     /** Handles request to close Machine tool with passed @a uuid. */
     void sltHandleCloseToolMachine(const QUuid &uuid);
+    /** Handles request to close Global tool with passed @a uuid. */
+    void sltHandleCloseToolGlobal(const QUuid &uuid);
 
     /** Handles request to make Machine tool with passed @a uuid current one. */
     void sltHandleToolChosenMachine(const QUuid &uuid);
+    /** Handles request to make Global tool with passed @a uuid current one. */
+    void sltHandleToolChosenGlobal(const QUuid &uuid);
 
     /** Handles action toggle. */
@@ -90,4 +101,6 @@
     /** Holds the Machine tab-bar instance. */
     UITabBar *m_pTabBarMachine;
+    /** Holds the Global tab-bar instance. */
+    UITabBar *m_pTabBarGlobal;
 
     /** Holds the toolbar instance. */
@@ -96,4 +109,6 @@
     /** Holds the map of opened Machine tool IDs. */
     QMap<ToolTypeMachine, QUuid>  m_mapTabIdsMachine;
+    /** Holds the map of opened Global tool IDs. */
+    QMap<ToolTypeGlobal, QUuid>   m_mapTabIdsGlobal;
 };
 
