Skip to content

Commit

Permalink
Add more filters for CodeExplorer import command
Browse files Browse the repository at this point in the history
Add additional filters. Cache filter index for reuse next time
dialog is shown.
  • Loading branch information
IvenBach committed Apr 14, 2021
1 parent 51f2d13 commit 285fd79
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 0 deletions.
21 changes: 21 additions & 0 deletions Rubberduck.Core/UI/CodeExplorer/Commands/ImportCommand.cs
Expand Up @@ -146,6 +146,7 @@ private IVBProject TargetProjectFromVbe()
return dict;
}

private int _cachedFilterIndex = 1;
protected virtual ICollection<string> FilesToImport(object parameter)
{
using (var dialog = _dialogFactory.CreateOpenFileDialog())
Expand All @@ -157,15 +158,23 @@ protected virtual ICollection<string> FilesToImport(object parameter)
dialog.Multiselect = true;
dialog.ShowHelp = false;
dialog.Title = DialogsTitle;
dialog.FilterIndex = _cachedFilterIndex;
dialog.Filter =
$"{RubberduckUI.ImportCommand_OpenDialog_Filter_VBFiles} ({FilterExtension})|{FilterExtension}|" +
$"{Resources.CodeExplorer.CodeExplorerUI.ImportCommand_OpenDialog_Filter_NonDocumentModules} ({AllNonDocumentModulesExtension})|{AllNonDocumentModulesExtension}|" +
$"{Resources.CodeExplorer.CodeExplorerUI.ImportCommand_OpenDialog_Filter_StandardModules} ({StandardModuleExtension})|{StandardModuleExtension}|" +
$"{Resources.CodeExplorer.CodeExplorerUI.ImportCommand_OpenDialog_Filter_ClassModules} ({ClassModuleExtension})|{ClassModuleExtension}|" +
$"{Resources.CodeExplorer.CodeExplorerUI.ImportCommand_OpenDialog_Filter_FormModules} ({FormModuleExtension})|{FormModuleExtension}|" +
$"{Resources.CodeExplorer.CodeExplorerUI.ImportCommand_OpenDialog_Filter_DocumentModules} ({DocumentModuleExtension})|{DocumentModuleExtension}|" +
$"{RubberduckUI.ImportCommand_OpenDialog_Filter_AllFiles}, (*.*)|*.*";

if (dialog.ShowDialog() != DialogResult.OK)
{
return new List<string>();
}

_cachedFilterIndex = dialog.FilterIndex;

var fileNames = dialog.FileNames;
var fileExtensions = fileNames.Select(Path.GetExtension);
if (fileExtensions.Any(fileExt => !ImportableExtensions.Contains(fileExt)))
Expand Down Expand Up @@ -562,6 +571,18 @@ protected override void OnExecute(object parameter)

private string FilterExtension => string.Join("; ", ImportableExtensions.Select(ext => $"*{ext}"));

private string AllNonDocumentModulesExtension => string.Join("; ",
ImportableExtensions.Where(ext => !ext.EndsWith("doccls"))
.Select(ext => $"*{ext}"));

private string StandardModuleExtension => "*" + ImportableExtensions.Where(ext => ext.EndsWith("bas")).First();

private string ClassModuleExtension => "*" + ImportableExtensions.Where(ext => ext.EndsWith(".cls")).First();

private string FormModuleExtension => "*" + ImportableExtensions.Where(ext => ext.EndsWith("frm")).First();

private string DocumentModuleExtension => "*" + ImportableExtensions.Where(ext => ext.EndsWith("doccls")).First();

protected IDictionary<string, ICollection<ComponentType>> ComponentTypesForExtension { get; }
}
}
45 changes: 45 additions & 0 deletions Rubberduck.Resources/CodeExplorer/CodeExplorerUI.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions Rubberduck.Resources/CodeExplorer/CodeExplorerUI.resx
Expand Up @@ -461,4 +461,19 @@ Continue?</value>
<data name="CodeExplorer_Annotate" xml:space="preserve">
<value>Annotate</value>
</data>
<data name="ImportCommand_OpenDialog_Filter_ClassModules" xml:space="preserve">
<value>Class modules</value>
</data>
<data name="ImportCommand_OpenDialog_Filter_DocumentModules" xml:space="preserve">
<value>Document modules</value>
</data>
<data name="ImportCommand_OpenDialog_Filter_FormModules" xml:space="preserve">
<value>Form modules</value>
</data>
<data name="ImportCommand_OpenDialog_Filter_NonDocumentModules" xml:space="preserve">
<value>Non-document modules</value>
</data>
<data name="ImportCommand_OpenDialog_Filter_StandardModules" xml:space="preserve">
<value>Standard modules</value>
</data>
</root>
3 changes: 3 additions & 0 deletions Rubberduck.Resources/Rubberduck.Resources.csproj
Expand Up @@ -27,6 +27,9 @@
</Compile>
</ItemGroup>
<ItemGroup>
<Compile Update="CodeExplorer\CodeExplorerUI.Designer.cs">
<DesignTime>True</DesignTime>
</Compile>
<Compile Update="Inspections\InspectionInfo.Designer.cs">
<DesignTime>True</DesignTime>
</Compile>
Expand Down

0 comments on commit 285fd79

Please sign in to comment.