Index: /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 53320)
+++ /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 53321)
@@ -491,5 +491,4 @@
 	src/runtime/UIActionPoolRuntime.cpp \
 	src/runtime/UIIndicatorsPool.cpp \
-	src/runtime/UIMenuBarEditorWindow.cpp \
 	src/runtime/UIStatusBarEditorWindow.cpp \
 	src/selector/UIActionPoolSelector.cpp \
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMenuBarEditorWindow.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMenuBarEditorWindow.cpp	(revision 53320)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMenuBarEditorWindow.cpp	(revision 53321)
@@ -27,5 +27,4 @@
 # include <QPainter>
 # include <QMenu>
-# include <QMap>
 
 /* GUI includes: */
@@ -37,5 +36,4 @@
 # include "UIIconPool.h"
 # include "UIToolBar.h"
-# include "QIWithRetranslateUI.h"
 # include "QIToolButton.h"
 # include "VBoxGlobal.h"
@@ -44,134 +42,11 @@
 
 
-
-/** QWidget reimplementation
-  * used as menu-bar editor widget. */
-class UIMenuBarEditorWidget : public QIWithRetranslateUI2<QWidget>
-{
-    Q_OBJECT;
-
-signals:
-
-    /** Notifies about Cancel button click. */
-    void sigCancelClicked();
-
-public:
-
-    /** Constructor.
-      * @param pParent      is passed to QWidget constructor,
-      * @param strMachineID brings the machine ID to be used by the editor,
-      * @param pActionPool  brings the action-pool to be used by the editor. */
-    UIMenuBarEditorWidget(QWidget *pParent,
-                          const QString &strMachineID,
-                          UIActionPool *pActionPool);
-
-    /** Returns the machine ID instance. */
-    const QString& machineID() const { return m_strMachineID; }
-
-    /** Returns the action-pool reference. */
-    const UIActionPool* actionPool() const { return m_pActionPool; }
-
-private slots:
-
-    /** Handles configuration change. */
-    void sltHandleConfigurationChange(const QString &strMachineID);
-
-    /** Handles menu-bar menu click. */
-    void sltHandleMenuBarMenuClick();
-
-private:
-
-    /** Prepare routine. */
-    void prepare();
-
-#ifdef Q_WS_MAC
-    /** Prepare named menu routine. */
-    QMenu* prepareNamedMenu(const QString &strName);
-#endif /* Q_WS_MAC */
-    /** Prepare copied menu routine. */
-    QMenu* prepareCopiedMenu(const UIAction *pAction);
-#if 0
-    /** Prepare copied sub-menu routine. */
-    QMenu* prepareCopiedSubMenu(QMenu *pMenu, const UIAction *pAction);
-#endif
-    /** Prepare named action routine. */
-    QAction* prepareNamedAction(QMenu *pMenu, const QString &strName,
-                                int iExtraDataID, const QString &strExtraDataID);
-    /** Prepare copied action routine. */
-    QAction* prepareCopiedAction(QMenu *pMenu, const UIAction *pAction);
-
-    /** Prepare menus routine. */
-    void prepareMenus();
-#ifdef Q_WS_MAC
-    /** Mac OS X: Prepare 'Application' menu routine. */
-    void prepareMenuApplication();
-#endif /* Q_WS_MAC */
-    /** Prepare 'Machine' menu routine. */
-    void prepareMenuMachine();
-    /** Prepare 'View' menu routine. */
-    void prepareMenuView();
-    /** Prepare 'Input' menu routine. */
-    void prepareMenuInput();
-    /** Prepare 'Devices' menu routine. */
-    void prepareMenuDevices();
-#ifdef VBOX_WITH_DEBUGGER_GUI
-    /** Prepare 'Debug' menu routine. */
-    void prepareMenuDebug();
-#endif /* VBOX_WITH_DEBUGGER_GUI */
-    /** Prepare 'Help' menu routine. */
-    void prepareMenuHelp();
-
-    /** Updates menus routine. */
-    void updateMenus();
-#ifdef Q_WS_MAC
-    /** Mac OS X: Updates 'Application' menu routine. */
-    void updateMenuApplication();
-#endif /* Q_WS_MAC */
-    /** Updates 'Machine' menu routine. */
-    void updateMenuMachine();
-    /** Updates 'View' menu routine. */
-    void updateMenuView();
-    /** Updates 'Input' menu routine. */
-    void updateMenuInput();
-    /** Updates 'Devices' menu routine. */
-    void updateMenuDevices();
-#ifdef VBOX_WITH_DEBUGGER_GUI
-    /** Updates 'Debug' menu routine. */
-    void updateMenuDebug();
-#endif /* VBOX_WITH_DEBUGGER_GUI */
-    /** Updates 'Help' menu routine. */
-    void updateMenuHelp();
-
-    /** Retranslation routine. */
-    virtual void retranslateUi();
-
-    /** Paint event handler. */
-    virtual void paintEvent(QPaintEvent *pEvent);
-
-    /** @name General
-      * @{ */
-        /** Holds the machine ID instance. */
-        QString m_strMachineID;
-        /** Holds the action-pool reference. */
-        const UIActionPool *m_pActionPool;
-    /** @} */
-
-    /** @name Contents
-      * @{ */
-        /** Holds the main-layout instance. */
-        QHBoxLayout *m_pMainLayout;
-        /** Holds the tool-bar instance. */
-        UIToolBar *m_pToolBar;
-        /** Holds the close-button instance. */
-        QIToolButton *m_pButtonClose;
-        /** Holds tool-bar action references. */
-        QMap<QString, QAction*> m_actions;
-    /** @} */
-};
-
 UIMenuBarEditorWidget::UIMenuBarEditorWidget(QWidget *pParent,
-                                             const QString &strMachineID,
-                                             UIActionPool *pActionPool)
+                                             bool fStartedFromVMSettings /* = true */,
+                                             const QString &strMachineID /* = QString() */,
+                                             UIActionPool *pActionPool /* = 0 */)
     : QIWithRetranslateUI2<QWidget>(pParent)
