Index: src/DeltaShell/DeltaShell.Gui/GuiExportHandler.cs =================================================================== diff -u -r8f6ae890fed8e8eae3a32f9c0498a10f82e0ddf9 -r5fc71a385897af92ccb092f2f969b5709afab85a --- src/DeltaShell/DeltaShell.Gui/GuiExportHandler.cs (.../GuiExportHandler.cs) (revision 8f6ae890fed8e8eae3a32f9c0498a10f82e0ddf9) +++ src/DeltaShell/DeltaShell.Gui/GuiExportHandler.cs (.../GuiExportHandler.cs) (revision 5fc71a385897af92ccb092f2f969b5709afab85a) @@ -16,10 +16,7 @@ public class GuiExportHandler { private static readonly ILog log = LogManager.GetLogger(typeof(GuiExportHandler)); - - private Func> FileExportersGetter { get; set; } - private Func ViewGetter { get; set; } - private static readonly Bitmap brickImage = Properties.Resources.brick; + private static readonly Bitmap brickImage = Resources.brick; // TODO: refactor it, remove Funcs - too complicated design, initialize exporters in a different way public GuiExportHandler(Func> fileExportersGetter, Func viewGetter) @@ -31,50 +28,21 @@ public void ExportFrom(object item) { var exporter = GetSupportedExporterForItemUsingDialog(item); - if (exporter == null) return; - GetExporterDialog(exporter, item); - } - - private IFileExporter GetSupportedExporterForItemUsingDialog(object itemToExport) - { - var sourceType = itemToExport.GetType(); - var selectExporterDialog = new SelectItemDialog(); - - var fileExporters = GetSupportedExportersForItem(itemToExport); - - //if there is only one available exporter use that. - if (fileExporters.Count == 0) + if (exporter == null) { - MessageBox.Show(Resources.GuiExportHandler_GetSupportedExporterForItemUsingDialog_No_exporter_for_this_item_available_); - log.Warn(String.Format(Resources.GuiExportHandler_GetSupportedExporterForItemUsingDialog_No_exporter_for_this_item___0___available_, sourceType)); - return null; + return; } - - //if there is only one available exporter use that. - if (fileExporters.Count == 1) - return fileExporters[0]; - - foreach (var fileExporter in fileExporters) - { - selectExporterDialog.AddItemType(fileExporter.Name, fileExporter.Category, fileExporter.Icon ?? brickImage, null); - } - - if (selectExporterDialog.ShowDialog() == DialogResult.OK) - { - return fileExporters.First(i => i.Name == selectExporterDialog.SelectedItemTypeName); - } - - return null; + GetExporterDialog(exporter, item); } public IList GetSupportedExportersForItem(object itemToExport) { var sourceType = itemToExport.GetType(); return FileExportersGetter(itemToExport) - .Where(e => e.SourceTypes().Any(type => type == sourceType || type.IsAssignableFrom(sourceType)) && - e.CanExportFor(itemToExport)) - .ToList(); + .Where(e => e.SourceTypes().Any(type => type == sourceType || type.IsAssignableFrom(sourceType)) && + e.CanExportFor(itemToExport)) + .ToList(); } public void GetExporterDialog(IFileExporter exporter, object selectedItem) @@ -87,7 +55,7 @@ { if (view is IConfigureDialog) { - ((IConfigureDialog)(view)).Configure(exporter); + ((IConfigureDialog) (view)).Configure(exporter); } //Do Export (Not as activity yet) @@ -100,22 +68,58 @@ ExporterItemUsingFileOpenDialog(exporter, selectedItem); } + private Func> FileExportersGetter { get; set; } + private Func ViewGetter { get; set; } + + private IFileExporter GetSupportedExporterForItemUsingDialog(object itemToExport) + { + var sourceType = itemToExport.GetType(); + var selectExporterDialog = new SelectItemDialog(); + + var fileExporters = GetSupportedExportersForItem(itemToExport); + + //if there is only one available exporter use that. + if (fileExporters.Count == 0) + { + MessageBox.Show(Resources.GuiExportHandler_GetSupportedExporterForItemUsingDialog_No_exporter_for_this_item_available_); + log.Warn(String.Format(Resources.GuiExportHandler_GetSupportedExporterForItemUsingDialog_No_exporter_for_this_item___0___available_, sourceType)); + return null; + } + + //if there is only one available exporter use that. + if (fileExporters.Count == 1) + { + return fileExporters[0]; + } + + foreach (var fileExporter in fileExporters) + { + selectExporterDialog.AddItemType(fileExporter.Name, fileExporter.Category, fileExporter.Icon ?? brickImage, null); + } + + if (selectExporterDialog.ShowDialog() == DialogResult.OK) + { + return fileExporters.First(i => i.Name == selectExporterDialog.SelectedItemTypeName); + } + + return null; + } + private void ExporterItemUsingFileOpenDialog(IFileExporter exporter, object item) { log.Info(Resources.GuiExportHandler_ExporterItemUsingFileOpenDialog_Start_exporting); var dlg = new SaveFileDialog - { - Filter = exporter.FileFilter, - Title = Resources.GuiExportHandler_ExporterItemUsingFileOpenDialog_Select_a_file_to_export_to - - }; + { + Filter = exporter.FileFilter, + Title = Resources.GuiExportHandler_ExporterItemUsingFileOpenDialog_Select_a_file_to_export_to + }; dlg.FilterIndex = 2; if (dlg.ShowDialog() == DialogResult.OK) { if (exporter.Export(item, dlg.FileName)) { - log.Info(Resources.GuiExportHandler_ExporterItemUsingFileOpenDialog_Finished_exporting); + log.Info(Resources.GuiExportHandler_ExporterItemUsingFileOpenDialog_Finished_exporting); } else { @@ -124,6 +128,4 @@ } } } -} - - +} \ No newline at end of file