Skip to content

Commit 0e6a088

Browse files
committed
ux: use DataGrid instead of ChangeCollectionView for changes in INFORMATION page
1 parent 49ce074 commit 0e6a088

File tree

2 files changed

+51
-37
lines changed

2 files changed

+51
-37
lines changed

src/Views/CommitDetail.axaml

Lines changed: 34 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -25,28 +25,40 @@
2525
<Rectangle Grid.Row="1" Height=".65" Margin="8" Fill="{DynamicResource Brush.Border2}" VerticalAlignment="Center"/>
2626

2727
<!-- Change List -->
28-
<Grid Grid.Row="2" ColumnDefinitions="96,*" Margin="0,0,8,16">
29-
<TextBlock Grid.Column="0"
30-
Classes="group_header_label"
31-
Margin="0"
32-
HorizontalAlignment="Right"
33-
VerticalAlignment="Top"
34-
Text="{DynamicResource Text.CommitDetail.Changes}"/>
35-
36-
<v:ChangeCollectionView Grid.Column="1"
37-
IsWorkingCopyChange="False"
38-
Margin="8,0,0,0"
39-
ViewMode="List"
40-
Changes="{Binding Changes}"
41-
ContextRequested="OnChangeListContextRequested"
42-
ChangeDoubleTapped="OnChangeDoubleTapped">
43-
<v:ChangeCollectionView.Styles>
44-
<Style Selector="TreeDataGrid">
45-
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled"/>
46-
</Style>
47-
</v:ChangeCollectionView.Styles>
48-
</v:ChangeCollectionView>
49-
</Grid>
28+
<DataGrid Grid.Row="2"
29+
Background="Transparent"
30+
ItemsSource="{Binding Changes}"
31+
SelectionMode="Single"
32+
CanUserReorderColumns="False"
33+
CanUserResizeColumns="False"
34+
CanUserSortColumns="False"
35+
IsReadOnly="True"
36+
HeadersVisibility="None"
37+
Focusable="False"
38+
RowHeight="26"
39+
Margin="80,0,8,16"
40+
HorizontalScrollBarVisibility="Disabled"
41+
VerticalScrollBarVisibility="Auto"
42+
ContextRequested="OnChangeListContextRequested"
43+
DoubleTapped="OnChangeListDoubleTapped">
44+
<DataGrid.Columns>
45+
<DataGridTemplateColumn Header="ICON">
46+
<DataGridTemplateColumn.CellTemplate>
47+
<DataTemplate>
48+
<v:ChangeStatusIcon Width="14" Height="14" IsWorkingCopyChange="False" Change="{Binding}"/>
49+
</DataTemplate>
50+
</DataGridTemplateColumn.CellTemplate>
51+
</DataGridTemplateColumn>
52+
53+
<DataGridTemplateColumn Width="*" Header="PATH">
54+
<DataGridTemplateColumn.CellTemplate>
55+
<DataTemplate>
56+
<TextBlock Classes="monospace" Text="{Binding Path}" Margin="8,0,0,0"/>
57+
</DataTemplate>
58+
</DataGridTemplateColumn.CellTemplate>
59+
</DataGridTemplateColumn>
60+
</DataGrid.Columns>
61+
</DataGrid>
5062
</Grid>
5163
</TabItem>
5264

src/Views/CommitDetail.axaml.cs

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using Avalonia.Controls;
2-
using Avalonia.Interactivity;
2+
using Avalonia.Input;
33

44
namespace SourceGit.Views
55
{
@@ -10,31 +10,33 @@ public CommitDetail()
1010
InitializeComponent();
1111
}
1212

13-
private void OnChangeListContextRequested(object sender, ContextRequestedEventArgs e)
13+
private void OnChangeListDoubleTapped(object sender, TappedEventArgs e)
1414
{
15-
if (DataContext is ViewModels.CommitDetail vm && sender is ChangeCollectionView view)
15+
if (DataContext is ViewModels.CommitDetail detail)
1616
{
17-
var selected = view.SelectedChanges;
18-
if (selected != null && selected.Count == 1)
19-
{
20-
var menu = vm.CreateChangeContextMenu(selected[0]);
21-
view.OpenContextMenu(menu);
22-
}
17+
var datagrid = sender as DataGrid;
18+
detail.ActivePageIndex = 1;
19+
detail.SelectedChanges = new () { datagrid.SelectedItem as Models.Change };
2320
}
21+
2422
e.Handled = true;
2523
}
2624

27-
private void OnChangeDoubleTapped(object sender, RoutedEventArgs e)
25+
private void OnChangeListContextRequested(object sender, ContextRequestedEventArgs e)
2826
{
29-
if (DataContext is ViewModels.CommitDetail vm && sender is ChangeCollectionView view)
27+
if (DataContext is ViewModels.CommitDetail detail)
3028
{
31-
var selected = view.SelectedChanges;
32-
if (selected != null && selected.Count == 1)
29+
var datagrid = sender as DataGrid;
30+
if (datagrid.SelectedItem == null)
3331
{
34-
vm.ActivePageIndex = 1;
35-
vm.SelectedChanges = new() { selected[0] };
32+
e.Handled = true;
33+
return;
3634
}
35+
36+
var menu = detail.CreateChangeContextMenu(datagrid.SelectedItem as Models.Change);
37+
datagrid.OpenContextMenu(menu);
3738
}
39+
3840
e.Handled = true;
3941
}
4042
}

0 commit comments

Comments
 (0)