Index: /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 75219)
+++ /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 75220)
@@ -841,4 +841,8 @@
 	src/guestctrl/UIGuestControlFileManager.h \
 	src/guestctrl/UIGuestControlFileManagerDialog.h \
+	src/guestctrl/UIGuestControlFileManagerPanel.h \
+	src/guestctrl/UIGuestControlFileManagerSessionPanel.h \
+	src/guestctrl/UIGuestControlFileManagerLogPanel.h \
+	src/guestctrl/UIGuestControlFileManagerSettingsPanel.h \
 	src/guestctrl/UIGuestControlFileModel.h \
 	src/guestctrl/UIGuestControlFileTable.h \
@@ -992,4 +996,8 @@
 	src/guestctrl/UIGuestControlFileManager.h \
 	src/guestctrl/UIGuestControlFileManagerDialog.h \
+	src/guestctrl/UIGuestControlFileManagerPanel.h \
+	src/guestctrl/UIGuestControlFileManagerSessionPanel.h \
+	src/guestctrl/UIGuestControlFileManagerLogPanel.h \
+	src/guestctrl/UIGuestControlFileManagerSettingsPanel.h \
 	src/guestctrl/UIGuestControlFileModel.h \
 	src/guestctrl/UIGuestControlFileTable.h \
@@ -1215,4 +1223,6 @@
 	src/runtime/UIIndicatorsPool.cpp \
 	src/guestctrl/UIGuestControlFileManager.cpp \
+	src/guestctrl/UIGuestControlFileManagerAccounPanel.cpp \
+	src/guestctrl/UIGuestControlFileManagerLogPanel.cpp \
 	src/guestctrl/UIGuestControlFileTable.cpp \
 	src/guestctrl/UIGuestFileTable.cpp \
@@ -1265,4 +1275,6 @@
 	src/runtime/UIIndicatorsPool.cpp \
 	src/guestctrl/UIGuestControlFileManager.cpp \
+	src/guestctrl/UIGuestControlFileManagerSessionPanel.cpp \
+	src/guestctrl/UIGuestControlFileManagerLogPanel.cpp \
 	src/guestctrl/UIGuestControlFileTable.cpp \
 	src/guestctrl/UIGuestFileTable.cpp \
@@ -1540,4 +1552,8 @@
 	src/guestctrl/UIGuestControlFileManager.cpp \
 	src/guestctrl/UIGuestControlFileManagerDialog.cpp \
+	src/guestctrl/UIGuestControlFileManagerPanel.cpp \
+	src/guestctrl/UIGuestControlFileManagerSessionPanel.cpp \
+	src/guestctrl/UIGuestControlFileManagerLogPanel.cpp \
+	src/guestctrl/UIGuestControlFileManagerSettingsPanel.cpp \
 	src/guestctrl/UIGuestControlFileModel.cpp \
 	src/guestctrl/UIGuestControlFileTable.cpp \
@@ -1714,4 +1730,8 @@
 	src/guestctrl/UIGuestControlFileManager.cpp \
 	src/guestctrl/UIGuestControlFileManagerDialog.cpp \
+	src/guestctrl/UIGuestControlFileManagerPanel.cpp \
+	src/guestctrl/UIGuestControlFileManagerSessionPanel.cpp \
+	src/guestctrl/UIGuestControlFileManagerLogPanel.cpp \
+	src/guestctrl/UIGuestControlFileManagerSettingsPanel.cpp \
 	src/guestctrl/UIGuestControlFileModel.cpp \
 	src/guestctrl/UIGuestControlFileTable.cpp \
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.cpp	(revision 75219)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.cpp	(revision 75220)
@@ -1558,5 +1558,5 @@
     virtual void retranslateUi() /* override */
     {
-        setName(QApplication::translate("UIActionPool", "Copy the selected object(s) from host to guest"));
+        setName(QApplication::translate("UIActionPool", "Copy to guest"));
         setShortcutScope(QApplication::translate("UIActionPool", "Guest Control File Manager"));
         setToolTip(QApplication::translate("UIActionPool", "Copy the Selected Object(s) from Host to Guest"));
@@ -1594,5 +1594,5 @@
     virtual void retranslateUi() /* override */
     {
-        setName(QApplication::translate("UIActionPool", "Copy the selected object(s) from guest to host"));
+        setName(QApplication::translate("UIActionPool", "Copy to host"));
         setShortcutScope(QApplication::translate("UIActionPool", "Guest Control File Manager"));
         setToolTip(QApplication::translate("UIActionPool", "Copy the Selected Object(s) from Guest to Host"));
@@ -1601,7 +1601,6 @@
 };
 
-
-/** Simple action extension, used as 'File Manager Settings' in guest control file manager action class. */
-class UIActionMenuGuestControlFileManagerSettings : public UIActionSimple
+/** Toggle action extension, used to toggle 'File Manager Settings' panel in guest control file manager. */
+class UIActionMenuGuestControlFileManagerSettings : public UIActionToggle
 {
     Q_OBJECT;
@@ -1611,13 +1610,16 @@
     /** Constructs action passing @a pParent to the base-class. */
     UIActionMenuGuestControlFileManagerSettings(UIActionPool *pParent)
-        : UIActionSimple(pParent, ":/vm_delete_32px.png", ":/vm_delete_disabled_32px.png")
-    {}
-
-protected:
-
-    /** Returns shortcut extra-data ID. */
-    virtual QString shortcutExtraDataID() const /* override */
-    {
-        return QString("FileManagerSettings");
+        : UIActionToggle(pParent,
+                         ":/log_viewer_bookmark_32px.png", ":/log_viewer_bookmark_disabled_32px.png")
+    {
+        setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    }
+
+protected:
+
+    /** Returns shortcut extra-data ID. */
+    virtual QString shortcutExtraDataID() const /* override */
+    {
+        return QString("ToggleFileManagerSettingsPanel");
     }
 
@@ -1632,9 +1634,127 @@
     {
         setName(QApplication::translate("UIActionPool", "Settings"));
-        setShortcutScope(QApplication::translate("UIActionPool", "Guest Control File Manager"));
-        setStatusTip(QApplication::translate("UIActionPool", "Modify file manager settings"));
-        setToolTip(QApplication::translate("UIActionPool", "Modify File Manager Settings"));
-    }
-};
+        setShortcutScope(QApplication::translate("UIActionPool", "File Manager"));
+        setStatusTip(QApplication::translate("UIActionPool", "Open panel with file manager settings"));
+        setToolTip(QApplication::translate("UIActionPool", "Open Panel With File Manager Settings"));
+    }
+};
+
+/** Toggle action extension, used to toggle 'File Manager Log' panel in guest control file manager. */
+class UIActionMenuGuestControlFileManagerLog : public UIActionToggle
+{
+    Q_OBJECT;
+
+public:
+
+    /** Constructs action passing @a pParent to the base-class. */
+    UIActionMenuGuestControlFileManagerLog(UIActionPool *pParent)
+        : UIActionToggle(pParent,
+                         ":/log_viewer_bookmark_32px.png", ":/log_viewer_bookmark_disabled_32px.png")
+    {
+        setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    }
+
+protected:
+
+    /** Returns shortcut extra-data ID. */
+    virtual QString shortcutExtraDataID() const /* override */
+    {
+        return QString("ToggleFileManagerLogPanel");
+    }
+
+    /** Returns default shortcut. */
+    virtual QKeySequence defaultShortcut(UIActionPoolType) const /* override */
+    {
+        return QKeySequence();
+    }
+
+    /** Handles translation event. */
+    virtual void retranslateUi() /* override */
+    {
+        setName(QApplication::translate("UIActionPool", "Log"));
+        setShortcutScope(QApplication::translate("UIActionPool", "File Manager"));
+        setStatusTip(QApplication::translate("UIActionPool", "Open panel with to view file manager log"));
+        setToolTip(QApplication::translate("UIActionPool", "Open Panel With to View File Manager Log"));
+    }
+};
+
+/** Toggle action extension, used to toggle 'File Manager File Operations' panel in guest control file manager. */
+class UIActionMenuGuestControlFileManagerFileOperations : public UIActionToggle
+{
+    Q_OBJECT;
+
+public:
+
+    /** Constructs action passing @a pParent to the base-class. */
+    UIActionMenuGuestControlFileManagerFileOperations(UIActionPool *pParent)
+        : UIActionToggle(pParent,
+                         ":/log_viewer_bookmark_32px.png", ":/log_viewer_bookmark_disabled_32px.png")
+    {
+        setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    }
+
+protected:
+
+    /** Returns shortcut extra-data ID. */
+    virtual QString shortcutExtraDataID() const /* override */
+    {
+        return QString("ToggleFileManagerFileOperationsPanel");
+    }
+
+    /** Returns default shortcut. */
+    virtual QKeySequence defaultShortcut(UIActionPoolType) const /* override */
+    {
+        return QKeySequence();
+    }
+
+    /** Handles translation event. */
+    virtual void retranslateUi() /* override */
+    {
+        setName(QApplication::translate("UIActionPool", "File Operations"));
+        setShortcutScope(QApplication::translate("UIActionPool", "File Manager"));
+        setStatusTip(QApplication::translate("UIActionPool", "Open panel with to view file manager file operations"));
+        setToolTip(QApplication::translate("UIActionPool", "Open Panel With to View File Manager File Operations"));
+    }
+};
+
+/** Toggle action extension, used to toggle 'File Manager Session' panel in guest control file manager. */
+class UIActionMenuGuestControlFileManagerSession : public UIActionToggle
+{
+    Q_OBJECT;
+
+public:
+
+    /** Constructs action passing @a pParent to the base-class. */
+    UIActionMenuGuestControlFileManagerSession(UIActionPool *pParent)
+        : UIActionToggle(pParent,
+                         ":/log_viewer_bookmark_32px.png", ":/log_viewer_bookmark_disabled_32px.png")
+    {
+        setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    }
+
+protected:
+
+    /** Returns shortcut extra-data ID. */
+    virtual QString shortcutExtraDataID() const /* override */
+    {
+        return QString("ToggleFileManagerSessionPanel");
+    }
+
+    /** Returns default shortcut. */
+    virtual QKeySequence defaultShortcut(UIActionPoolType) const /* override */
+    {
+        return QKeySequence();
+    }
+
+    /** Handles translation event. */
+    virtual void retranslateUi() /* override */
+    {
+        setName(QApplication::translate("UIActionPool", "Session"));
+        setShortcutScope(QApplication::translate("UIActionPool", "File Manager"));
+        setStatusTip(QApplication::translate("UIActionPool", "Open file manager account"));
+        setToolTip(QApplication::translate("UIActionPool", "Open File Manager Session"));
+    }
+};
+
 /** Simple action extension, used as 'Perform GoUp' in guest control file manager action class. */
 class UIActionMenuGuestControlFileManagerGoUp : public UIActionSimple
