/// <summary>
        /// Upload folder
        /// </summary>
        private void FolderToolStripMenuItemClick(object sender, EventArgs e)
        {
            var folderSelector = new FormSelectFilesystemFolder
            {
                EnableCreateNewFolder = false
            };

            if (folderSelector.ShowDialog() == DialogResult.OK)
            {
                var overwrite = MessageBox.Show("Overwrite existing items?", "Upload", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes;

                Cursor = Cursors.WaitCursor;

                try
                {
                    controller.UploadFolder(folderSelector.Foldername, tvReportServer.SelectedNode.ToolTipText, overwrite, tvReportServer.SelectedNode);
                    controller.PopulateItems(tvReportServer.SelectedNode.ToolTipText);
                }
                catch (Exception ex)
                {
                    LogHandler.WriteLogEntry(ex);
                    MessageBox.Show(String.Format("An error has occured: {0}", ex.Message));
                }

                Cursor = Cursors.Default;
            }
        }
        /// <summary>
        /// Download reports, alo includes any subfolders
        /// </summary>
        private void DownloadToolStripMenuItemClick(object sender, EventArgs e)
        {
            using (var folderSelector = new FormSelectFilesystemFolder())
            {
                if (folderSelector.ShowDialog() == DialogResult.OK)
                {
                    var askToPreserveFolders = lvItems.SelectedItems.Cast <ListViewItem>().Any(item => (ReportItemTypes)item.Tag == ReportItemTypes.Folder);

                    var preserveFolders = askToPreserveFolders &&
                                          MessageBox.Show("Preserve folders?", "Download items", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes;

                    if (!Directory.Exists(folderSelector.Foldername))
                    {
                        Directory.CreateDirectory(folderSelector.Foldername);
                    }

                    Cursor = Cursors.WaitCursor;

                    foreach (ListViewItem item in lvItems.SelectedItems)
                    {
                        try
                        {
                            controller.DownloadItem(item.ToolTipText, folderSelector.Foldername,
                                                    (ReportItemTypes)item.Tag, preserveFolders);
                        }
                        catch (Exception ex)
                        {
                            LogHandler.WriteLogEntry(ex);
                            MessageBox.Show(String.Format("An error has occured: {0}", ex.Message));
                        }
                    }

                    Cursor = Cursors.Default;
                }
            }
        }