context menu v2
This commit is contained in:
@@ -13,29 +13,27 @@
|
|||||||
transition-duration: 0.0s !important;
|
transition-duration: 0.0s !important;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<MudMenu Style="flex-direction: column; width: 100%" ActivationEvent="@MouseEvent.RightClick" PositionAtCursor="true" Dense="true" Modal="false">
|
|
||||||
<ActivatorContent>
|
<MudTreeView T="ISharpIdeNode" Dense="true" ExpandOnClick="true">
|
||||||
<MudTreeView T="ISharpIdeNode" Dense="true" ExpandOnClick="true">
|
<MudTreeViewItem T="ISharpIdeNode" TextTypo="Typo.body2" Expanded="true" Icon="@Icons.Material.Filled.Folder" IconColor="Color.Primary" Value="@SolutionModel" Text="@SolutionModel.Name">
|
||||||
<MudTreeViewItem T="ISharpIdeNode" TextTypo="Typo.body2" Expanded="true" Icon="@Icons.Material.Filled.Folder" IconColor="Color.Primary" Value="@SolutionModel" Text="@SolutionModel.Name">
|
@foreach (var folder in SolutionModel.Folders)
|
||||||
@foreach (var folder in SolutionModel.Folders)
|
{
|
||||||
{
|
@GetSolutionFolderFragment(folder)
|
||||||
@GetSolutionFolderFragment(folder)
|
}
|
||||||
}
|
@foreach (var project in SolutionModel.Projects)
|
||||||
@foreach (var project in SolutionModel.Projects)
|
{
|
||||||
{
|
@GetProjectFragment(project)
|
||||||
@GetProjectFragment(project)
|
}
|
||||||
}
|
</MudTreeViewItem>
|
||||||
</MudTreeViewItem>
|
</MudTreeView>
|
||||||
</MudTreeView>
|
|
||||||
</ActivatorContent>
|
<MudMenu PositionAtCursor @ref="_contextMenuRef" Dense="true" Modal="false">
|
||||||
<ChildContent>
|
<MudMenuItem Icon="@Icons.Material.Filled.PlayArrow" IconColor="Color.Success" Label="Run" />
|
||||||
<MudMenuItem Icon="@Icons.Material.Filled.PlayArrow" IconColor="Color.Success" Label="Run" />
|
<MudMenuItem Label="Build" />
|
||||||
<MudMenuItem Label="Build" />
|
<MudMenuItem Label="Rebuild" />
|
||||||
<MudMenuItem Label="Rebuild" />
|
<MudMenuItem Label="Clean" />
|
||||||
<MudMenuItem Label="Clean" />
|
<MudMenuItem Label="Restore" />
|
||||||
<MudMenuItem Label="Restore" />
|
</MudMenu>
|
||||||
</ChildContent>
|
|
||||||
</MudMenu>
|
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
[Parameter, EditorRequired]
|
[Parameter, EditorRequired]
|
||||||
@@ -47,12 +45,19 @@
|
|||||||
[Parameter]
|
[Parameter]
|
||||||
public EventCallback<SharpIdeFile> SelectedFileChanged { get; set; }
|
public EventCallback<SharpIdeFile> SelectedFileChanged { get; set; }
|
||||||
|
|
||||||
|
private MudMenu _contextMenuRef = null!;
|
||||||
|
|
||||||
private async Task InvokeSelectedFileChanged(SharpIdeFile file)
|
private async Task InvokeSelectedFileChanged(SharpIdeFile file)
|
||||||
{
|
{
|
||||||
SelectedFile = file;
|
SelectedFile = file;
|
||||||
await SelectedFileChanged.InvokeAsync(file);
|
await SelectedFileChanged.InvokeAsync(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task OpenProjectContextMenu(MouseEventArgs args)
|
||||||
|
{
|
||||||
|
await _contextMenuRef.OpenMenuAsync(args);
|
||||||
|
}
|
||||||
|
|
||||||
private RenderFragment GetSolutionFolderFragment(SharpIdeSolutionFolder slnFolder) =>
|
private RenderFragment GetSolutionFolderFragment(SharpIdeSolutionFolder slnFolder) =>
|
||||||
@<text>
|
@<text>
|
||||||
<MudTreeViewItem T="ISharpIdeNode" TextTypo="Typo.body2" Icon="@Icons.Material.Filled.Folder" IconColor="Color.Primary" Value="@slnFolder" Text="@slnFolder.Name" @bind-Expanded="@slnFolder.Expanded">
|
<MudTreeViewItem T="ISharpIdeNode" TextTypo="Typo.body2" Icon="@Icons.Material.Filled.Folder" IconColor="Color.Primary" Value="@slnFolder" Text="@slnFolder.Name" @bind-Expanded="@slnFolder.Expanded">
|
||||||
@@ -76,20 +81,23 @@
|
|||||||
|
|
||||||
private RenderFragment GetProjectFragment(SharpIdeProjectModel project) =>
|
private RenderFragment GetProjectFragment(SharpIdeProjectModel project) =>
|
||||||
@<text>
|
@<text>
|
||||||
<MudTreeViewItem T="ISharpIdeNode" TextTypo="Typo.body2" Icon="@Icons.Custom.FileFormats.FileCode" IconColor="Color.Success" Text="@project.Name" Value="project" @bind-Expanded="@project.Expanded">
|
<div @onclick="@OpenProjectContextMenu" @oncontextmenu="@OpenProjectContextMenu" @oncontextmenu:preventDefault @oncontextmenu:stopPropagation>
|
||||||
@if (project.Expanded)
|
<MudTreeViewItem T="ISharpIdeNode" TextTypo="Typo.body2" Icon="@Icons.Custom.FileFormats.FileCode" IconColor="Color.Success" Text="@project.Name" Value="project" @bind-Expanded="@project.Expanded">
|
||||||
{
|
@if (project.Expanded)
|
||||||
@foreach (var folder in project.Folders)
|
|
||||||
{
|
{
|
||||||
|
@foreach (var folder in project.Folders)
|
||||||
|
{
|
||||||
@GetFolderFragment(folder)
|
@GetFolderFragment(folder)
|
||||||
|
}
|
||||||
|
|
||||||
|
@foreach (var file in project.Files)
|
||||||
|
{
|
||||||
|
@GetFileFragment(file)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@foreach (var file in project.Files)
|
</MudTreeViewItem>
|
||||||
{
|
</div>
|
||||||
@GetFileFragment(file)
|
</text>;
|
||||||
}
|
|
||||||
}
|
|
||||||
</MudTreeViewItem>
|
|
||||||
</text>;
|
|
||||||
|
|
||||||
private RenderFragment GetFolderFragment(SharpIdeFolder folder) =>
|
private RenderFragment GetFolderFragment(SharpIdeFolder folder) =>
|
||||||
@<text>
|
@<text>
|
||||||
|
|||||||
Reference in New Issue
Block a user