+    , m_fPrepared(false)
+    , m_fStartedFromVMSettings(fStartedFromVMSettings)
     , m_strMachineID(strMachineID)
     , m_pActionPool(pActionPool)
@@ -180,4 +55,20 @@
     , m_pButtonClose(0)
 {
+    /* Prepare: */
+    prepare();
+}
+
+void UIMenuBarEditorWidget::setMachineID(const QString &strMachineID)
+{
+    /* Remember new machine ID: */
+    m_strMachineID = strMachineID;
+    /* Prepare: */
+    prepare();
+}
+
+void UIMenuBarEditorWidget::setActionPool(UIActionPool *pActionPool)
+{
+    /* Remember new action-pool: */
+    m_pActionPool = pActionPool;
     /* Prepare: */
     prepare();
@@ -317,4 +208,12 @@
 void UIMenuBarEditorWidget::prepare()
 {
+    /* Do nothing if already prepared: */
+    if (m_fPrepared)
+        return;
+
+    /* Do not prepare if machine ID or action-pool is not set: */
+    if (m_strMachineID.isEmpty() || !m_pActionPool)
+        return;
+
     /* Create main-layout: */
     m_pMainLayout = new QHBoxLayout(this);
@@ -345,18 +244,24 @@
         /* Insert stretch: */
         m_pMainLayout->addStretch();
-        /* Create close-button: */
-        m_pButtonClose = new QIToolButton;
-        AssertPtrReturnVoid(m_pButtonClose);
-        {
-            /* Configure close-button: */
-            m_pButtonClose->setFocusPolicy(Qt::StrongFocus);
-            m_pButtonClose->setMinimumSize(QSize(1, 1));
-            m_pButtonClose->setShortcut(Qt::Key_Escape);
-            m_pButtonClose->setIcon(UIIconPool::iconSet(":/ok_16px.png"));
-            connect(m_pButtonClose, SIGNAL(clicked(bool)), this, SIGNAL(sigCancelClicked()));
-            /* Add close-button into main-layout: */
-            m_pMainLayout->addWidget(m_pButtonClose);
-        }
-    }
+        /* Create close-button if necessary: */
+        if (!m_fStartedFromVMSettings)
+        {
+            m_pButtonClose = new QIToolButton;
+            AssertPtrReturnVoid(m_pButtonClose);
+            {
+                /* Configure close-button: */
+                m_pButtonClose->setFocusPolicy(Qt::StrongFocus);
+                m_pButtonClose->setMinimumSize(QSize(1, 1));
+                m_pButtonClose->setShortcut(Qt::Key_Escape);
+                m_pButtonClose->setIcon(UIIconPool::iconSet(":/ok_16px.png"));
+                connect(m_pButtonClose, SIGNAL(clicked(bool)), this, SIGNAL(sigCancelClicked()));
+                /* Add close-button into main-layout: */
+                m_pMainLayout->addWidget(m_pButtonClose);
+            }
+        }
+    }
+
+    /* Mark as prepared: */
+    m_fPrepared = true;
 
     /* Translate contents: */