@@ -2283,5 +2403,9 @@
     m_pool[UIActionIndex_M_GuestControlFileManager_S_CopyToHost] = new  UIActionMenuGuestControlFileManagerCopyToHost(this);
 
-    m_pool[UIActionIndex_M_GuestControlFileManager_S_Settings] = new UIActionMenuGuestControlFileManagerSettings(this);
+    m_pool[UIActionIndex_M_GuestControlFileManager_T_Settings] = new UIActionMenuGuestControlFileManagerSettings(this);
+    m_pool[UIActionIndex_M_GuestControlFileManager_T_Log] = new UIActionMenuGuestControlFileManagerLog(this);
+    m_pool[UIActionIndex_M_GuestControlFileManager_T_FileOperations] = new UIActionMenuGuestControlFileManagerFileOperations(this);
+    m_pool[UIActionIndex_M_GuestControlFileManager_T_Session] = new UIActionMenuGuestControlFileManagerSession(this);
+
     m_pool[UIActionIndex_M_GuestControlFileManager_S_Host_GoUp] = new UIActionMenuGuestControlFileManagerGoUp(this);
     m_pool[UIActionIndex_M_GuestControlFileManager_S_Guest_GoUp] = new UIActionMenuGuestControlFileManagerGoUp(this);
@@ -2627,5 +2751,5 @@
 void UIActionPool::updateMenuGuestControlFileManagerWrapper(UIMenu *pMenu)
 {
-    addAction(pMenu, action(UIActionIndex_M_GuestControlFileManager_S_Settings));
+    addAction(pMenu, action(UIActionIndex_M_GuestControlFileManager_T_Settings));
     addAction(pMenu, action(UIActionIndex_M_GuestControlFileManager_M_HostSubmenu));
     addAction(pMenu, action(UIActionIndex_M_GuestControlFileManager_M_GuestSubmenu));
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.h	(revision 75219)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.h	(revision 75220)
@@ -104,5 +104,8 @@
     UIActionIndex_M_GuestControlFileManager_S_CopyToGuest,
     UIActionIndex_M_GuestControlFileManager_S_CopyToHost,
-    UIActionIndex_M_GuestControlFileManager_S_Settings,
+    UIActionIndex_M_GuestControlFileManager_T_Settings,
+    UIActionIndex_M_GuestControlFileManager_T_Log,
+    UIActionIndex_M_GuestControlFileManager_T_FileOperations,
+    UIActionIndex_M_GuestControlFileManager_T_Session,
     UIActionIndex_M_GuestControlFileManager_S_Host_GoUp,
     UIActionIndex_M_GuestControlFileManager_S_Guest_GoUp,
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManager.cpp	(revision 75219)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManager.cpp	(revision 75220)
@@ -27,5 +27,4 @@
 # include <QTextEdit>
 # include <QPushButton>
-# include <QSplitter>
 # include <QGridLayout>
 
@@ -42,4 +41,7 @@
 # include "UIGuestControlConsole.h"
 # include "UIGuestControlFileManager.h"
+# include "UIGuestControlFileManagerSessionPanel.h"
+# include "UIGuestControlFileManagerSettingsPanel.h"
+# include "UIGuestControlFileManagerLogPanel.h"
 # include "UIGuestFileTable.h"
 # include "UIGuestControlInterface.h"
@@ -58,25 +60,5 @@
 #endif /* !VBOX_WITH_PRECOMPILED_HEADERS */
 
-/*********************************************************************************************************************************
-*   UIFileManagerLogViewer definition.                                                                                   *
-*********************************************************************************************************************************/
-
-class UIFileManagerLogViewer : public QTextEdit
-{
-
-    Q_OBJECT;
-
-public:
-
-    UIFileManagerLogViewer(QWidget *pParent = 0);
-
-protected:
-
-    virtual void contextMenuEvent(QContextMenuEvent * event) /* override */;
-
-private slots:
-
-    void sltClear();
-};
+
 
 /*********************************************************************************************************************************
@@ -94,69 +76,4 @@
 };
 
-/*********************************************************************************************************************************
-*   UIGuestSessionCreateWidget definition.                                                                                   *
-*********************************************************************************************************************************/
-
-class UIGuestSessionCreateWidget : public QIWithRetranslateUI<QWidget>
-{
-    Q_OBJECT;
-
-signals:
-
-    void sigCreateSession(QString strUserName, QString strPassword);
-    void sigCloseButtonClick();
-
-public:
-
-    UIGuestSessionCreateWidget(QWidget *pParent = 0);
-    void switchSessionCreateMode();
-    void switchSessionCloseMode();
-
-protected:
-
-    void retranslateUi();
-    void keyPressEvent(QKeyEvent * pEvent);
-
-private slots:
-
-    void sltCreateButtonClick();
-    void sltShowHidePassword(bool flag);
-
-private:
-    void         prepareWidgets();
-    QILineEdit   *m_pUserNameEdit;
-    QILineEdit   *m_pPasswordEdit;
-    QPushButton  *m_pCreateButton;
-    QPushButton  *m_pCloseButton;
-    QHBoxLayout  *m_pMainLayout;
-    QCheckBox    *m_pShowPasswordCheckBox;
-
-};
-
-/*********************************************************************************************************************************
-*   UIFileManagerLogViewer implementation.                                                                                   *
-*********************************************************************************************************************************/
-
-UIFileManagerLogViewer::UIFileManagerLogViewer(QWidget *pParent /* = 0 */)
-    :QTextEdit(pParent)
-{
-}
-
-void UIFileManagerLogViewer::contextMenuEvent(QContextMenuEvent *event)
-{
-    QMenu *menu = createStandardContextMenu();
-    void sltClear();
-
-    QAction *pClearAction = menu->addAction(tr("Clear"));
-    connect(pClearAction, &QAction::triggered, this, &UIFileManagerLogViewer::sltClear);
-    menu->exec(event->globalPos());
-    delete menu;
-}
-
-void UIFileManagerLogViewer::sltClear()
-{
-    clear();
-}
-
 
 /*********************************************************************************************************************************
@@ -168,4 +85,6 @@
 UIGuestControlFileManagerSettings* UIGuestControlFileManagerSettings::instance()
 {
+    if (!m_pInstance)
+    m_pInstance = new UIGuestControlFileManagerSettings;
     return m_pInstance;
 }
@@ -205,161 +124,24 @@
 
 /*********************************************************************************************************************************
-*   UIGuestSessionCreateWidget implementation.                                                                                   *
-*********************************************************************************************************************************/
-
-UIGuestSessionCreateWidget::UIGuestSessionCreateWidget(QWidget *pParent /* = 0 */)
-    : QIWithRetranslateUI<QWidget>(pParent)
-    , m_pUserNameEdit(0)
-    , m_pPasswordEdit(0)
-    , m_pCreateButton(0)
-    , m_pCloseButton(0)
-    , m_pMainLayout(0)
-    , m_pShowPasswordCheckBox(0)
-{
-    prepareWidgets();
-}
-
-void UIGuestSessionCreateWidget::prepareWidgets()
-{
-    m_pMainLayout = new QHBoxLayout(this);
-    if (!m_pMainLayout)
-        return;
-
-    m_pUserNameEdit = new QILineEdit;
-    if (m_pUserNameEdit)
-    {
-        m_pMainLayout->addWidget(m_pUserNameEdit, 2);
-        m_pUserNameEdit->setPlaceholderText("User Name");
-    }
-
-    m_pPasswordEdit = new QILineEdit;
-    if (m_pPasswordEdit)
-    {
-        m_pMainLayout->addWidget(m_pPasswordEdit, 2);
-        m_pPasswordEdit->setPlaceholderText("Password");
-        m_pPasswordEdit->setEchoMode(QLineEdit::Password);
-    }
-
-    m_pShowPasswordCheckBox = new QCheckBox;
-    if (m_pShowPasswordCheckBox)
-    {
-        m_pShowPasswordCheckBox->setText("Show Password");
-        m_pMainLayout->addWidget(m_pShowPasswordCheckBox);
-        connect(m_pShowPasswordCheckBox, &QCheckBox::toggled,
-                this, &UIGuestSessionCreateWidget::sltShowHidePassword);
-    }
-
-    m_pCreateButton = new QPushButton;
-    if (m_pCreateButton)
-    {
-        m_pMainLayout->addWidget(m_pCreateButton);
-        connect(m_pCreateButton, &QPushButton::clicked, this, &UIGuestSessionCreateWidget::sltCreateButtonClick);
-    }
-
-    m_pCloseButton = new QPushButton;
-    if (m_pCloseButton)
-    {
-        m_pMainLayout->addWidget(m_pCloseButton);
-        connect(m_pCloseButton, &QPushButton::clicked, this, &UIGuestSessionCreateWidget::sigCloseButtonClick);
-    }
-    m_pMainLayout->insertStretch(-1, 1);
-    retranslateUi();
-}
-
-void UIGuestSessionCreateWidget::sltCreateButtonClick()
-{
-    if (m_pUserNameEdit && m_pPasswordEdit)
-        emit sigCreateSession(m_pUserNameEdit->text(), m_pPasswordEdit->text());
-}
-
-void UIGuestSessionCreateWidget::sltShowHidePassword(bool flag)
-{
-    if (!m_pPasswordEdit)
-        return;
-    if (flag)
-        m_pPasswordEdit->setEchoMode(QLineEdit::Normal);
-    else
-        m_pPasswordEdit->setEchoMode(QLineEdit::Password);
-}
-
-void UIGuestSessionCreateWidget::retranslateUi()
-{
-    if (m_pUserNameEdit)
-    {
-        m_pUserNameEdit->setToolTip(QApplication::translate("UIGuestProcessControlWidget", "User name to authenticate session creation"));
-        m_pUserNameEdit->setPlaceholderText(QApplication::translate("UIGuestProcessControlWidget", "User Name"));
-
-    }
-    if (m_pPasswordEdit)
-    {
-        m_pPasswordEdit->setToolTip(QApplication::translate("UIGuestProcessControlWidget", "Password to authenticate session creation"));
-        m_pPasswordEdit->setPlaceholderText(QApplication::translate("UIGuestProcessControlWidget", "Password"));
-    }
-
-    if (m_pCreateButton)
-        m_pCreateButton->setText(QApplication::translate("UIGuestProcessControlWidget", "Create Session"));
-    if (m_pCloseButton)
-        m_pCloseButton->setText(QApplication::translate("UIGuestProcessControlWidget", "Close Session"));
-}
-
-void UIGuestSessionCreateWidget::keyPressEvent(QKeyEvent * pEvent)
-{
-    /* Emit sigCreateSession upon enter press: */
-    if (pEvent->key() == Qt::Key_Enter || pEvent->key() == Qt::Key_Return)
-    {
-        if ((m_pUserNameEdit && m_pUserNameEdit->hasFocus()) ||
-            (m_pPasswordEdit && m_pPasswordEdit->hasFocus()))
-            sigCreateSession(m_pUserNameEdit->text(), m_pPasswordEdit->text());
-    }
-    QWidget::keyPressEvent(pEvent);
-}
-
-void UIGuestSessionCreateWidget::switchSessionCreateMode()
-{
-    if (m_pUserNameEdit)
-        m_pUserNameEdit->setEnabled(true);
-    if (m_pPasswordEdit)
-        m_pPasswordEdit->setEnabled(true);
-    if (m_pCreateButton)
-        m_pCreateButton->setEnabled(true);
-    if (m_pCloseButton)
-        m_pCloseButton->setEnabled(false);
-}
-
-void UIGuestSessionCreateWidget::switchSessionCloseMode()
-{
-    if (m_pUserNameEdit)
-        m_pUserNameEdit->setEnabled(false);
-    if (m_pPasswordEdit)
-        m_pPasswordEdit->setEnabled(false);
-    if (m_pCreateButton)
-        m_pCreateButton->setEnabled(false);
-    if (m_pCloseButton)
-        m_pCloseButton->setEnabled(true);
-}
-
-
-/*********************************************************************************************************************************
 *   UIGuestControlFileManager implementation.                                                                                    *
 *********************************************************************************************************************************/
 
 UIGuestControlFileManager::UIGuestControlFileManager(EmbedTo enmEmbedding, UIActionPool *pActionPool,
-                                                     const CGuest &comGuest, QWidget *pParent)
+                                                     const CGuest &comGuest, QWidget *pParent, bool fShowToolbar /* = true */)
     : QIWithRetranslateUI<QWidget>(pParent)
     , m_iMaxRecursionDepth(1)
     , m_comGuest(comGuest)
     , m_pMainLayout(0)
