@using SharpIDE.Application.Features.SolutionDiscovery
@using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence
@if (SolutionModel is null)
{
return;
}
@foreach (var folder in SolutionModel.Folders)
{
@GetSolutionFolderFragment(folder)
}
@foreach(var project in SolutionModel.Projects)
{
@GetProjectFragment(project)
}
@code {
[Parameter, EditorRequired]
public string SolutionFilePath { get; set; } = null!;
[Parameter, EditorRequired]
public SharpIdeSolutionModel SolutionModel { get; set; } = null!;
[Parameter, EditorRequired]
public SharpIdeFile SelectedFile { get; set; } = null!;
[Parameter]
public EventCallback SelectedFileChanged { get; set; }
private async Task InvokeSelectedFileChanged(SharpIdeFile file)
{
SelectedFile = file;
await SelectedFileChanged.InvokeAsync(file);
}
private RenderFragment GetSolutionFolderFragment(SharpIdeSolutionFolder slnFolder) =>
@
@foreach(var childFolder in slnFolder.Folders)
{
@GetSolutionFolderFragment(childFolder)
}
@foreach(var childProject in slnFolder.Projects)
{
@GetProjectFragment(childProject)
}
;
private RenderFragment GetProjectFragment(SharpIdeProjectModel project) =>
@
@foreach (var folder in project.Folders)
{
@GetFolderFragment(folder)
}
@foreach(var file in project.Files)
{
@GetFileFragment(file)
}
;
private RenderFragment GetFolderFragment(SharpIdeFolder folder) =>
@
@foreach (var subFolder in folder.Folders)
{
@if (subFolder.Expanded)
{
@GetFolderFragment(subFolder)
}
}
@foreach (var file in folder.Files)
{
@GetFileFragment(file)
}
;
private RenderFragment GetFileFragment(SharpIdeFile file) =>
@
;
}