@@ -909,6 +814,7 @@
 void UIMenuBarEditorWidget::retranslateUi()
 {
-    /* Translate close-button: */
-    m_pButtonClose->setToolTip(tr("Close"));
+    /* Translate close-button if necessary: */
+    if (!m_fStartedFromVMSettings && m_pButtonClose)
+        m_pButtonClose->setToolTip(tr("Close"));
 }
 
@@ -974,4 +880,6 @@
     painter.drawLine(QLine(QPoint(5 + 1, height() - 1 - 5 - 1),               QPoint(width() - 1 - 5 - 1, height() - 1 - 5 - 1)));
     painter.drawLine(QLine(QPoint(width() - 1 - 5 - 1, height() - 1 - 5 - 1), QPoint(width() - 1 - 5 - 1, 0)));
+    if (m_fStartedFromVMSettings)
+        painter.drawLine(QLine(QPoint(width() - 1 - 5 - 1, 0), QPoint(5 + 1, 0)));
     painter.restore();
 #endif /* Q_WS_WIN || Q_WS_X11 */
@@ -981,11 +889,9 @@
 UIMenuBarEditorWindow::UIMenuBarEditorWindow(UIMachineWindow *pParent, UIActionPool *pActionPool)
 #ifndef Q_WS_MAC
-    : UISlidingToolBar(pParent, pParent->menuBar(), new UIMenuBarEditorWidget(0, vboxGlobal().managedVMUuid(), pActionPool), UISlidingToolBar::Position_Top)
+    : UISlidingToolBar(pParent, pParent->menuBar(), new UIMenuBarEditorWidget(0, false, vboxGlobal().managedVMUuid(), pActionPool), UISlidingToolBar::Position_Top)
 #else /* Q_WS_MAC */
-    : UISlidingToolBar(pParent, 0, new UIMenuBarEditorWidget(0, vboxGlobal().managedVMUuid(), pActionPool), UISlidingToolBar::Position_Top)
+    : UISlidingToolBar(pParent, 0, new UIMenuBarEditorWidget(0, false, vboxGlobal().managedVMUuid(), pActionPool), UISlidingToolBar::Position_Top)
 #endif /* Q_WS_MAC */
 {
 }
 
-#include "UIMenuBarEditorWindow.moc"
-
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMenuBarEditorWindow.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMenuBarEditorWindow.h	(revision 53320)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMenuBarEditorWindow.h	(revision 53321)
@@ -19,9 +19,19 @@
 
 /* Qt includes: */
+#include <QMap>
+
+/* GUI includes: */
 #include "UISlidingToolBar.h"
+#include "QIWithRetranslateUI.h"
 
 /* Forward declarations: */
 class UIMachineWindow;
 class UIActionPool;