-    , m_pVerticalSplitter(0)
-    , m_pLogOutput(0)
     , m_pToolBar(0)
     , m_pFileTableContainerWidget(0)
     , m_pFileTableContainerLayout(0)
-    , m_pTabWidget(0)
-    , m_pFileOperationsList(0)
-    , m_pSessionCreateWidget(0)
     , m_pGuestFileTable(0)
     , m_pHostFileTable(0)
     , m_enmEmbedding(enmEmbedding)
     , m_pActionPool(pActionPool)
+    , m_fShowToolbar(fShowToolbar)
+    , m_pSettingsPanel(0)
+    , m_pLogPanel(0)
+    , m_pSessionPanel(0)
 {
     prepareGuestListener();
@@ -390,7 +172,4 @@
 void UIGuestControlFileManager::retranslateUi()
 {
-    m_pTabWidget->setTabText(0, QApplication::translate("UIGuestProcessControlWidget", "Log"));
-    m_pTabWidget->setTabText(1, QApplication::translate("UIGuestProcessControlWidget", "File Operations"));
-    m_pTabWidget->setTabText(2, QApplication::translate("UIGuestProcessControlWidget", "Terminal"));
 }
 
@@ -417,17 +196,12 @@
     m_pMainLayout->setSpacing(0);
 
-    m_pSessionCreateWidget = new UIGuestSessionCreateWidget();
-    if (m_pSessionCreateWidget)
-    {
-        m_pMainLayout->addWidget(m_pSessionCreateWidget);
-    }
-
-    m_pVerticalSplitter = new QSplitter;
-    if (m_pVerticalSplitter)
-    {
-        m_pMainLayout->addWidget(m_pVerticalSplitter);
-        m_pVerticalSplitter->setOrientation(Qt::Vertical);
-        m_pVerticalSplitter->setHandleWidth(4);
-    }
+    if (m_fShowToolbar)
+        prepareToolBar();
+
+    // m_pSessionCreateWidget = new UIGuestSessionCreateWidget();
+    // if (m_pSessionCreateWidget)
+    // {
+    //     m_pMainLayout->addWidget(m_pSessionCreateWidget);
+    // }
 
     m_pFileTableContainerWidget = new QWidget;
@@ -451,5 +225,5 @@
                 m_pFileTableContainerLayout->addWidget(m_pHostFileTable);
             }
-            prepareToolBar();
+            prepareVerticalToolBar();
              if (m_pGuestFileTable)
             {
@@ -460,33 +234,52 @@
 
         }
-        m_pVerticalSplitter->addWidget(m_pFileTableContainerWidget);
-    }
-
-    m_pTabWidget = new QITabWidget;
-    if (m_pTabWidget)
-    {
-        m_pVerticalSplitter->addWidget(m_pTabWidget);
-        m_pTabWidget->setTabPosition(QTabWidget::South);
-    }
-
-    m_pLogOutput = new UIFileManagerLogViewer;
-    if (m_pLogOutput)
-    {
-        m_pTabWidget->addTab(m_pLogOutput, "Log");
-        m_pLogOutput->setReadOnly(true);
-    }
-
-    m_pFileOperationsList = new UIFileOperationsList;
-    if (m_pFileOperationsList)
-    {
-        m_pTabWidget->addTab(m_pFileOperationsList, "File Operatiions");
-        m_pFileOperationsList->header()->hide();
-    }
-
-    m_pVerticalSplitter->setStretchFactor(0, 3);
-    m_pVerticalSplitter->setStretchFactor(1, 1);
-}
-
-void UIGuestControlFileManager::prepareToolBar()
+        m_pMainLayout->addWidget(m_pFileTableContainerWidget);
+    }
+
+    // m_pFileOperationsList = new UIFileOperationsList;
+    // if (m_pFileOperationsList)
+    // {
+    //     m_pTabWidget->addTab(m_pFileOperationsList, "File Operatiions");
+    //     m_pFileOperationsList->header()->hide();
+    // }
+
+    /* Create the settings-panel: */
+    m_pLogPanel = new UIGuestControlFileManagerLogPanel(this /* manager dialog */, 0 /*parent */);
+    if (m_pLogPanel)
+    {
+        /* Configure panel: */
+        m_pLogPanel->hide();
+        m_panelActionMap.insert(m_pLogPanel, m_pActionPool->action(UIActionIndex_M_GuestControlFileManager_T_Log));
+        /* Add into layout: */
+        m_pMainLayout->addWidget(m_pLogPanel);
+    }
+    m_pSessionPanel = new UIGuestControlFileManagerSessionPanel(this /* manager dialog */, 0 /*parent */);
+    if (m_pSessionPanel)
+    {
+        /* Configure panel: */
+        m_pSessionPanel->hide();
+        m_panelActionMap.insert(m_pSessionPanel, m_pActionPool->action(UIActionIndex_M_GuestControlFileManager_T_Session));
+        /* Add into layout: */
+        m_pMainLayout->addWidget(m_pSessionPanel);
+    }
+
+    /* Create the settings-panel: */
+    m_pSettingsPanel =
+        new UIGuestControlFileManagerSettingsPanel(this /* manager dialog */,
+                                                   0 /*parent */, UIGuestControlFileManagerSettings::instance());
+    if (m_pSettingsPanel)
+    {
+        /* Configure panel: */
+        m_pSettingsPanel->hide();
+        m_panelActionMap.insert(m_pSettingsPanel, m_pActionPool->action(UIActionIndex_M_GuestControlFileManager_T_Settings));
+        connect(m_pSettingsPanel, &UIGuestControlFileManagerSettingsPanel::sigListDirectoriesFirstChanged,
+                this, &UIGuestControlFileManager::sltListDirectoriesBeforeChanged);
+        /* Add into layout: */
+        m_pMainLayout->addWidget(m_pSettingsPanel);
+    }
+
+}
+
+void UIGuestControlFileManager::prepareVerticalToolBar()
 {
     m_pToolBar = new UIToolBar;
@@ -525,12 +318,50 @@
                 this, &UIGuestControlFileManager::sltGuestSessionUnregistered);
     }
