-
Notifications
You must be signed in to change notification settings - Fork 145
/
MultiRowDbTableEditorView.axaml
146 lines (144 loc) · 8.68 KB
/
MultiRowDbTableEditorView.axaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:controls="clr-namespace:WDE.Common.Avalonia.Controls;assembly=WDE.Common.Avalonia"
xmlns:controls1="clr-namespace:AvaloniaStyles.Controls;assembly=AvaloniaStyles"
xmlns:helpers="clr-namespace:WDE.DatabaseEditors.Avalonia.Helpers"
xmlns:controls2="clr-namespace:WDE.DatabaseEditors.Avalonia.Controls"
xmlns:styles="clr-namespace:AvaloniaStyles.Styles;assembly=AvaloniaStyles"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
Name="rootWindow"
x:Class="WDE.DatabaseEditors.Avalonia.Views.MultiRow.MultiRowDbTableEditorView">
<UserControl.Resources>
<ItemsPanelTemplate x:Key="HorizontalRowPanel">
<Grid helpers:GridColumnsBinder.Columns="{Binding DataContext.Columns, ElementName=rootWindow}">
</Grid>
</ItemsPanelTemplate>
<DataTemplate x:Key="RowTemplate">
<Panel Classes="alternating">
<ItemsPresenter Items="{Binding Cells, Mode=OneTime}" ItemsPanel="{StaticResource HorizontalRowPanel}">
<ItemsPresenter.Styles>
<Style Selector="Grid > ContentPresenter">
<Setter Property="(Grid.Column)" Value="{Binding ColumnIndex}" />
</Style>
</ItemsPresenter.Styles>
</ItemsPresenter>
</Panel>
</DataTemplate>
</UserControl.Resources>
<UserControl.Styles>
<styles:StyleIncludeColorAware DarkSource="avares://WDE.DatabaseEditors.Avalonia/Views/ColorsDark.axaml"
LightSource="avares://WDE.DatabaseEditors.Avalonia/Views/ColorsLight.axaml"/>
<StyleInclude Source="avares://WDE.DatabaseEditors.Avalonia/Controls/FastCellView.axaml" />
<StyleInclude Source="avares://WDE.DatabaseEditors.Avalonia/Controls/FastBoolCellView.axaml" />
<Style Selector="Panel.alternating">
<Setter Property="Background" Value="{DynamicResource TreeViewItem.Content.Background.NormalAlternate}" />
</Style>
<Style Selector="Panel.alternating.odd">
<Setter Property="Background" Value="{DynamicResource TreeViewItem.Content.Background.Normal}" />
</Style>
<Style Selector="Border.header">
<Setter Property="Height" Value="32" />
<Setter Property="Background" Value="{DynamicResource TextControlBackground}"/>
<Setter Property="BorderBrush" Value="{DynamicResource TextControlBorderBrush}"/>
<Setter Property="BorderThickness" Value="0,0,0,1" />
</Style>
<Style Selector="Border.header GridSplitter">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border BorderThickness="0,0,1,0"
Background="Transparent"
BorderBrush="{DynamicResource TextControlBorderBrush}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style Selector="Border.header TextBlock">
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Padding" Value="4" />
<Setter Property="Foreground" Value="{DynamicResource SystemControlForegroundBaseMediumBrush}"/>
</Style>
<Style Selector="GridSplitter">
<Setter Property="Template">
<ControlTemplate>
<Border
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{DynamicResource TextControlBackground}"/>
</ControlTemplate>
</Setter>
</Style>
</UserControl.Styles>
<UserControl.DataTemplates>
<helpers:FieldValueTemplateSelector>
<helpers:FieldValueTemplateSelector.CommandTemplate>
<DataTemplate>
<Button Command="{Binding ActionCommand}" CommandParameter="{Binding}" Content="{Binding ActionLabel}" />
</DataTemplate>
</helpers:FieldValueTemplateSelector.CommandTemplate>
<helpers:FieldValueTemplateSelector.BoolTemplate>
<DataTemplate>
<controls2:FastBoolCellView Height="24" Margin="0,0,10,0"
ToolTip.Tip="{Binding OriginalValueTooltip}"
Focusable="False"
IsActive="True"
IsReadOnly="{Binding IsReadOnly, Mode=OneTime}"
SetNullCommand="{Binding ElementName=rootWindow, Path=DataContext.SetNullCommand, Mode=OneTime}"
RevertCommand="{Binding ElementName=rootWindow, Path=DataContext.RevertCommand, Mode=OneTime}"
CanBeNull="{Binding CanBeSetToNull, Mode=OneTime}"
RemoveTemplateCommand="{Binding ElementName=rootWindow, Path=DataContext.RemoveTemplateCommand, Mode=OneTime}"
Value="{Binding AsBoolValue}"/>
</DataTemplate>
</helpers:FieldValueTemplateSelector.BoolTemplate>
<helpers:FieldValueTemplateSelector.GenericTemplate>
<DataTemplate>
<controls2:FastCellView Height="24" Margin="0,0,10,0"
ToolTip.Tip="{Binding OriginalValueTooltip}"
Focusable="False"
IsActive="True"
ShowChooseButton="{Binding ParameterValue.Parameter.HasItems, Mode=OneTime}"
IsReadOnly="{Binding IsReadOnly, Mode=OneTime}"
Value="{Binding ParameterValue.Value}"
ChooseParameterCommand="{Binding ElementName=rootWindow, Path=DataContext.OpenParameterWindow, Mode=OneTime}"
SetNullCommand="{Binding ElementName=rootWindow, Path=DataContext.SetNullCommand, Mode=OneTime}"
RevertCommand="{Binding ElementName=rootWindow, Path=DataContext.RevertCommand, Mode=OneTime}"
DuplicateCommand="{Binding ElementName=rootWindow, Path=DataContext.DuplicateCommand, Mode=OneTime}"
RemoveTemplateCommand="{Binding ElementName=rootWindow, Path=DataContext.RemoveTemplateCommand, Mode=OneTime}"
CanBeNull="{Binding CanBeSetToNull, Mode=OneTime}"
StringValue="{Binding ParameterValue.String}">
</controls2:FastCellView>
</DataTemplate>
</helpers:FieldValueTemplateSelector.GenericTemplate>
</helpers:FieldValueTemplateSelector>
</UserControl.DataTemplates>
<DockPanel LastChildFill="True">
<StackPanel Margin="10" VerticalAlignment="Center" DockPanel.Dock="Top">
<Button Command="{Binding AddNewCommand, Mode=OneTime}" HorizontalAlignment="Left">
Add new key
</Button>
</StackPanel>
<ScrollViewer>
<DockPanel Grid.IsSharedSizeScope="True" LastChildFill="True">
<Border Classes="header" DockPanel.Dock="Top">
<Grid helpers:GridColumnsBinder.ColumnsWithHeader="{Binding Columns, Mode=OneTime}" />
</Border>
<ItemsPresenter Items="{Binding Rows, Mode=OneTime}">
<ItemsPresenter.ItemTemplate>
<DataTemplate>
<StackPanel>
<controls1:GroupingHeader GroupName="{Binding Name, Mode=OneTime}">
<controls1:GroupingHeader.CustomContent>
<Button Command="{Binding ElementName=rootWindow, Path=DataContext.AddRow, Mode=OneTime}" CommandParameter="{Binding ., Mode=OneTime}">+</Button>
</controls1:GroupingHeader.CustomContent>
</controls1:GroupingHeader>
<controls:AlternatingItemsControl Items="{Binding ., Mode=OneTime}" MinHeight="20" ItemTemplate="{StaticResource RowTemplate}" />
</StackPanel>
</DataTemplate>
</ItemsPresenter.ItemTemplate>
</ItemsPresenter>
</DockPanel>
</ScrollViewer>
</DockPanel>
</UserControl>