+class UIToolBar;
+class UIAction;
+class QIToolButton;
+class QHBoxLayout;
+class QAction;
+class QMenu;
 
 /** UISlidingToolBar wrapper
@@ -38,3 +48,138 @@
 };
 
+/** QWidget reimplementation
+  * used as menu-bar editor widget. */
+class UIMenuBarEditorWidget : public QIWithRetranslateUI2<QWidget>
+{
+    Q_OBJECT;
+
+signals:
+
+    /** Notifies about Cancel button click. */
+    void sigCancelClicked();
+
+public:
+
+    /** Constructor.
+      * @param pParent                is passed to QWidget constructor,
+      * @param fStartedFromVMSettings determines whether 'this' is a part of VM settings,
+      * @param strMachineID           brings the machine ID to be used by the editor,
+      * @param pActionPool            brings the action-pool to be used by the editor. */
+    UIMenuBarEditorWidget(QWidget *pParent,
+                          bool fStartedFromVMSettings = true,
+                          const QString &strMachineID = QString(),
+                          UIActionPool *pActionPool = 0);
+
+    /** Returns the machine ID instance. */
+    const QString& machineID() const { return m_strMachineID; }
+    /** Defines the @a strMachineID instance. */
+    void setMachineID(const QString &strMachineID);
+
+    /** Returns the action-pool reference. */
+    const UIActionPool* actionPool() const { return m_pActionPool; }
+    /** Defines the @a pActionPool reference. */
+    void setActionPool(UIActionPool *pActionPool);
+
+private slots:
+
+    /** Handles configuration change. */
+    void sltHandleConfigurationChange(const QString &strMachineID);
+
+    /** Handles menu-bar menu click. */
+    void sltHandleMenuBarMenuClick();
+
+private:
+
+    /** Prepare routine. */
+    void prepare();
+
+#ifdef Q_WS_MAC
+    /** Prepare named menu routine. */
+    QMenu* prepareNamedMenu(const QString &strName);
+#endif /* Q_WS_MAC */
+    /** Prepare copied menu routine. */
+    QMenu* prepareCopiedMenu(const UIAction *pAction);
+#if 0
+    /** Prepare copied sub-menu routine. */
+    QMenu* prepareCopiedSubMenu(QMenu *pMenu, const UIAction *pAction);
+#endif
+    /** Prepare named action routine. */
+    QAction* prepareNamedAction(QMenu *pMenu, const QString &strName,
+                                int iExtraDataID, const QString &strExtraDataID);
+    /** Prepare copied action routine. */
+    QAction* prepareCopiedAction(QMenu *pMenu, const UIAction *pAction);
+
+    /** Prepare menus routine. */
+    void prepareMenus();
+#ifdef Q_WS_MAC
+    /** Mac OS X: Prepare 'Application' menu routine. */
+    void prepareMenuApplication();
+#endif /* Q_WS_MAC */
+    /** Prepare 'Machine' menu routine. */
+    void prepareMenuMachine();
+    /** Prepare 'View' menu routine. */
+    void prepareMenuView();
+    /** Prepare 'Input' menu routine. */
+    void prepareMenuInput();
+    /** Prepare 'Devices' menu routine. */
+    void prepareMenuDevices();
+#ifdef VBOX_WITH_DEBUGGER_GUI
+    /** Prepare 'Debug' menu routine. */
+    void prepareMenuDebug();
+#endif /* VBOX_WITH_DEBUGGER_GUI */
+    /** Prepare 'Help' menu routine. */
+    void prepareMenuHelp();
+
+    /** Updates menus routine. */
+    void updateMenus();
+#ifdef Q_WS_MAC
+    /** Mac OS X: Updates 'Application' menu routine. */
+    void updateMenuApplication();
+#endif /* Q_WS_MAC */
+    /** Updates 'Machine' menu routine. */
+    void updateMenuMachine();
+    /** Updates 'View' menu routine. */
+    void updateMenuView();
+    /** Updates 'Input' menu routine. */
+    void updateMenuInput();
+    /** Updates 'Devices' menu routine. */
+    void updateMenuDevices();
+#ifdef VBOX_WITH_DEBUGGER_GUI
+    /** Updates 'Debug' menu routine. */
+    void updateMenuDebug();
+#endif /* VBOX_WITH_DEBUGGER_GUI */
+    /** Updates 'Help' menu routine. */
+    void updateMenuHelp();
+
+    /** Retranslation routine. */
+    virtual void retranslateUi();
+
+    /** Paint event handler. */
+    virtual void paintEvent(QPaintEvent *pEvent);
+
+    /** @name General
+      * @{ */
+        /** Holds whether 'this' is prepared. */
+        bool m_fPrepared;
+        /** Holds whether 'this' is a part of VM settings. */
+        bool m_fStartedFromVMSettings;
+        /** Holds the machine ID instance. */
+        QString m_strMachineID;
+        /** Holds the action-pool reference. */
+        const UIActionPool *m_pActionPool;
+    /** @} */
+
+    /** @name Contents
+      * @{ */
+        /** Holds the main-layout instance. */
+        QHBoxLayout *m_pMainLayout;
+        /** Holds the tool-bar instance. */
+        UIToolBar *m_pToolBar;
+        /** Holds the close-button instance. */
+        QIToolButton *m_pButtonClose;
+        /** Holds tool-bar action references. */
+        QMap<QString, QAction*> m_actions;
+    /** @} */
+};
+
 #endif /* !___UIMenuBarEditorWindow_h___ */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIStatusBarEditorWindow.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIStatusBarEditorWindow.cpp	(revision 53320)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIStatusBarEditorWindow.cpp	(revision 53321)
@@ -30,6 +30,4 @@
 # include <QPixmap>
 # include <QDrag>
-# include <QList>
-# include <QMap>
 
 /* GUI includes: */