-    if (m_pSessionCreateWidget)
-    {
-        connect(m_pSessionCreateWidget, &UIGuestSessionCreateWidget::sigCreateSession,
+    if (m_pSessionPanel)
+    {
+        connect(m_pSessionPanel, &UIGuestControlFileManagerSessionPanel::sigCreateSession,
                 this, &UIGuestControlFileManager::sltCreateSession);
-        connect(m_pSessionCreateWidget, &UIGuestSessionCreateWidget::sigCloseButtonClick,
+        connect(m_pSessionPanel, &UIGuestControlFileManagerSessionPanel::sigCloseSession,
                 this, &UIGuestControlFileManager::sltCloseSession);
     }
 }
+
+void UIGuestControlFileManager::prepareToolBar()
+{
+    /* Create toolbar: */
+    m_pToolBar = new UIToolBar(parentWidget());
+    if (m_pToolBar)
+    {
+        /* Configure toolbar: */
+        const int iIconMetric = (int)(QApplication::style()->pixelMetric(QStyle::PM_LargeIconSize));
+        m_pToolBar->setIconSize(QSize(iIconMetric, iIconMetric));
+        m_pToolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
+
+        m_pToolBar->addAction(m_pActionPool->action(UIActionIndex_M_GuestControlFileManager_T_Session));
+        m_pToolBar->addAction(m_pActionPool->action(UIActionIndex_M_GuestControlFileManager_T_Settings));
+        m_pToolBar->addAction(m_pActionPool->action(UIActionIndex_M_GuestControlFileManager_T_Log));
+        m_pToolBar->addAction(m_pActionPool->action(UIActionIndex_M_GuestControlFileManager_T_FileOperations));
+
+        connect(m_pActionPool->action(UIActionIndex_M_GuestControlFileManager_T_Settings), &QAction::toggled,
+                this, &UIGuestControlFileManager::sltPanelActionToggled);
+        connect(m_pActionPool->action(UIActionIndex_M_GuestControlFileManager_T_Log), &QAction::toggled,
+                this, &UIGuestControlFileManager::sltPanelActionToggled);
+        connect(m_pActionPool->action(UIActionIndex_M_GuestControlFileManager_T_Session), &QAction::toggled,
+                this, &UIGuestControlFileManager::sltPanelActionToggled);
+
+#ifdef VBOX_WS_MAC
+        /* Check whether we are embedded into a stack: */
+        if (m_enmEmbedding == EmbedTo_Stack)
+        {
+            /* Add into layout: */
+            m_pMainLayout->addWidget(m_pToolBar);
+        }
+#else
+        /* Add into layout: */
+        m_pMainLayout->addWidget(m_pToolBar);
+#endif
+    }
+}
+
 
 void UIGuestControlFileManager::sltGuestSessionUnregistered(CGuestSession guestSession)
@@ -549,15 +380,11 @@
     if (!UIGuestControlInterface::isGuestAdditionsAvailable(m_comGuest))
     {
-        if (m_pLogOutput)
-        {
-            m_pLogOutput->append("Could not find Guest Additions");
-            postSessionClosed();
-            return;
-        }
+        appendLog("Could not find Guest Additions");
+        postSessionClosed();
+        return;
     }
     if (strUserName.isEmpty())
     {
-        if (m_pLogOutput)
-            m_pLogOutput->append("No user name is given");
+        appendLog("No user name is given");
         return;
     }
@@ -569,5 +396,5 @@
     if (!m_comGuestSession.isOk())
     {
-        m_pLogOutput->append("Guest session is not valid");
+        appendLog("Guest session is not valid");
         postSessionClosed();
         return;
@@ -580,5 +407,5 @@
 
     m_comGuestSession.Close();
-    m_pLogOutput->append("Guest session is closed");
+    appendLog("Guest session is closed");
     postSessionClosed();
 }
@@ -590,7 +417,5 @@
         CVirtualBoxErrorInfo cErrorInfo = cEvent.GetError();
         if (cErrorInfo.isOk())
-        {
-            m_pLogOutput->append(cErrorInfo.GetText());
-        }
+            appendLog(cErrorInfo.GetText());
     }
     if (m_comGuestSession.GetStatus() == KGuestSessionStatus_Started)
@@ -601,5 +426,5 @@
     else
     {
-        m_pLogOutput->append("Session status has changed");
+        appendLog("Session status has changed");
     }
 }
@@ -607,6 +432,5 @@
 void UIGuestControlFileManager::sltReceieveLogOutput(QString strOutput)
 {
-    if (m_pLogOutput)
-        m_pLogOutput->append(strOutput);
+    appendLog(strOutput);
 }
 
@@ -629,4 +453,33 @@
 }
 
