Files
bluflame/intromat/Intromat/Views/ExplorerView.xaml
2026-04-18 22:31:51 +02:00

79 lines
5.5 KiB
XML

<UserControl x:Class="Intromat.Views.ExplorerView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:viewModels="clr-namespace:Intromat.ViewModels"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance {x:Type viewModels:ExplorerViewModel}}"
d:DesignHeight="450" d:DesignWidth="800">
<UserControl.Resources>
<Style x:Key="TreeViewIcon" TargetType="Image">
<Setter Property="Width" Value="16" />
<Setter Property="Height" Value="16" />
<Setter Property="Stretch" Value="Uniform" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="UseLayoutRounding" Value="True" />
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="Margin" Value="2,0,5,0" />
</Style>
<ContextMenu x:Key="projectMenu" x:Shared="True">
<MenuItem x:Name="_newModuleButton" Header="New module..." Icon="{StaticResource ModuleImage}" />
</ContextMenu>
<ContextMenu x:Key="moduleMenu" x:Shared="True">
<MenuItem x:Name="_renameModuleButton" Header="Rename module..." Icon="{StaticResource RenameImage}" />
<MenuItem x:Name="_deleteModuleButton" Header="Delete module" Icon="{StaticResource DeleteImage}" />
<MenuItem x:Name="_createModuleFolderButton" Header="Create folder..." Icon="{StaticResource FolderOpenImage}" />
<MenuItem x:Name="_createModuleFileButton" Header="Create file..." Icon="{StaticResource GraphImage}" />
</ContextMenu>
<ContextMenu x:Key="folderMenu" x:Shared="True">
<MenuItem x:Name="_renameFolderButton" Header="Rename folder..." Icon="{StaticResource RenameImage}" />
<MenuItem x:Name="_deleteFolderButton" Header="Delete folder" Icon="{StaticResource DeleteImage}" />
<MenuItem x:Name="_createSubFolderButton" Header="Create folder..." Icon="{StaticResource FolderOpenImage}" />
<MenuItem x:Name="_createSubFileButton" Header="Create file..." Icon="{StaticResource GraphImage}" />
</ContextMenu>
<ContextMenu x:Key="documentMenu" x:Shared="True">
<MenuItem x:Name="_renameFileButton" Header="Rename file..." Icon="{StaticResource RenameImage}" />
<MenuItem x:Name="_deleteFileButton" Header="Delete file" Icon="{StaticResource DeleteImage}" />
</ContextMenu>
</UserControl.Resources>
<TreeView x:Name="_treeView">
<TreeView.Resources>
<Style TargetType="TreeViewItem" BasedOn="{StaticResource {x:Type TreeViewItem}}">
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
</Style>
<HierarchicalDataTemplate DataType="{x:Type viewModels:ProjectViewModel}" ItemsSource="{Binding Modules}">
<StackPanel Orientation="Horizontal" Height="20" ContextMenu="{StaticResource projectMenu}">
<Image Style="{StaticResource TreeViewIcon}" Source="{StaticResource ProjectImageSource}" />
<TextBlock Text="{Binding Name}" VerticalAlignment="Center" Margin="0,0,2,0" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type viewModels:ModuleViewModel}" ItemsSource="{Binding TreeChildren}">
<StackPanel Orientation="Horizontal" Height="20" ContextMenu="{StaticResource moduleMenu}">
<Image Style="{StaticResource TreeViewIcon}" Source="{StaticResource ModuleImageSource}" />
<TextBlock Text="{Binding Name}" VerticalAlignment="Center" Margin="0,0,2,0" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type viewModels:FolderViewModel}" ItemsSource="{Binding TreeChildren}">
<StackPanel Orientation="Horizontal" Height="20" ContextMenu="{StaticResource folderMenu}">
<Image Style="{StaticResource TreeViewIcon}" Source="{StaticResource FolderClosedImageSource}" />
<TextBlock Text="{Binding Name}" VerticalAlignment="Center" Margin="0,0,2,0" />
</StackPanel>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type viewModels:DocumentViewModel}">
<StackPanel Orientation="Horizontal" Height="20" ContextMenu="{StaticResource documentMenu}">
<Image Style="{StaticResource TreeViewIcon}" Source="{StaticResource GraphImageSource}" />
<TextBlock Text="{Binding Name}" VerticalAlignment="Center" Margin="0,0,2,0" />
</StackPanel>
</DataTemplate>
<DataTemplate DataType="{x:Type viewModels:ShaderFileViewModel}">
<StackPanel Orientation="Horizontal" Height="20" ContextMenu="{StaticResource documentMenu}">
<Image Style="{StaticResource TreeViewIcon}" Source="{StaticResource GraphImageSource}" />
<TextBlock Text="{Binding Name}" VerticalAlignment="Center" Margin="0,0,2,0" />
</StackPanel>
</DataTemplate>
</TreeView.Resources>
</TreeView>
</UserControl>