@@ -39,5 +37,4 @@
 # include "UIConverter.h"
 # include "UIIconPool.h"
-# include "QIWithRetranslateUI.h"
 # include "QIToolButton.h"
 # include "VBoxGlobal.h"
@@ -111,103 +108,4 @@
     /** Holds the last mouse-press position. */
     QPoint m_mousePressPosition;
-};
-
-
-/** QWidget reimplementation
-  * used as status-bar editor widget. */
-class UIStatusBarEditorWidget : public QIWithRetranslateUI2<QWidget>
-{
-    Q_OBJECT;
-
-signals:
-
-    /** Notifies about Cancel button click. */
-    void sigCancelClicked();
-
-public:
-
-    /** Constructor.
-      * @param pParent      is passed to QWidget constructor,
-      * @param strMachineID brings the machine ID to be used by the editor. */
-    UIStatusBarEditorWidget(QWidget *pParent,
-                            const QString &strMachineID);
-
-    /** Returns the machine ID instance. */
-    const QString& machineID() const { return m_strMachineID; }
-
-private slots:
-
-    /** Handles configuration change. */
-    void sltHandleConfigurationChange(const QString &strMachineID);
-
-    /** Handles button click. */
-    void sltHandleButtonClick();
-
-    /** Handles drag object destroy. */
-    void sltHandleDragObjectDestroy();
-
-private:
-
-    /** Prepare routine. */
-    void prepare();
-    /** Prepare status buttons routine. */
-    void prepareStatusButtons();
-    /** Prepare status button routine. */
-    void prepareStatusButton(IndicatorType type);
-
-    /** Updates status buttons. */
-    void updateStatusButtons();
-
-    /** Retranslation routine. */
-    virtual void retranslateUi();
-
-    /** Paint event handler. */
-    virtual void paintEvent(QPaintEvent *pEvent);
-
-    /** Drag-enter event handler. */
-    virtual void dragEnterEvent(QDragEnterEvent *pEvent);
-    /** Drag-move event handler. */
-    virtual void dragMoveEvent(QDragMoveEvent *pEvent);
-    /** Drag-leave event handler. */
-    virtual void dragLeaveEvent(QDragLeaveEvent *pEvent);
-    /** Drop event handler. */
-    virtual void dropEvent(QDropEvent *pEvent);
-
-    /** Returns position for passed @a type. */
-    int position(IndicatorType type) const;
-
-    /** @name General
-      * @{ */
-        /** Holds the machine ID instance. */
-        QString m_strMachineID;
-    /** @} */
-
-    /** @name Contents
-      * @{ */
-        /** Holds the main-layout instance. */
-        QHBoxLayout *m_pMainLayout;
-        /** Holds the button-layout instance. */
-        QHBoxLayout *m_pButtonLayout;
-        /** Holds the close-button instance. */
-        QIToolButton *m_pButtonClose;
-        /** Holds status-bar buttons. */
-        QMap<IndicatorType, UIStatusBarEditorButton*> m_buttons;
-    /** @} */
-
-    /** @name Contents: Restrictions
-      * @{ */
-        /** Holds the cached status-bar button restrictions. */
-        QList<IndicatorType> m_restrictions;
-    /** @} */
-
-    /** @name Contents: Order
-      * @{ */
-        /** Holds the cached status-bar button order. */
-        QList<IndicatorType> m_order;
-        /** Holds the token-button to drop dragged-button nearby. */
-        UIStatusBarEditorButton *m_pButtonDropToken;
-        /** Holds whether dragged-button should be dropped <b>after</b> the token-button. */
-        bool m_fDropAfterTokenButton;
-    /** @} */
 };
 
@@ -358,6 +256,9 @@
 
 UIStatusBarEditorWidget::UIStatusBarEditorWidget(QWidget *pParent,
-                                                 const QString &strMachineID)
+                                                 bool fStartedFromVMSettings /* = true */,
+                                                 const QString &strMachineID /* = QString() */)
     : QIWithRetranslateUI2<QWidget>(pParent)
+    , m_fPrepared(false)
+    , m_fStartedFromVMSettings(fStartedFromVMSettings)
     , m_strMachineID(strMachineID)
     , m_pMainLayout(0), m_pButtonLayout(0)
@@ -370,4 +271,12 @@
 }
 