+void UIGuestControlFileManager::sltPanelActionToggled(bool fChecked)
+{
+    QAction *pSenderAction = qobject_cast<QAction*>(sender());
+    if (!pSenderAction)
+        return;
+    UIGuestControlFileManagerPanel* pPanel = 0;
+    /* Look for the sender() within the m_panelActionMap's values: */
+    for (QMap<UIGuestControlFileManagerPanel*, QAction*>::const_iterator iterator = m_panelActionMap.begin();
+        iterator != m_panelActionMap.end(); ++iterator)
+    {
+        if (iterator.value() == pSenderAction)
+            pPanel = iterator.key();
+    }
+    if (!pPanel)
+        return;
+    if (fChecked)
+        showPanel(pPanel);
+    else
+        hidePanel(pPanel);
+}
+
+void UIGuestControlFileManager::sltListDirectoriesBeforeChanged()
+{
+    if (m_pGuestFileTable)
+        m_pGuestFileTable->relist();
+    if (m_pHostFileTable)
+        m_pHostFileTable->relist();
+}
+
 void UIGuestControlFileManager::initFileTable()
 {
@@ -640,6 +493,6 @@
 void UIGuestControlFileManager::postSessionCreated()
 {
-    if (m_pSessionCreateWidget)
-        m_pSessionCreateWidget->switchSessionCloseMode();
+    if (m_pSessionPanel)
+        m_pSessionPanel->switchSessionCloseMode();
     if (m_pGuestFileTable)
         m_pGuestFileTable->setEnabled(true);
@@ -650,6 +503,6 @@
 void UIGuestControlFileManager::postSessionClosed()
 {
-    if (m_pSessionCreateWidget)
-        m_pSessionCreateWidget->switchSessionCreateMode();
+    if (m_pSessionPanel)
+        m_pSessionPanel->switchSessionCreateMode();
     if (m_pGuestFileTable)
         m_pGuestFileTable->setEnabled(false);
@@ -670,11 +523,10 @@
     if (!m_comGuestSession.isOk())
     {
-        m_pLogOutput->append(UIErrorString::formatErrorInfo(m_comGuestSession));
+        appendLog(UIErrorString::formatErrorInfo(m_comGuestSession));
         return false;
     }
-
-    m_pLogOutput->append("Guest session has been created");
-    if (m_pSessionCreateWidget)
-        m_pSessionCreateWidget->switchSessionCloseMode();
+    appendLog("Guest session has been created");
+    if (m_pSessionPanel)
+        m_pSessionPanel->switchSessionCloseMode();
 
     /* Prepare session listener */
@@ -693,10 +545,10 @@
      /* Wait session to start. For some reason we cannot get GuestSessionStatusChanged event
         consistently. So we wait: */
-    m_pLogOutput->append("Waiting the session to start");
+    appendLog("Waiting the session to start");
     const ULONG waitTimeout = 2000;
     KGuestSessionWaitResult waitResult = m_comGuestSession.WaitFor(KGuestSessionWaitForFlag_Start, waitTimeout);
     if (waitResult != KGuestSessionWaitResult_Start)
     {
-        m_pLogOutput->append("The session did not start");
+        appendLog("The session did not start");
         sltCloseSession();
         return false;
@@ -763,18 +615,62 @@
 void UIGuestControlFileManager::saveSettings()
 {
-    if (!m_pVerticalSplitter)
-        return;
-    gEDataManager->setGuestControlFileManagerSplitterHints(m_pVerticalSplitter->sizes());
 }
 
 void UIGuestControlFileManager::loadSettings()
 {
-    if (!m_pVerticalSplitter)
-        return;
-    QList<int> splitterHints = gEDataManager->guestControlFileManagerSplitterHints();
-    if (splitterHints.size() != 2)
-        return;
-    if (splitterHints[0] != 0 && splitterHints[1] != 0)
-        m_pVerticalSplitter->setSizes(splitterHints);
+}
+
+void UIGuestControlFileManager::hidePanel(UIGuestControlFileManagerPanel* panel)
+{
+    if (panel && panel->isVisible())
+        panel->setVisible(false);
+    QMap<UIGuestControlFileManagerPanel*, QAction*>::iterator iterator = m_panelActionMap.find(panel);
+    if (iterator != m_panelActionMap.end())
+    {
+        if (iterator.value() && iterator.value()->isChecked())
+            iterator.value()->setChecked(false);
+    }
+    m_visiblePanelsList.removeOne(panel);
+    manageEscapeShortCut();
+}
+
+void UIGuestControlFileManager::showPanel(UIGuestControlFileManagerPanel* panel)
+{
+    if (panel && panel->isHidden())
+        panel->setVisible(true);
+    QMap<UIGuestControlFileManagerPanel*, QAction*>::iterator iterator = m_panelActionMap.find(panel);
+    if (iterator != m_panelActionMap.end())
+    {
+        if (!iterator.value()->isChecked())
+            iterator.value()->setChecked(true);
+    }
+    m_visiblePanelsList.push_back(panel);
+    manageEscapeShortCut();
+}
+
+void UIGuestControlFileManager::manageEscapeShortCut()
+{
+    /* if there is no visible panels give the escape shortcut to parent dialog: */
+    if (m_visiblePanelsList.isEmpty())
+    {
+        emit sigSetCloseButtonShortCut(QKeySequence(Qt::Key_Escape));
+        return;
+    }
+    /* Take the escape shortcut from the dialog: */
+    emit sigSetCloseButtonShortCut(QKeySequence());
+    /* Just loop thru the visible panel list and set the esc key to the
+       panel which made visible latest */
+    for (int i = 0; i < m_visiblePanelsList.size() - 1; ++i)
+    {
+        m_visiblePanelsList[i]->setCloseButtonShortCut(QKeySequence());
+    }
+    m_visiblePanelsList.back()->setCloseButtonShortCut(QKeySequence(Qt::Key_Escape));
+}
+
+void UIGuestControlFileManager::appendLog(const QString &strLog)
+{
+    if (!m_pLogPanel)
+        return;
+    m_pLogPanel->appendLog(strLog);
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManager.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManager.h	(revision 75219)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManager.h	(revision 75220)
@@ -38,5 +38,4 @@
 class QTextEdit;
 class QVBoxLayout;
-class QSplitter;
 class QITabWidget;
 class CGuestSessionStateChangedEvent;
@@ -45,4 +44,8 @@
 class UIGuestControlConsole;
 class UIGuestControlInterface;
+class UIGuestControlFileManagerPanel;
+class UIGuestControlFileManagerSessionPanel;
+class UIGuestControlFileManagerLogPanel;
+class UIGuestControlFileManagerSettingsPanel;
 class UIGuestFileTable;
 class UIHostFileTable;
@@ -50,7 +53,10 @@
 class UIToolBar;
 
+/** A Utility class to manage file  manager settings. */
 class UIGuestControlFileManagerSettings
 {
+
 public:
+
     static UIGuestControlFileManagerSettings* instance();
     static void create();
@@ -59,4 +65,5 @@
     bool bListDirectoriesOnTop;
     bool bAskDeleteConfirmation;
+
 private:
     UIGuestControlFileManagerSettings();
@@ -76,8 +83,11 @@
 
     UIGuestControlFileManager(EmbedTo enmEmbedding, UIActionPool *pActionPool,
-                              const CGuest &comGuest, QWidget *pParent);
+                              const CGuest &comGuest, QWidget *pParent, bool fShowToolbar = true);
     ~UIGuestControlFileManager();
     QMenu *menu() const;
-    //const UIGuestControlFileManagerSettings& settings() const;
+
+signals:
+
+    void sigSetCloseButtonShortCut(QKeySequence);
 
 protected:
@@ -94,4 +104,6 @@
     void sltCopyGuestToHost();
     void sltCopyHostToGuest();
+    void sltPanelActionToggled(bool fChecked);
+    void sltListDirectoriesBeforeChanged();
 
 private:
@@ -100,4 +112,5 @@
     void prepareGuestListener();
     void prepareConnections();
+    void prepareVerticalToolBar();
     void prepareToolBar();
     bool createSession(const QString& strUserName, const QString& strPassword,
@@ -117,25 +130,32 @@
     void saveSettings();
     void loadSettings();
+    void hidePanel(UIGuestControlFileManagerPanel *panel);
+    void showPanel(UIGuestControlFileManagerPanel *panel);
+    /** Make sure escape key is assigned to only a single widget. This is done by checking
+        several things in the following order:
+        - when there are no more panels visible assign it to the parent dialog
+        - grab it from the dialog as soon as a panel becomes visible again
+        - assigned it to the most recently "unhidden" panel */
+    void manageEscapeShortCut();
+
 
     template<typename T>
     QStringList       getFsObjInfoStringList(const T &fsObjectInfo) const;
-
+    void              appendLog(const QString &strLog);
     const int                   m_iMaxRecursionDepth;
     CGuest                      m_comGuest;
     CGuestSession               m_comGuestSession;
     QVBoxLayout                *m_pMainLayout;
-    QSplitter                  *m_pVerticalSplitter;
-    QTextEdit                  *m_pLogOutput;
+
     UIToolBar                  *m_pToolBar;
     QWidget                    *m_pFileTableContainerWidget;
     QHBoxLayout                *m_pFileTableContainerLayout;
-    QITabWidget                *m_pTabWidget;
 
-    UIFileOperationsList       *m_pFileOperationsList;
+    //UIFileOperationsList       *m_pFileOperationsList;
     UIGuestControlConsole      *m_pConsole;
     UIGuestControlInterface    *m_pControlInterface;
-    /* m_pSessionCreateWidget is a QWidget extension enabling user to start/stop
-     * a Guest Control session with password/username fields etc.. */
-    UIGuestSessionCreateWidget *m_pSessionCreateWidget;
+    // /* m_pSessionCreateWidget is a QWidget extension enabling user to start/stop
+    //  * a Guest Control session with password/username fields etc.. */
+    // UIGuestSessionCreateWidget *m_pSessionCreateWidget;
     UIGuestFileTable           *m_pGuestFileTable;
     UIHostFileTable            *m_pHostFileTable;
@@ -147,6 +167,12 @@
     const EmbedTo  m_enmEmbedding;
     UIActionPool  *m_pActionPool;
-
-    //UIGuestControlFileManagerSettings m_settings;
+    const bool     m_fShowToolbar;
+    QMap<UIGuestControlFileManagerPanel*, QAction*> m_panelActionMap;
+    QList<UIGuestControlFileManagerPanel*>          m_visiblePanelsList;
+    UIGuestControlFileManagerSettingsPanel         *m_pSettingsPanel;
+    UIGuestControlFileManagerLogPanel              *m_pLogPanel;
+    UIGuestControlFileManagerSessionPanel          *m_pSessionPanel;
+    friend class UIGuestControlFileManagerSettingsPanel;
+    friend class UIGuestControlFileManagerPanel;
 };
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerLogPanel.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerLogPanel.cpp	(revision 75220)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerLogPanel.cpp	(revision 75220)
@@ -0,0 +1,125 @@
+/* $Id$ */
+/** @file
+ * VBox Qt GUI - UIVMLogViewer class implementation.
+ */
+
+/*
+ * Copyright (C) 2010-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 <QHBoxLayout>
+# include <QMenu>
+# include <QSpinBox>
+# include <QTextEdit>
+
+/* GUI includes: */
+# include "QIToolButton.h"
+# include "UIIconPool.h"
+# include "UIGuestControlFileManager.h"
+# include "UIGuestControlFileManagerLogPanel.h"
+
+#endif /* !VBOX_WITH_PRECOMPILED_HEADERS */
+
+
+/*********************************************************************************************************************************
+*   UIFileManagerLogViewer definition.                                                                                   *
+*********************************************************************************************************************************/
+
+class UIFileManagerLogViewer : public QTextEdit
+{
+
+    Q_OBJECT;
+
+public:
+
+    UIFileManagerLogViewer(QWidget *pParent = 0);
+
+protected:
+
+    virtual void contextMenuEvent(QContextMenuEvent * event) /* override */;
+
+private slots:
+
+    void sltClear();
+};
+
+/*********************************************************************************************************************************
+*   UIFileManagerLogViewer implementation.                                                                                   *
+*********************************************************************************************************************************/
+
+UIFileManagerLogViewer::UIFileManagerLogViewer(QWidget *pParent /* = 0 */)
+    :QTextEdit(pParent)
+{
+}
+
+void UIFileManagerLogViewer::contextMenuEvent(QContextMenuEvent *event)
+{
+    QMenu *menu = createStandardContextMenu();
+    void sltClear();
+
+    QAction *pClearAction = menu->addAction(tr("Clear"));
+    connect(pClearAction, &QAction::triggered, this, &UIFileManagerLogViewer::sltClear);
+    menu->exec(event->globalPos());
+    delete menu;
+}
+
+void UIFileManagerLogViewer::sltClear()
+{
+    clear();
+}
+
+
+/*********************************************************************************************************************************
+*   UIGuestControlFileManagerLogPanel implementation.                                                                            *
+*********************************************************************************************************************************/
+
+UIGuestControlFileManagerLogPanel::UIGuestControlFileManagerLogPanel(UIGuestControlFileManager *pManagerWidget, QWidget *pParent)
+    : UIGuestControlFileManagerPanel(pManagerWidget, pParent)
+    , m_pLogTextEdit(0)
+{
+    prepare();
+}
+
+void UIGuestControlFileManagerLogPanel::prepareWidgets()
+{
+    if (!mainLayout())
+        return;
+    m_pLogTextEdit = new UIFileManagerLogViewer;
+    if (m_pLogTextEdit)
+    {
+        mainLayout()->addWidget(m_pLogTextEdit);
+    }
+
+}
+
+void UIGuestControlFileManagerLogPanel::prepareConnections()
+{
+}
+
+void UIGuestControlFileManagerLogPanel::retranslateUi()
+{
+    UIGuestControlFileManagerPanel::retranslateUi();
+
+}
+
+void UIGuestControlFileManagerLogPanel::appendLog(const QString &strLog)
+{
+    if (!m_pLogTextEdit)
+        return;
+    m_pLogTextEdit->append(strLog);
+}
+
+#include "UIGuestControlFileManagerLogPanel.moc"
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerLogPanel.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerLogPanel.h	(revision 75220)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerLogPanel.h	(revision 75220)
@@ -0,0 +1,63 @@
+/* $Id$ */
+/** @file
+ * VBox Qt GUI - UIVMLogViewer class declaration.
+ */
+
+/*
+ * Copyright (C) 2010-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 ___UIGuestControlFileManagerLogPanel_h___
+#define ___UIGuestControlFileManagerLogPanel_h___
+
+/* GUI includes: */
+#include "UIGuestControlFileManagerPanel.h"
+
+/* Forward declarations: */
+class QTextEdit;
+class UIGuestControlFileManager;
+
+/** UIVMLogViewerPanel extension providing GUI to manage logviewer settings. */
+class UIGuestControlFileManagerLogPanel : public UIGuestControlFileManagerPanel
+{
+    Q_OBJECT;
+
+public:
+
+    UIGuestControlFileManagerLogPanel(UIGuestControlFileManager *pManagerWidget, QWidget *pParent);
+
+    void appendLog(const QString &str);
+
+signals:
+
+    void sigShowLineNumbers(bool show);
+    void sigWrapLines(bool show);
+    void sigChangeFontSizeInPoints(int size);
+    void sigChangeFont(QFont font);
+    void sigResetToDefaults();
+
+protected:
+
+    virtual void prepareWidgets() /* override */;
+    virtual void prepareConnections() /* override */;
+
+    /** Handles the translation event. */
+    void retranslateUi();
+
+private slots:
+
+
+private:
+
+    QTextEdit *m_pLogTextEdit;
+};
+
+#endif /* !___UIGuestControlFileManagerLogPanel_h___ */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerPanel.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerPanel.cpp	(revision 75220)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerPanel.cpp	(revision 75220)
@@ -0,0 +1,129 @@
+/* $Id$ */
+/** @file
+ * VBox Qt GUI - UIVMLogViewer class implementation.
+ */
+
+/*
+ * Copyright (C) 2010-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 <QComboBox>
+# include <QHBoxLayout>
+# include <QLabel>
+# include <QPlainTextEdit>
+# include <QTextCursor>
+# include <QToolButton>
+
+/* GUI includes: */
+# include "QIToolButton.h"
+# include "UIIconPool.h"
+# include "UIGuestControlFileManager.h"
+# include "UIGuestControlFileManagerPanel.h"
+# ifdef VBOX_WS_MAC
+#  include "VBoxUtils-darwin.h"
+# endif
+#endif /* !VBOX_WITH_PRECOMPILED_HEADERS */
+
+
+UIGuestControlFileManagerPanel::UIGuestControlFileManagerPanel(UIGuestControlFileManager *pManagerWidget, QWidget *pParent)
+    : QIWithRetranslateUI<QWidget>(pParent)
+    , m_pMainLayout(0)
+    , m_pCloseButton(0)
+    , m_pFileManager(pManagerWidget)
+{
+    prepare();
+}
+
+void UIGuestControlFileManagerPanel::setCloseButtonShortCut(QKeySequence shortCut)
+{
+    if (!m_pCloseButton)
+        return;
+    m_pCloseButton->setShortcut(shortCut);
+}
+
+QHBoxLayout* UIGuestControlFileManagerPanel::mainLayout()
+{
+    return m_pMainLayout;
+}
+
+void UIGuestControlFileManagerPanel::prepare()
+{
+    prepareWidgets();
+    prepareConnections();
+    retranslateUi();
+}
+
+void UIGuestControlFileManagerPanel::prepareWidgets()
+{
+    m_pMainLayout = new QHBoxLayout(this);
+    if (m_pMainLayout)
+    {
+#ifdef VBOX_WS_MAC
+        m_pMainLayout->setContentsMargins(5 /* since there is always a button */, 0, 10 /* standard */, 0);
+        m_pMainLayout->setSpacing(10);
+#else
+        m_pMainLayout->setContentsMargins(qApp->style()->pixelMetric(QStyle::PM_LayoutLeftMargin) / 2, 0,
+                                          qApp->style()->pixelMetric(QStyle::PM_LayoutRightMargin) / 2,
+                                          qApp->style()->pixelMetric(QStyle::PM_LayoutBottomMargin) / 2);
+        m_pMainLayout->setSpacing(qApp->style()->pixelMetric(QStyle::PM_LayoutHorizontalSpacing));
+#endif
+    }
+    m_pCloseButton = new QIToolButton;
+    if (m_pCloseButton)
+    {
+        m_pCloseButton->setIcon(UIIconPool::iconSet(":/close_16px.png"));
+        m_pMainLayout->addWidget(m_pCloseButton, 0, Qt::AlignLeft);
+    }
+}
+
+void UIGuestControlFileManagerPanel::prepareConnections()
+{
+    if (m_pCloseButton)
+        connect(m_pCloseButton, &QIToolButton::clicked, this, &UIGuestControlFileManagerPanel::hide);
+}
+
+void UIGuestControlFileManagerPanel::retranslateUi()
+{
+    if (m_pCloseButton)
+        m_pCloseButton->setToolTip(UIGuestControlFileManager::tr("Close the pane"));
+}
+
+bool UIGuestControlFileManagerPanel::eventFilter(QObject *pObject, QEvent *pEvent)
+{
+    Q_UNUSED(pObject);
+    Q_UNUSED(pEvent);
+    /* Dont consume this event. Pass it back to Qt's event system: */
+    return false;
+}
+
+void UIGuestControlFileManagerPanel::showEvent(QShowEvent *pEvent)
+{
+    QWidget::showEvent(pEvent);
+}
+
+void UIGuestControlFileManagerPanel::hideEvent(QHideEvent *pEvent)
+{
+    /* Get focused widget: */
+    QWidget *pFocus = QApplication::focusWidget();
+    /* If focus-widget is valid and child-widget of search-panel,
+     * focus next child-widget in line: */
+    if (pFocus && pFocus->parent() == this)
+        focusNextPrevChild(true);
+    if (m_pFileManager)
+        m_pFileManager->hidePanel(this);
+
+    QWidget::hideEvent(pEvent);
+}
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerPanel.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerPanel.h	(revision 75220)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerPanel.h	(revision 75220)
@@ -0,0 +1,74 @@
+/* $Id$ */
+/** @file
+ * VBox Qt GUI - UIVMLogViewer class declaration.
+ */
+
+/*
+ * Copyright (C) 2010-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 ___UIGuestControlFileManagerPanel_h___
+#define ___UIGuestControlFileManagerPanel_h___
+
+/* Qt includes: */
+#include <QWidget>
+#include <QKeySequence>
+/* GUI includes: */
+#include "QIWithRetranslateUI.h"
+
+/* Forward declarations: */
+class QHBoxLayout;
+class QPlainTextEdit;
+class QTextDocument;
+class QIToolButton;
+class UIGuestControlFileManager;
+
+/** QWidget extension acting as the base class for UIVMLogViewerXXXPanel widgets. */
+class UIGuestControlFileManagerPanel : public QIWithRetranslateUI<QWidget>
+{
+    Q_OBJECT;
+
+public:
+
+    UIGuestControlFileManagerPanel(UIGuestControlFileManager *pManagerWidget, QWidget *pParent);
+    void setCloseButtonShortCut(QKeySequence shortCut);
+
+protected:
+
+    virtual void prepare();
+    virtual void prepareWidgets();
+    virtual void prepareConnections();
+
+    /* Access functions for children classes. */
+    QHBoxLayout*               mainLayout();
+
+    /** Handles the translation event. */
+    void retranslateUi();
+
+    /** Handles Qt @a pEvent, used for keyboard processing. */
+    bool eventFilter(QObject *pObject, QEvent *pEvent);
+    /** Handles the Qt show @a pEvent. */
+    void showEvent(QShowEvent *pEvent);
+    /** Handles the Qt hide @a pEvent. */
+    void hideEvent(QHideEvent *pEvent);
+
+    /* Return the unmodified log. */
+    const QString* logString() const;
+
+private:
+
+    /** Holds the reference to VM Log-Viewer this panel belongs to. */
+    QHBoxLayout         *m_pMainLayout;
+    QIToolButton        *m_pCloseButton;
+    UIGuestControlFileManager *m_pFileManager;
+};
+
+#endif /* !___UIGuestControlFileManagerPanel!_h___ */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerSessionPanel.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerSessionPanel.cpp	(revision 75220)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerSessionPanel.cpp	(revision 75220)
@@ -0,0 +1,266 @@
+/* $Id$ */
+/** @file
+ * VBox Qt GUI - UIVMLogViewer class implementation.
+ */
+
+/*
+ * Copyright (C) 2010-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 <QCheckBox>
+# include <QHBoxLayout>
+# include <QMenu>
+# include <QPushButton>
+# include <QSpinBox>
+# include <QTextEdit>
+
+/* GUI includes: */
+# include "QILineEdit.h"
+# include "QIToolButton.h"
+# include "UIIconPool.h"
+# include "UIGuestControlFileManager.h"
+# include "UIGuestControlFileManagerSessionPanel.h"
+
+#endif /* !VBOX_WITH_PRECOMPILED_HEADERS */
+
+
+/*********************************************************************************************************************************
+*   UIGuestSessionCreateWidget definition.                                                                                   *
+*********************************************************************************************************************************/
+
+class UIGuestSessionCreateWidget : public QIWithRetranslateUI<QWidget>
+{
+    Q_OBJECT;
+
+signals:
+
+    void sigCreateSession(QString strUserName, QString strPassword);
+    void sigCloseSession();
+
+public:
+
+    UIGuestSessionCreateWidget(QWidget *pParent = 0);
+    void switchSessionCreateMode();
+    void switchSessionCloseMode();
+
+protected:
+
+    void retranslateUi();
+    void keyPressEvent(QKeyEvent * pEvent);
+
+private slots:
+
+    void sltCreateButtonClick();
+    void sltShowHidePassword(bool flag);
+
+private:
+    void         prepareWidgets();
+    QILineEdit   *m_pUserNameEdit;
+    QILineEdit   *m_pPasswordEdit;
+    QPushButton  *m_pCreateButton;
+    QPushButton  *m_pCloseButton;
+    QHBoxLayout  *m_pMainLayout;
+    QCheckBox    *m_pShowPasswordCheckBox;
+
+};
+
+
+/*********************************************************************************************************************************
+*   UIGuestSessionCreateWidget implementation.                                                                                   *
+*********************************************************************************************************************************/
+
+UIGuestSessionCreateWidget::UIGuestSessionCreateWidget(QWidget *pParent /* = 0 */)
+    : QIWithRetranslateUI<QWidget>(pParent)
+    , m_pUserNameEdit(0)
+    , m_pPasswordEdit(0)
+    , m_pCreateButton(0)
+    , m_pCloseButton(0)
+    , m_pMainLayout(0)
+    , m_pShowPasswordCheckBox(0)
+{
+    prepareWidgets();
+}
+
+void UIGuestSessionCreateWidget::prepareWidgets()
+{
+    m_pMainLayout = new QHBoxLayout(this);
+    if (!m_pMainLayout)
+        return;
+
+    m_pUserNameEdit = new QILineEdit;
+    if (m_pUserNameEdit)
+    {
+        m_pMainLayout->addWidget(m_pUserNameEdit, 2);
+        m_pUserNameEdit->setPlaceholderText("User Name");
+    }
+
+    m_pPasswordEdit = new QILineEdit;
+    if (m_pPasswordEdit)
+    {
+        m_pMainLayout->addWidget(m_pPasswordEdit, 2);
+        m_pPasswordEdit->setPlaceholderText("Password");
+        m_pPasswordEdit->setEchoMode(QLineEdit::Password);
+    }
+
+    m_pShowPasswordCheckBox = new QCheckBox;
+    if (m_pShowPasswordCheckBox)
+    {
+        m_pShowPasswordCheckBox->setText("Show Password");
+        m_pMainLayout->addWidget(m_pShowPasswordCheckBox);
+        connect(m_pShowPasswordCheckBox, &QCheckBox::toggled,
+                this, &UIGuestSessionCreateWidget::sltShowHidePassword);
+    }
+
+    m_pCreateButton = new QPushButton;
+    if (m_pCreateButton)
+    {
+        m_pMainLayout->addWidget(m_pCreateButton);
+        connect(m_pCreateButton, &QPushButton::clicked, this, &UIGuestSessionCreateWidget::sltCreateButtonClick);
+    }
+
+    m_pCloseButton = new QPushButton;
+    if (m_pCloseButton)
+    {
+        m_pMainLayout->addWidget(m_pCloseButton);
+        connect(m_pCloseButton, &QPushButton::clicked, this, &UIGuestSessionCreateWidget::sigCloseSession);
+    }
+    m_pMainLayout->insertStretch(-1, 1);
+    retranslateUi();
+}
+
+void UIGuestSessionCreateWidget::sltCreateButtonClick()
+{
+    if (m_pUserNameEdit && m_pPasswordEdit)
+        emit sigCreateSession(m_pUserNameEdit->text(), m_pPasswordEdit->text());
+}
+
+void UIGuestSessionCreateWidget::sltShowHidePassword(bool flag)
+{
+    if (!m_pPasswordEdit)
+        return;
+    if (flag)
+        m_pPasswordEdit->setEchoMode(QLineEdit::Normal);
+    else
+        m_pPasswordEdit->setEchoMode(QLineEdit::Password);
+}
+
+void UIGuestSessionCreateWidget::retranslateUi()
+{
+    if (m_pUserNameEdit)
+    {
+        m_pUserNameEdit->setToolTip(QApplication::translate("UIGuestProcessControlWidget", "User name to authenticate session creation"));
+        m_pUserNameEdit->setPlaceholderText(QApplication::translate("UIGuestProcessControlWidget", "User Name"));
+
+    }
+    if (m_pPasswordEdit)
+    {
+        m_pPasswordEdit->setToolTip(QApplication::translate("UIGuestProcessControlWidget", "Password to authenticate session creation"));
+        m_pPasswordEdit->setPlaceholderText(QApplication::translate("UIGuestProcessControlWidget", "Password"));
+    }
+
+    if (m_pCreateButton)
+        m_pCreateButton->setText(QApplication::translate("UIGuestProcessControlWidget", "Create Session"));
+    if (m_pCloseButton)
+        m_pCloseButton->setText(QApplication::translate("UIGuestProcessControlWidget", "Close Session"));
+}
+
+void UIGuestSessionCreateWidget::keyPressEvent(QKeyEvent * pEvent)
+{
+    /* Emit sigCreateSession upon enter press: */
+    if (pEvent->key() == Qt::Key_Enter || pEvent->key() == Qt::Key_Return)
+    {
+        if ((m_pUserNameEdit && m_pUserNameEdit->hasFocus()) ||
+            (m_pPasswordEdit && m_pPasswordEdit->hasFocus()))
+            sigCreateSession(m_pUserNameEdit->text(), m_pPasswordEdit->text());
+    }
+    QWidget::keyPressEvent(pEvent);
+}
+
+void UIGuestSessionCreateWidget::switchSessionCreateMode()
+{
+    if (m_pUserNameEdit)
+        m_pUserNameEdit->setEnabled(true);
+    if (m_pPasswordEdit)
+        m_pPasswordEdit->setEnabled(true);
+    if (m_pCreateButton)
+        m_pCreateButton->setEnabled(true);
+    if (m_pCloseButton)
+        m_pCloseButton->setEnabled(false);
+}
+
+void UIGuestSessionCreateWidget::switchSessionCloseMode()
+{
+    if (m_pUserNameEdit)
+        m_pUserNameEdit->setEnabled(false);
+    if (m_pPasswordEdit)
+        m_pPasswordEdit->setEnabled(false);
+    if (m_pCreateButton)
+        m_pCreateButton->setEnabled(false);
+    if (m_pCloseButton)
+        m_pCloseButton->setEnabled(true);
+}
+
+
+/*********************************************************************************************************************************
+*   UIGuestControlFileManagerSessionPanel implementation.                                                                        *
+*********************************************************************************************************************************/
+
+UIGuestControlFileManagerSessionPanel::UIGuestControlFileManagerSessionPanel(UIGuestControlFileManager *pManagerWidget, QWidget *pParent)
+    : UIGuestControlFileManagerPanel(pManagerWidget, pParent)
+    , m_pSessionCreateWidget(0)
+{
+    prepare();
+}
+
+void UIGuestControlFileManagerSessionPanel::switchSessionCloseMode()
+{
+    if (m_pSessionCreateWidget)
+        m_pSessionCreateWidget->switchSessionCloseMode();
+}
+
+void UIGuestControlFileManagerSessionPanel::switchSessionCreateMode()
+{
+    if (m_pSessionCreateWidget)
+        m_pSessionCreateWidget->switchSessionCreateMode();
+}
+
+void UIGuestControlFileManagerSessionPanel::prepareWidgets()
+{
+    if (!mainLayout())
+        return;
+    m_pSessionCreateWidget = new UIGuestSessionCreateWidget;
+    if (m_pSessionCreateWidget)
+        mainLayout()->addWidget(m_pSessionCreateWidget);
+}
+
+void UIGuestControlFileManagerSessionPanel::prepareConnections()
+{
+    if (m_pSessionCreateWidget)
+    {
+        connect(m_pSessionCreateWidget, &UIGuestSessionCreateWidget::sigCreateSession,
+                this, &UIGuestControlFileManagerSessionPanel::sigCreateSession);
+        connect(m_pSessionCreateWidget, &UIGuestSessionCreateWidget::sigCloseSession,
+                this, &UIGuestControlFileManagerSessionPanel::sigCloseSession);
+    }
+}
+
+void UIGuestControlFileManagerSessionPanel::retranslateUi()
+{
+    UIGuestControlFileManagerPanel::retranslateUi();
+
+}
+
+#include "UIGuestControlFileManagerSessionPanel.moc"
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerSessionPanel.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerSessionPanel.h	(revision 75220)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerSessionPanel.h	(revision 75220)
@@ -0,0 +1,61 @@
+/* $Id$ */
+/** @file
+ * VBox Qt GUI - UIVMLogViewer class declaration.
+ */
+
+/*
+ * Copyright (C) 2010-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 ___UIGuestControlFileManagerSessionPanel_h___
+#define ___UIGuestControlFileManagerSessionPanel_h___
+
+/* GUI includes: */
+#include "UIGuestControlFileManagerPanel.h"
+
+/* Forward declarations: */
+class QTextEdit;
+class UIGuestControlFileManager;
+class UIGuestSessionCreateWidget;
+
+/** UIVMLogViewerPanel extension providing GUI to manage logviewer settings. */
+class UIGuestControlFileManagerSessionPanel : public UIGuestControlFileManagerPanel
+{
+    Q_OBJECT;
+
+public:
+
+    UIGuestControlFileManagerSessionPanel(UIGuestControlFileManager *pManagerWidget, QWidget *pParent);
+    void switchSessionCloseMode();
+    void switchSessionCreateMode();
+
+signals:
+
+    void sigCreateSession(QString strUserName, QString strPassword);
+    void sigCloseSession();
+
+protected:
+
+    virtual void prepareWidgets() /* override */;
+    virtual void prepareConnections() /* override */;
+
+    /** Handles the translation event. */
+    void retranslateUi();
+
+private slots:
+
+
+private:
+
+    UIGuestSessionCreateWidget *m_pSessionCreateWidget;
+};
+
+#endif /* !___UIGuestControlFileManagerSessionPanel_h___ */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerSettingsPanel.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerSettingsPanel.cpp	(revision 75220)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerSettingsPanel.cpp	(revision 75220)
@@ -0,0 +1,105 @@
+/* $Id$ */
+/** @file
+ * VBox Qt GUI - UIVMLogViewer class implementation.
+ */
+
+/*
+ * Copyright (C) 2010-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 <QComboBox>
+# include <QHBoxLayout>
+# include <QFontDatabase>
+# include <QFontDialog>
+# include <QCheckBox>
+# include <QLabel>
+# include <QSpinBox>
+
+/* GUI includes: */
+# include "QIToolButton.h"
+# include "UIIconPool.h"
+# include "UIGuestControlFileManager.h"
+# include "UIGuestControlFileManagerSettingsPanel.h"
+
+#endif /* !VBOX_WITH_PRECOMPILED_HEADERS */
+
+
+UIGuestControlFileManagerSettingsPanel::UIGuestControlFileManagerSettingsPanel(UIGuestControlFileManager *pManagerWidget,
+                                                                               QWidget *pParent, UIGuestControlFileManagerSettings *pFileManagerSettings)
+    : UIGuestControlFileManagerPanel(pManagerWidget, pParent)
+    , m_pListDirectoriesOnTopCheckBox(0)
+    , m_pDeleteConfirmationCheckBox(0)
+    , m_pFileManagerSettings(pFileManagerSettings)
+{
+    prepare();
+}
+
+void UIGuestControlFileManagerSettingsPanel::prepareWidgets()
+{
+    if (!mainLayout())
+        return;
+
+    m_pListDirectoriesOnTopCheckBox = new QCheckBox;
+    if (m_pListDirectoriesOnTopCheckBox)
+    {
+        m_pListDirectoriesOnTopCheckBox->setChecked(true);
+        mainLayout()->addWidget(m_pListDirectoriesOnTopCheckBox, 0, Qt::AlignLeft);
+    }
+
+    m_pDeleteConfirmationCheckBox = new QCheckBox;
+    if (m_pDeleteConfirmationCheckBox)
+    {
+        m_pDeleteConfirmationCheckBox->setChecked(false);
+        mainLayout()->addWidget(m_pDeleteConfirmationCheckBox, 0, Qt::AlignLeft);
+    }
+
+
+    retranslateUi();
+    mainLayout()->addStretch(2);
+}
+
+void UIGuestControlFileManagerSettingsPanel::sltListDirectoryCheckBoxToogled(bool fChecked)
+{
+    if (!m_pFileManagerSettings)
+        return;
+    m_pFileManagerSettings->bListDirectoriesOnTop = fChecked;
+    emit sigListDirectoriesFirstChanged();
+}
+
+void UIGuestControlFileManagerSettingsPanel::prepareConnections()
+{
+    if (m_pListDirectoriesOnTopCheckBox)
+        connect(m_pListDirectoriesOnTopCheckBox, &QCheckBox::toggled,
+                this, &UIGuestControlFileManagerSettingsPanel::sltListDirectoryCheckBoxToogled);
+    // if (m_pWrapLinesCheckBox)
+    //     connect(m_pWrapLinesCheckBox, &QCheckBox::toggled, this, &UIGuestControlFileManagerSettingsPanel::sigWrapLines);
+    // if (m_pFontSizeSpinBox)
+    //     connect(m_pFontSizeSpinBox, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged),
+    //             this, &UIGuestControlFileManagerSettingsPanel::sigChangeFontSizeInPoints);
+    // if (m_pResetToDefaultsButton)
+    //     connect(m_pResetToDefaultsButton, &QIToolButton::clicked, this, &UIGuestControlFileManagerSettingsPanel::sigResetToDefaults);
+}
+
+void UIGuestControlFileManagerSettingsPanel::retranslateUi()
+{
+    UIGuestControlFileManagerPanel::retranslateUi();
+
+    m_pListDirectoriesOnTopCheckBox->setText(UIGuestControlFileManager::tr("List directories on top"));
+    m_pListDirectoriesOnTopCheckBox->setToolTip(UIGuestControlFileManager::tr("List directories before files"));
+
+    m_pDeleteConfirmationCheckBox->setText(UIGuestControlFileManager::tr("Ask before delete"));
+    m_pDeleteConfirmationCheckBox->setToolTip(UIGuestControlFileManager::tr("List directories before files"));
+}
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerSettingsPanel.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerSettingsPanel.h	(revision 75220)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerSettingsPanel.h	(revision 75220)
@@ -0,0 +1,64 @@
+/* $Id$ */
+/** @file
+ * VBox Qt GUI - UIVMLogViewer class declaration.
+ */
+
+/*
+ * Copyright (C) 2010-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 ___UIGuestControlFileManagerSettingsPanel_h___
+#define ___UIGuestControlFileManagerSettingsPanel_h___
+
+/* GUI includes: */
+#include "UIGuestControlFileManagerPanel.h"
+
+/* Forward declarations: */
+class QCheckBox;
+class QSpinBox;
+class QLabel;
+class QIToolButton;
+class UIGuestControlFileManagerSettings;
+
+/** UIVMLogViewerPanel extension providing GUI to manage logviewer settings. */
+class UIGuestControlFileManagerSettingsPanel : public UIGuestControlFileManagerPanel
+{
+    Q_OBJECT;
+
+public:
+
+    UIGuestControlFileManagerSettingsPanel(UIGuestControlFileManager *pManagerWidget,
+                                           QWidget *pParent, UIGuestControlFileManagerSettings *pFileManagerSettings);
+
+signals:
+
+    void sigListDirectoriesFirstChanged();
+
+protected:
+
+    virtual void prepareWidgets() /* override */;
+    virtual void prepareConnections() /* override */;
+
+    /** Handles the translation event. */
+    void retranslateUi();
+
+private slots:
+
+    void sltListDirectoryCheckBoxToogled(bool fChecked);
+
+private:
+
+    QCheckBox                         *m_pListDirectoriesOnTopCheckBox;
+    QCheckBox                         *m_pDeleteConfirmationCheckBox;
+    UIGuestControlFileManagerSettings *m_pFileManagerSettings;
+};
+
+#endif /* !___UIGuestControlFileManagerSettingsPanel_h___ */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileTable.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileTable.cpp	(revision 75219)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileTable.cpp	(revision 75220)
@@ -959,4 +959,11 @@
     m_pView->setRootIndex(m_pProxyModel->mapFromSource(currentIndex));
     setSelectionDependentActionsEnabled(m_pView->hasSelection());
+}
+
+void UIGuestControlFileTable::relist()
+{
+    if (!m_pProxyModel)
+        return;
+    m_pProxyModel->invalidate();
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileTable.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileTable.h	(revision 75219)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileTable.h	(revision 75220)
@@ -251,6 +251,6 @@
     virtual ~UIGuestControlFileTable();
     /** Deletes all the tree nodes */
-    void reset();
-    void emitLogOutput(const QString& strOutput);
+    void        reset();
+    void        emitLogOutput(const QString& strOutput);
     /** Returns the path of the rootIndex */
     QString     currentDirectoryPath() const;
@@ -258,5 +258,5 @@
     QStringList selectedItemPathList();
     virtual void refresh();
-
+    void         relist();
     static const unsigned    m_iKiloByte;
     static QString humanReadableSize(ULONG64 size);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestProcessControlWidget.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestProcessControlWidget.cpp	(revision 75219)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestProcessControlWidget.cpp	(revision 75220)
@@ -29,4 +29,5 @@
 /* GUI includes: */
 # include "QITreeWidget.h"
+# include "UIActionPool.h"
 # include "UIExtraDataManager.h"
 # include "UIGuestControlConsole.h"
@@ -34,4 +35,5 @@
 # include "UIGuestControlTreeItem.h"
 # include "UIGuestProcessControlWidget.h"
+# include "UIToolBar.h"
 # include "UIVMInformationDialog.h"
 # include "VBoxGlobal.h"
@@ -166,5 +168,5 @@
 
 UIGuestProcessControlWidget::UIGuestProcessControlWidget(EmbedTo enmEmbedding, UIActionPool *pActionPool,
-                                                         const CGuest &comGuest, QWidget *pParent)
+                                                         const CGuest &comGuest, QWidget *pParent, bool fShowToolbar /* = false */)
     :QIWithRetranslateUI<QWidget>(pParent)
     , m_comGuest(comGuest)
@@ -176,9 +178,12 @@
     , m_enmEmbedding(enmEmbedding)
     , m_pActionPool(pActionPool)
+    , m_pToolBar(0)
     , m_pQtListener(0)
+    , m_fShowToolbar(fShowToolbar)
 {
     prepareListener();
     prepareObjects();
     prepareConnections();
+    prepareToolBar();
     initGuestSessionTree();
     loadSettings();
@@ -351,4 +356,33 @@
 }
 
+void UIGuestProcessControlWidget::prepareToolBar()
+{
+    /* Create toolbar: */
+    m_pToolBar = new UIToolBar(parentWidget());
+    if (m_pToolBar)
+    {
+        /* Configure toolbar: */
+        const int iIconMetric = (int)(QApplication::style()->pixelMetric(QStyle::PM_LargeIconSize));
+        m_pToolBar->setIconSize(QSize(iIconMetric, iIconMetric));
+        m_pToolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
+
+        /* Add toolbar actions: */
+        m_pToolBar->addSeparator();
+        m_pToolBar->addSeparator();
+
+#ifdef VBOX_WS_MAC
+        /* Check whether we are embedded into a stack: */
+        if (m_enmEmbedding == EmbedTo_Stack)
+        {
+            /* Add into layout: */
+            m_pMainLayout->addWidget(m_pToolBar);
+        }
+#else
+        /* Add into layout: */
+        m_pMainLayout->addWidget(m_pToolBar);
+#endif
+    }
+}
+
 void UIGuestProcessControlWidget::initGuestSessionTree()
 {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestProcessControlWidget.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestProcessControlWidget.h	(revision 75219)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestProcessControlWidget.h	(revision 75220)
@@ -41,5 +41,5 @@
 class UIGuestSessionsEventHandler;
 class UIGuestControlTreeWidget;
-
+class UIToolBar;
 
 /** QWidget extension
@@ -52,5 +52,5 @@
 
     UIGuestProcessControlWidget(EmbedTo enmEmbedding, UIActionPool *pActionPool,
-                                const CGuest &comGuest, QWidget *pParent);
+                                const CGuest &comGuest, QWidget *pParent, bool fShowToolbar = false);
     ~UIGuestProcessControlWidget();
 
@@ -76,4 +76,5 @@
     void prepareObjects();
     void prepareConnections();
+    void prepareToolBar();
     void prepareListener();
     void initGuestSessionTree();
@@ -92,4 +93,5 @@
     const EmbedTo             m_enmEmbedding;
     UIActionPool             *m_pActionPool;
+    UIToolBar                *m_pToolBar;
 
     /** Holds the Qt event listener instance. */
@@ -97,4 +99,5 @@
     /** Holds the COM event listener instance. */
     CEventListener m_comEventListener;
+    const bool     m_fShowToolbar;
 };
 
