67 lines
2.3 KiB
Plaintext
67 lines
2.3 KiB
Plaintext
@using SharpIDE.Application.Features.Build
|
|
@using SharpIDE.Application.Features.SolutionDiscovery
|
|
@using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence
|
|
@inherits LayoutComponentBase
|
|
|
|
@inject IDialogService DialogService
|
|
@inject BuildService BuildService
|
|
|
|
<MudLayout>
|
|
<MudAppBar Dense="true">
|
|
<MudIconButton Icon="@Icons.Material.Filled.Menu" Color="Color.Inherit" Edge="Edge.Start" OnClick="@((e) => DrawerToggle())" />
|
|
<MudButtonGroup OverrideStyles="false">
|
|
<MudButton Variant="Variant.Filled" Size="Size.Small" Color="Color.Primary" OnClick="@BuildSolution">Build</MudButton>
|
|
<MudButton Variant="Variant.Outlined" Size="Size.Small" Color="Color.Primary">Rebuild</MudButton>
|
|
<MudButton Variant="Variant.Outlined" Size="Size.Small" Color="Color.Primary">Clean</MudButton>
|
|
</MudButtonGroup>
|
|
</MudAppBar>
|
|
<MudDrawer @bind-Open="@_drawerOpen" Width="400px" ClipMode="DrawerClipMode.Always">
|
|
@if (_solutionFilePath is not null)
|
|
{
|
|
<SolutionExplorer @bind-SelectedFile="@_selectedFile" SolutionModel="@_solutionModel" SolutionFilePath="@_solutionFilePath"/>
|
|
}
|
|
@* <NavMenu/> *@
|
|
</MudDrawer>
|
|
<MudMainContent>
|
|
<MudContainer MaxWidth="MaxWidth.False" Class="mt-2">
|
|
@* @Body *@
|
|
@if (_solutionFilePath is not null)
|
|
{
|
|
<CodeViewer SelectedFile="@_selectedFile" />
|
|
}
|
|
</MudContainer>
|
|
</MudMainContent>
|
|
</MudLayout>
|
|
|
|
@code {
|
|
bool _drawerOpen = true;
|
|
|
|
void DrawerToggle()
|
|
{
|
|
_drawerOpen = !_drawerOpen;
|
|
}
|
|
|
|
private string? _solutionFilePath;
|
|
private SharpIdeSolutionModel? _solutionModel;
|
|
private SharpIdeFile? _selectedFile;
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
var dialogRef = await DialogService.ShowAsync<SolutionPickerDialog>("Open Solution", new DialogOptions { FullWidth = true, MaxWidth = MaxWidth.Medium, BackdropClick = false });
|
|
var result = await dialogRef.Result;
|
|
if (result is null) throw new InvalidOperationException("Dialog result is null");
|
|
if (result.Canceled) throw new OperationCanceledException("Dialog was canceled");
|
|
var solutionFilePath = (string)result.Data!;
|
|
_solutionFilePath = solutionFilePath;
|
|
|
|
//await BuildService.BuildSolutionAsync(_solutionFilePath);
|
|
var solutionModel = await VsPersistenceMapper.GetSolutionModel(_solutionFilePath);
|
|
_solutionModel = solutionModel;
|
|
}
|
|
|
|
private async Task BuildSolution()
|
|
{
|
|
await BuildService.BuildSolutionAsync(_solutionFilePath!);
|
|
}
|
|
}
|