+void UIStatusBarEditorWidget::setMachineID(const QString &strMachineID)
+{
+    /* Remember new machine ID: */
+    m_strMachineID = strMachineID;
+    /* Prepare: */
+    prepare();
+}
+
 void UIStatusBarEditorWidget::sltHandleConfigurationChange(const QString &strMachineID)
 {
@@ -414,4 +323,12 @@
 void UIStatusBarEditorWidget::prepare()
 {
+    /* Do nothing if already prepared: */
+    if (m_fPrepared)
+        return;
+
+    /* Do not prepare if machine ID is not set: */
+    if (m_strMachineID.isEmpty())
+        return;
+
     /* Track D&D events: */
     setAcceptDrops(true);
@@ -434,16 +351,19 @@
 #endif /* !Q_WS_MAC */
         m_pMainLayout->setSpacing(0);
-        /* Create close-button: */
-        m_pButtonClose = new QIToolButton;
-        AssertPtrReturnVoid(m_pButtonClose);
+        /* Create close-button if necessary: */
+        if (!m_fStartedFromVMSettings)
         {
-            /* Configure close-button: */
-            m_pButtonClose->setFocusPolicy(Qt::StrongFocus);
-            m_pButtonClose->setMinimumSize(QSize(1, 1));
-            m_pButtonClose->setShortcut(Qt::Key_Escape);
-            m_pButtonClose->setIcon(UIIconPool::iconSet(":/ok_16px.png"));
-            connect(m_pButtonClose, SIGNAL(clicked(bool)), this, SIGNAL(sigCancelClicked()));
-            /* Add close-button into main-layout: */
-            m_pMainLayout->addWidget(m_pButtonClose);
+            m_pButtonClose = new QIToolButton;
+            AssertPtrReturnVoid(m_pButtonClose);
+            {
+                /* Configure close-button: */
+                m_pButtonClose->setFocusPolicy(Qt::StrongFocus);
+                m_pButtonClose->setMinimumSize(QSize(1, 1));
+                m_pButtonClose->setShortcut(Qt::Key_Escape);
+                m_pButtonClose->setIcon(UIIconPool::iconSet(":/ok_16px.png"));
+                connect(m_pButtonClose, SIGNAL(clicked(bool)), this, SIGNAL(sigCancelClicked()));
+                /* Add close-button into main-layout: */
+                m_pMainLayout->addWidget(m_pButtonClose);
+            }
         }
         /* Insert stretch: */
@@ -463,4 +383,7 @@
     }
 
+    /* Mark as prepared: */
+    m_fPrepared = true;
+
     /* Translate contents: */
     retranslateUi();
@@ -536,6 +459,7 @@
 void UIStatusBarEditorWidget::retranslateUi()
 {
-    /* Translate close-button: */
-    m_pButtonClose->setToolTip(tr("Close"));
+    /* Translate close-button if necessary: */
+    if (!m_fStartedFromVMSettings && m_pButtonClose)
+        m_pButtonClose->setToolTip(tr("Close"));
 }
 
@@ -737,5 +661,5 @@
 
 UIStatusBarEditorWindow::UIStatusBarEditorWindow(UIMachineWindow *pParent)
-    : UISlidingToolBar(pParent, pParent->statusBar(), new UIStatusBarEditorWidget(0, vboxGlobal().managedVMUuid()), UISlidingToolBar::Position_Bottom)
+    : UISlidingToolBar(pParent, pParent->statusBar(), new UIStatusBarEditorWidget(0, false, vboxGlobal().managedVMUuid()), UISlidingToolBar::Position_Bottom)
 {
 }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIStatusBarEditorWindow.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIStatusBarEditorWindow.h	(revision 53320)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIStatusBarEditorWindow.h	(revision 53321)
@@ -19,8 +19,17 @@
 
 /* Qt includes: */
+#include <QMap>
+#include <QList>
+
+/* GUI includes: */
+#include "UIExtraDataDefs.h"
 #include "UISlidingToolBar.h"
+#include "QIWithRetranslateUI.h"
 
 /* Forward declarations: */
+class UIStatusBarEditorButton;
 class UIMachineWindow;
+class QIToolButton;
+class QHBoxLayout;
 
 /** UISlidingToolBar wrapper
@@ -36,3 +45,109 @@
 };
 
+/** QWidget reimplementation
+  * used as status-bar editor widget. */
+class UIStatusBarEditorWidget : public QIWithRetranslateUI2<QWidget>
+{
+    Q_OBJECT;
+
+signals:
+
+    /** Notifies about Cancel button click. */
+    void sigCancelClicked();
+
+public:
+
+    /** Constructor,
+      * @param pParent                is passed to QWidget constructor,
+      * @param fStartedFromVMSettings determines whether 'this' is a part of VM settings,
+      * @param strMachineID           brings the machine ID to be used by the editor. */
+    UIStatusBarEditorWidget(QWidget *pParent,
+                            bool fStartedFromVMSettings = true,
+                            const QString &strMachineID = QString());
+
+    /** Returns the machine ID instance. */
+    const QString& machineID() const { return m_strMachineID; }
+    /** Defines the @a strMachineID instance. */
+    void setMachineID(const QString &strMachineID);
+
+private slots:
+
+    /** Handles configuration change. */
+    void sltHandleConfigurationChange(const QString &strMachineID);
+
+    /** Handles button click. */
+    void sltHandleButtonClick();
+
+    /** Handles drag object destroy. */
+    void sltHandleDragObjectDestroy();
+
+private:
+
+    /** Prepare routine. */
+    void prepare();
+    /** Prepare status buttons routine. */
+    void prepareStatusButtons();
+    /** Prepare status button routine. */
+    void prepareStatusButton(IndicatorType type);
+
+    /** Updates status buttons. */
+    void updateStatusButtons();
+
+    /** Retranslation routine. */
+    virtual void retranslateUi();
+
+    /** Paint event handler. */
+    virtual void paintEvent(QPaintEvent *pEvent);
+
+    /** Drag-enter event handler. */
+    virtual void dragEnterEvent(QDragEnterEvent *pEvent);
+    /** Drag-move event handler. */
+    virtual void dragMoveEvent(QDragMoveEvent *pEvent);
+    /** Drag-leave event handler. */
+    virtual void dragLeaveEvent(QDragLeaveEvent *pEvent);
+    /** Drop event handler. */
+    virtual void dropEvent(QDropEvent *pEvent);
+
+    /** Returns position for passed @a type. */
+    int position(IndicatorType type) const;
+
+    /** @name General
+      * @{ */
+        /** Holds whether 'this' is prepared. */
+        bool m_fPrepared;
+        /** Holds whether 'this' is a part of VM settings. */
+        bool m_fStartedFromVMSettings;
+        /** Holds the machine ID instance. */
+        QString m_strMachineID;
+    /** @} */
+
+    /** @name Contents
+      * @{ */
+        /** Holds the main-layout instance. */
+        QHBoxLayout *m_pMainLayout;
+        /** Holds the button-layout instance. */
+        QHBoxLayout *m_pButtonLayout;
+        /** Holds the close-button instance. */
+        QIToolButton *m_pButtonClose;
+        /** Holds status-bar buttons. */
+        QMap<IndicatorType, UIStatusBarEditorButton*> m_buttons;
+    /** @} */
+
+    /** @name Contents: Restrictions
+      * @{ */
+        /** Holds the cached status-bar button restrictions. */
+        QList<IndicatorType> m_restrictions;
+    /** @} */
+
+    /** @name Contents: Order
+      * @{ */
+        /** Holds the cached status-bar button order. */
+        QList<IndicatorType> m_order;
+        /** Holds the token-button to drop dragged-button nearby. */
+        UIStatusBarEditorButton *m_pButtonDropToken;
+        /** Holds whether dragged-button should be dropped <b>after</b> the token-button. */
+        bool m_fDropAfterTokenButton;
+    /** @} */
+};
+
 #endif /* !___UIStatusBarEditorWindow_h___ */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp	(revision 53320)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp	(revision 53321)
@@ -29,4 +29,5 @@
 # include "UIMessageCenter.h"
 # include "UIConverter.h"
+# include "UIActionPool.h"
 
 /* COM includes: */
@@ -49,7 +50,14 @@
     , m_fWddmModeSupported(false)
 #endif /* VBOX_WITH_CRHGSMI */
+    , m_pActionPool(0)
 {
     /* Prepare: */
     prepare();
+}
+
+UIMachineSettingsDisplay::~UIMachineSettingsDisplay()
+{
+    /* Cleanup: */
+    cleanup();
 }
 
@@ -178,4 +186,10 @@
     m_pEditorVideoCaptureBitRate->setValue(displayData.m_iVideoCaptureBitRate);
     m_pScrollerVideoCaptureScreens->setValue(displayData.m_screens);
+
+    /* Prepare Machine Window data: */
+    const QString strMachineID = m_machine.GetId();
+    m_pMenuBarEditor->setMachineID(strMachineID);
+    m_pStatusBarEditor->setMachineID(strMachineID);
+    m_pMenuBarEditor->setActionPool(m_pActionPool);
 
     /* Polish page finally: */
@@ -693,4 +707,5 @@
     prepareRemoteDisplayTab();
     prepareVideoCaptureTab();
+    prepareMachineWindowTab();
 
     /* Prepare validation: */
@@ -841,4 +856,10 @@
 }
 
