Better colors and extra window to show detils
This commit is contained in:
parent
813e1ce6e9
commit
6151c3be7b
@ -1,8 +1,22 @@
|
||||
<Application xmlns="https://github.com/avaloniaui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:fluent="using:Avalonia.Themes.Fluent"
|
||||
x:Class="XSDVisualiser.Desktop.App">
|
||||
x:Class="XSDVisualiser.Desktop.App"
|
||||
RequestedThemeVariant="Light">
|
||||
<Application.Resources>
|
||||
<!-- App-level resource brushes for consistent, accessible colors -->
|
||||
<SolidColorBrush x:Key="AccentBrush" Color="#2563EB"/>
|
||||
<SolidColorBrush x:Key="AccentBrushLight" Color="#DBEAFE"/>
|
||||
<SolidColorBrush x:Key="PanelBackgroundBrush" Color="#FFFFFFFF"/>
|
||||
<SolidColorBrush x:Key="PanelBorderBrush" Color="#E5E7EB"/>
|
||||
<SolidColorBrush x:Key="SubtleTextBrush" Color="#475569"/>
|
||||
<SolidColorBrush x:Key="MutedTextBrush" Color="#64748B"/>
|
||||
<SolidColorBrush x:Key="SeparatorBrush" Color="#E2E8F0"/>
|
||||
<SolidColorBrush x:Key="BadgeBackgroundBrush" Color="#F1F5F9"/>
|
||||
</Application.Resources>
|
||||
|
||||
<Application.Styles>
|
||||
<fluent:FluentTheme />
|
||||
<!-- Use Fluent theme for consistent UI controls -->
|
||||
<fluent:FluentTheme/>
|
||||
</Application.Styles>
|
||||
</Application>
|
||||
|
||||
@ -3,8 +3,8 @@
|
||||
xmlns:m="clr-namespace:XSDVisualiser.Models;assembly=XSDVisualiser.Core"
|
||||
xmlns:conv="clr-namespace:XSDVisualiser.Desktop.Converters"
|
||||
x:Class="XSDVisualiser.Desktop.MainWindow"
|
||||
x:DataType="m:SchemaModel"
|
||||
Title="XSD Visualiser" Width="1100" Height="800">
|
||||
x:CompileBindings="False"
|
||||
Title="XSD Visualiser" Width="1200" Height="800">
|
||||
<Window.Resources>
|
||||
<conv:CardinalityToLabelConverter x:Key="CardinalityToLabel"/>
|
||||
<conv:OptionalToBorderBrushConverter x:Key="OptionalToBrush"/>
|
||||
@ -12,12 +12,19 @@
|
||||
</Window.Resources>
|
||||
|
||||
<Grid RowDefinitions="Auto,*" Margin="12">
|
||||
<StackPanel Orientation="Horizontal" Spacing="8">
|
||||
<TextBlock Text="XSD Visualiser (Avalonia)" FontSize="18"/>
|
||||
<Button Content="Open XSD and parse" x:Name="OpenBtn" Width="200" Margin="12,0,0,0"/>
|
||||
</StackPanel>
|
||||
<!-- Header -->
|
||||
<DockPanel LastChildFill="False">
|
||||
<TextBlock Text="XSD Visualiser" FontSize="20" FontWeight="SemiBold" Margin="0,0,12,0" DockPanel.Dock="Left"/>
|
||||
<Button Content="Open XSD and parse" x:Name="OpenBtn" Width="220"/>
|
||||
</DockPanel>
|
||||
|
||||
<ScrollViewer Grid.Row="1">
|
||||
<!-- Body: left tree | splitter | right details -->
|
||||
<Grid Grid.Row="1" ColumnDefinitions="*,Auto,1.6*" RowDefinitions="*">
|
||||
<!-- Left: Tree -->
|
||||
<Border Background="{DynamicResource PanelBackgroundBrush}"
|
||||
BorderBrush="{DynamicResource PanelBorderBrush}"
|
||||
BorderThickness="1" CornerRadius="6" Margin="0,8,8,0">
|
||||
<ScrollViewer>
|
||||
<TreeView x:Name="SchemaTree" ItemsSource="{Binding RootElements}">
|
||||
<TreeView.DataTemplates>
|
||||
<TreeDataTemplate DataType="{x:Type m:SchemaNode}" ItemsSource="{Binding Children}">
|
||||
@ -29,11 +36,12 @@
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<!-- leading small elbow -->
|
||||
<Rectangle Grid.Column="0" Width="16" Height="2" Fill="#888" VerticalAlignment="Center"/>
|
||||
<Rectangle Grid.Column="0" Width="16" Height="2" Fill="{DynamicResource SeparatorBrush}" VerticalAlignment="Center"/>
|
||||
<Grid Grid.Column="1">
|
||||
<Rectangle Height="2" Fill="#888" VerticalAlignment="Center"/>
|
||||
<Rectangle Height="2" Fill="{DynamicResource SeparatorBrush}" VerticalAlignment="Center"/>
|
||||
<TextBlock Text="{Binding Cardinality, Converter={StaticResource CardinalityToLabel}}"
|
||||
Background="#F0F0F0" Padding="4,0"
|
||||
Background="{DynamicResource BadgeBackgroundBrush}" Padding="6,0"
|
||||
Foreground="{DynamicResource SubtleTextBrush}"
|
||||
HorizontalAlignment="Center"/>
|
||||
</Grid>
|
||||
</Grid>
|
||||
@ -42,12 +50,12 @@
|
||||
<Border CornerRadius="4"
|
||||
BorderBrush="{Binding Cardinality, Converter={StaticResource OptionalToBrush}}"
|
||||
BorderThickness="{Binding Cardinality, Converter={StaticResource OptionalToThickness}}"
|
||||
Padding="8" Margin="0,0,0,4">
|
||||
<StackPanel Orientation="Horizontal" Spacing="6">
|
||||
<TextBlock Text="{Binding Name}" FontWeight="Bold"/>
|
||||
<TextBlock Text="{Binding TypeName}" Foreground="#555"/>
|
||||
<TextBlock Text="{Binding BuiltInType}" Foreground="#777"/>
|
||||
<TextBlock Text="{Binding ContentModel}" Foreground="#999"/>
|
||||
Padding="8" Margin="0,0,0,6" Background="#FAFAFA">
|
||||
<StackPanel Orientation="Horizontal" Spacing="10">
|
||||
<TextBlock Text="{Binding Name}" FontWeight="SemiBold"/>
|
||||
<TextBlock Text="{Binding TypeName}" Foreground="{DynamicResource SubtleTextBrush}"/>
|
||||
<TextBlock Text="{Binding BuiltInType}" Foreground="{DynamicResource MutedTextBrush}"/>
|
||||
<TextBlock Text="{Binding ContentModel}" Foreground="{DynamicResource MutedTextBrush}"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
@ -55,5 +63,101 @@
|
||||
</TreeView.DataTemplates>
|
||||
</TreeView>
|
||||
</ScrollViewer>
|
||||
</Border>
|
||||
|
||||
<!-- Splitter -->
|
||||
<GridSplitter Grid.Column="1" Width="6" Margin="4,8" Background="{DynamicResource PanelBorderBrush}" ShowsPreview="True"/>
|
||||
|
||||
<!-- Right: Details -->
|
||||
<Border Grid.Column="2" Background="{DynamicResource PanelBackgroundBrush}"
|
||||
BorderBrush="{DynamicResource PanelBorderBrush}"
|
||||
BorderThickness="1" CornerRadius="6" Margin="8,8,0,0">
|
||||
<ScrollViewer>
|
||||
<ContentControl Content="{Binding #SchemaTree.SelectedItem}">
|
||||
<ContentControl.DataTemplates>
|
||||
<DataTemplate DataType="{x:Type m:SchemaNode}">
|
||||
<StackPanel Margin="12" Spacing="12">
|
||||
<TextBlock Text="Details" FontSize="16" FontWeight="SemiBold"/>
|
||||
|
||||
<!-- General info -->
|
||||
<Border BorderBrush="{DynamicResource PanelBorderBrush}" BorderThickness="1" CornerRadius="4" Padding="10">
|
||||
<Grid ColumnDefinitions="Auto,*,Auto,*" RowDefinitions="Auto,Auto,Auto,Auto,Auto">
|
||||
<TextBlock Text="Name:" FontWeight="Bold"/>
|
||||
<TextBlock Grid.Column="1" Margin="8,0,0,0" Text="{Binding Name}"/>
|
||||
|
||||
<TextBlock Grid.Row="1" Text="Type:" FontWeight="Bold"/>
|
||||
<TextBlock Grid.Column="1" Grid.Row="1" Margin="8,0,0,0" Text="{Binding TypeName}"/>
|
||||
|
||||
<TextBlock Grid.Row="2" Text="Built-in:" FontWeight="Bold"/>
|
||||
<TextBlock Grid.Column="1" Grid.Row="2" Margin="8,0,0,0" Text="{Binding BuiltInType}"/>
|
||||
|
||||
<TextBlock Grid.Row="3" Text="Namespace:" FontWeight="Bold"/>
|
||||
<TextBlock Grid.Column="1" Grid.Row="3" Margin="8,0,0,0" Text="{Binding Namespace}"/>
|
||||
|
||||
<TextBlock Grid.Row="4" Text="Cardinality:" FontWeight="Bold"/>
|
||||
<TextBlock Grid.Column="1" Grid.Row="4" Margin="8,0,0,0" Text="{Binding Cardinality, Converter={StaticResource CardinalityToLabel}}"/>
|
||||
|
||||
<TextBlock Grid.Column="2" Text="Model:" FontWeight="Bold"/>
|
||||
<TextBlock Grid.Column="3" Margin="8,0,0,0" Text="{Binding ContentModel}"/>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<!-- Attributes list -->
|
||||
<StackPanel>
|
||||
<TextBlock Text="Attributes" FontWeight="SemiBold"/>
|
||||
<ItemsControl ItemsSource="{Binding Attributes}">
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate x:DataType="m:AttributeInfo">
|
||||
<Border BorderBrush="{DynamicResource PanelBorderBrush}" BorderThickness="1" CornerRadius="4" Padding="8" Margin="0,6,0,0">
|
||||
<Grid ColumnDefinitions="Auto,*,Auto,*" RowDefinitions="Auto,Auto,Auto">
|
||||
<TextBlock Text="Name:" FontWeight="Bold"/>
|
||||
<TextBlock Grid.Column="1" Margin="8,0,0,0" Text="{Binding Name}"/>
|
||||
|
||||
<TextBlock Grid.Row="1" Text="Type:" FontWeight="Bold"/>
|
||||
<TextBlock Grid.Column="1" Grid.Row="1" Margin="8,0,0,0" Text="{Binding TypeName}"/>
|
||||
|
||||
<TextBlock Grid.Row="2" Text="Use:" FontWeight="Bold"/>
|
||||
<TextBlock Grid.Column="1" Grid.Row="2" Margin="8,0,0,0" Text="{Binding Use}"/>
|
||||
|
||||
<TextBlock Grid.Column="2" Text="Built-in:" FontWeight="Bold"/>
|
||||
<TextBlock Grid.Column="3" Margin="8,0,0,0" Text="{Binding BuiltInType}"/>
|
||||
</Grid>
|
||||
</Border>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
</StackPanel>
|
||||
|
||||
<!-- Constraints -->
|
||||
<StackPanel>
|
||||
<TextBlock Text="Constraints" FontWeight="SemiBold"/>
|
||||
<ContentControl Content="{Binding Constraints}">
|
||||
<ContentControl.DataTemplates>
|
||||
<DataTemplate x:DataType="m:ConstraintSet">
|
||||
<StackPanel Spacing="8">
|
||||
<TextBlock Text="Base Type:" FontWeight="Bold"/>
|
||||
<TextBlock Text="{Binding BaseTypeName}"/>
|
||||
|
||||
<StackPanel>
|
||||
<TextBlock Text="Enumerations" FontWeight="SemiBold"/>
|
||||
<ItemsControl ItemsSource="{Binding Enumerations}"/>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel>
|
||||
<TextBlock Text="Patterns" FontWeight="SemiBold"/>
|
||||
<ItemsControl ItemsSource="{Binding Patterns}"/>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</ContentControl.DataTemplates>
|
||||
</ContentControl>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</ContentControl.DataTemplates>
|
||||
</ContentControl>
|
||||
</ScrollViewer>
|
||||
</Border>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Window>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user