+void UIMachineSettingsDisplay::prepareMachineWindowTab()
+{
+    /* Create personal action-pool: */
+    m_pActionPool = UIActionPool::create(UIActionPoolType_Runtime);
+}
+
 void UIMachineSettingsDisplay::prepareValidation()
 {
@@ -851,4 +872,16 @@
     connect(m_pEditorRemoteDisplayPort, SIGNAL(textChanged(const QString&)), this, SLOT(revalidate()));
     connect(m_pEditorRemoteDisplayTimeout, SIGNAL(textChanged(const QString&)), this, SLOT(revalidate()));
+}
+
+void UIMachineSettingsDisplay::cleanupMachineWindowTab()
+{
+    /* Destroy personal action-pool: */
+    UIActionPool::destroy(m_pActionPool);
+}
+
+void UIMachineSettingsDisplay::cleanup()
+{
+    /* Cleanup tabs: */
+    cleanupMachineWindowTab();
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.h	(revision 53320)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.h	(revision 53321)
@@ -24,4 +24,7 @@
 /* COM includes: */
 #include "CGuestOSType.h"
+
+/* Forward declarations: */
+class UIActionPool;
 
 /* Machine settings / Display page / Data: */
@@ -115,6 +118,8 @@
 public:
 
-    /* Constructor: */
+    /** Constructor. */
     UIMachineSettingsDisplay();
+    /** Destructor. */
+    ~UIMachineSettingsDisplay();
 
     /* API: Correlation stuff: */
@@ -175,10 +180,21 @@
 private:
 
-    /* Helpers: Prepare stuff: */
+    /** Prepare routine. */
     void prepare();
+    /** Prepare routine: Video tab. */
     void prepareVideoTab();
+    /** Prepare routine: Remote Display tab. */
     void prepareRemoteDisplayTab();
+    /** Prepare routine: Video Capture tab. */
     void prepareVideoCaptureTab();
+    /** Prepare routine: Machine Window tab. */
+    void prepareMachineWindowTab();
+    /** Prepare routine: Validation. */
     void prepareValidation();
+
+    /** Cleanup routine: Machine Window tab. */
+    void cleanupMachineWindowTab();
+    /** Cleanup routine. */
+    void cleanup();
 
     /* Helpers: Video stuff: */
@@ -217,4 +233,7 @@
     /* Cache: */
     UICacheSettingsMachineDisplay m_cache;
+
+    /** Holds the action-pool instance. */
+    UIActionPool *m_pActionPool;
 };
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.ui
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.ui	(revision 53320)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.ui	(revision 53321)
@@ -645,4 +645,38 @@
       </layout>
      </widget>
+     <widget class="QWidget" name="m_pTabMachineWindow">
+      <attribute name="title">
+       <string>Machine &amp;Window</string>
+      </attribute>
+      <layout class="QVBoxLayout" name="m_pLayoutTabMachineWindow">
+       <item>
+        <widget class="UIMenuBarEditorWidget" name="m_pMenuBarEditor">
+         <property name="whatsThis">
+          <string>Allows to modify VM menu-bar contents.</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="m_pSpacer">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>0</width>
+           <height>0</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="UIStatusBarEditorWidget" name="m_pStatusBarEditor">
+         <property name="whatsThis">
+          <string>Allows to modify VM status-bar contents.</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </widget>
     </widget>
    </item>
@@ -671,4 +705,14 @@
    <header>UIFilmContainer.h</header>
   </customwidget>
+  <customwidget>
+   <class>UIMenuBarEditorWidget</class>
+   <extends>QWidget</extends>
+   <header>UIMenuBarEditorWindow.h</header>
+  </customwidget>
+  <customwidget>
+   <class>UIStatusBarEditorWidget</class>
+   <extends>QWidget</extends>
+   <header>UIStatusBarEditorWindow.h</header>
+  </customwidget>
  </customwidgets>
  <resources/>
