Skip to content

Commit e9036b5

Browse files
committed
ux: re-design commit message input box
Signed-off-by: leo <longshuang@msn.cn>
1 parent 9ba0b59 commit e9036b5

File tree

4 files changed

+85
-63
lines changed

4 files changed

+85
-63
lines changed

src/Views/CommitMessageTextBox.axaml

Lines changed: 43 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -64,25 +64,57 @@
6464
Background="{DynamicResource Brush.Window}"
6565
BorderThickness="1,0,0,0"
6666
CornerRadius="0,0,4,4">
67-
<Grid ColumnDefinitions="*,Auto,Auto" Margin="0,4">
68-
<StackPanel Grid.Column="0"
67+
<Grid ColumnDefinitions="Auto,Auto,Auto,Auto,*" Margin="0,4">
68+
<Button Grid.Column="0"
69+
Classes="icon_button"
70+
Width="24"
71+
Margin="0,0,4,0" Padding="0"
72+
Click="OnOpenCommitMessagePicker"
73+
IsVisible="{Binding #ThisControl.ShowAdvancedOptions}"
74+
ToolTip.Tip="{DynamicResource Text.WorkingCopy.CommitMessageHelper}">
75+
<Path Width="12" Height="12" Data="{StaticResource Icons.Menu}"/>
76+
</Button>
77+
78+
<Button Grid.Column="1"
79+
Classes="icon_button"
80+
Width="24"
81+
Margin="0,0,4,0" Padding="0"
82+
Click="OnOpenOpenAIHelper"
83+
IsVisible="{Binding #ThisControl.ShowAdvancedOptions}"
84+
ToolTip.Tip="{DynamicResource Text.AIAssistant.Tip}">
85+
<Path Width="13" Height="13" Data="{StaticResource Icons.AIAssist}"/>
86+
</Button>
87+
88+
<Button Grid.Column="2"
89+
Classes="icon_button"
90+
Width="24"
91+
Margin="0,0,4,0" Padding="0"
92+
Click="OnOpenConventionalCommitHelper"
93+
ToolTip.Tip="{DynamicResource Text.ConventionalCommit}">
94+
<Path Width="13" Height="13" Margin="0,1,0,0" Data="{StaticResource Icons.CommitMessageGenerator}"/>
95+
</Button>
96+
97+
<Button Grid.Column="3"
98+
Classes="icon_button"
99+
Width="24"
100+
Margin="0,0,4,0" Padding="0"
101+
Click="CopyAllText"
102+
ToolTip.Tip="{DynamicResource Text.CopyAllText}">
103+
<Path Width="13" Height="13" Data="{StaticResource Icons.Copy}"/>
104+
</Button>
105+
106+
<StackPanel Grid.Column="4"
107+
Margin="0,0,6,0"
108+
HorizontalAlignment="Right"
69109
VerticalAlignment="Center"
70110
Orientation="Horizontal">
71-
<TextBlock Classes="info_label" FontSize="13" HorizontalAlignment="Left" Margin="4,0,0,0" Text="{DynamicResource Text.CommitMessageTextBox.SubjectCount}"/>
111+
<TextBlock Classes="info_label" FontSize="13" HorizontalAlignment="Left" Text="{DynamicResource Text.CommitMessageTextBox.SubjectCount}"/>
72112
<TextBlock Classes="primary" Margin="8,0,0,0" FontSize="11" Text="{Binding #ThisControl.Subject.Length}" IsVisible="{Binding #ThisControl.Subject.Length, Converter={x:Static c:IntConverters.IsSubjectLengthGood}}" VerticalAlignment="Center"/>
73113
<TextBlock Classes="primary" Margin="8,0,0,0" FontSize="11" Foreground="DarkGoldenrod" Text="{Binding #ThisControl.Subject.Length}" IsVisible="{Binding #ThisControl.Subject.Length, Converter={x:Static c:IntConverters.IsSubjectLengthBad}}" VerticalAlignment="Center"/>
74114
<TextBlock Classes="primary" FontSize="11" Text="/" VerticalAlignment="Center"/>
75115
<TextBlock Classes="primary" FontSize="11" Text="{Binding Source={x:Static vm:Preferences.Instance}, Path=SubjectGuideLength}" VerticalAlignment="Center"/>
76116
<Path Width="10" Height="10" Margin="4,0,0,0" Data="{StaticResource Icons.Error}" Fill="DarkGoldenrod" IsVisible="{Binding #ThisControl.Subject.Length, Converter={x:Static c:IntConverters.IsSubjectLengthBad}}"/>
77117
</StackPanel>
78-
79-
<Button Grid.Column="1" Width="20" Margin="0,0,4,0" Padding="0" Classes="icon_button" Click="OnOpenConventionalCommitHelper" ToolTip.Tip="{DynamicResource Text.ConventionalCommit}">
80-
<Path Width="13" Height="13" Margin="0,1,0,0" Data="{StaticResource Icons.CommitMessageGenerator}"/>
81-
</Button>
82-
83-
<Button Grid.Column="2" Width="20" Margin="0,0,4,0" Padding="0" Classes="icon_button" Click="CopyAllText" ToolTip.Tip="{DynamicResource Text.CopyAllText}">
84-
<Path Width="13" Height="13" Data="{StaticResource Icons.Copy}"/>
85-
</Button>
86118
</Grid>
87119
</Border>
88120
</Grid>

src/Views/CommitMessageTextBox.axaml.cs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ public enum TextChangeWay
5656
FromEditor,
5757
}
5858

59+
public static readonly StyledProperty<bool> ShowAdvancedOptionsProperty =
60+
AvaloniaProperty.Register<CommitMessageTextBox, bool>(nameof(ShowAdvancedOptions), false);
61+
5962
public static readonly StyledProperty<string> TextProperty =
6063
AvaloniaProperty.Register<CommitMessageTextBox, string>(nameof(Text), string.Empty);
6164

@@ -65,6 +68,12 @@ public enum TextChangeWay
6568
public static readonly StyledProperty<string> DescriptionProperty =
6669
AvaloniaProperty.Register<CommitMessageTextBox, string>(nameof(Description), string.Empty);
6770

71+
public bool ShowAdvancedOptions
72+
{
73+
get => GetValue(ShowAdvancedOptionsProperty);
74+
set => SetValue(ShowAdvancedOptionsProperty, value);
75+
}
76+
6877
public string Text
6978
{
7079
get => GetValue(TextProperty);
@@ -167,6 +176,29 @@ private void OnDescriptionTextBoxPreviewKeyDown(object _, KeyEventArgs e)
167176
}
168177
}
169178

179+
private void OnOpenCommitMessagePicker(object sender, RoutedEventArgs e)
180+
{
181+
if (sender is Button button && DataContext is ViewModels.WorkingCopy vm)
182+
{
183+
var menu = vm.CreateContextMenuForCommitMessages();
184+
menu.Placement = PlacementMode.TopEdgeAlignedLeft;
185+
menu?.Open(button);
186+
}
187+
188+
e.Handled = true;
189+
}
190+
191+
private void OnOpenOpenAIHelper(object sender, RoutedEventArgs e)
192+
{
193+
if (DataContext is ViewModels.WorkingCopy vm && sender is Control control)
194+
{
195+
var menu = vm.CreateContextForOpenAI();
196+
menu?.Open(control);
197+
}
198+
199+
e.Handled = true;
200+
}
201+
170202
private void OnOpenConventionalCommitHelper(object _, RoutedEventArgs e)
171203
{
172204
var dialog = new ConventionalCommitMessageBuilder()

src/Views/WorkingCopy.axaml

Lines changed: 10 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -230,41 +230,21 @@
230230
Background="Transparent"/>
231231

232232
<!-- Commit Message -->
233-
<v:CommitMessageTextBox Grid.Row="2" Text="{Binding CommitMessage, Mode=TwoWay}"/>
233+
<v:CommitMessageTextBox Grid.Row="2" ShowAdvancedOptions="True" Text="{Binding CommitMessage, Mode=TwoWay}"/>
234234

235235
<!-- Commit Options -->
236-
<Grid Grid.Row="3" Margin="0,6,0,0" ColumnDefinitions="Auto,Auto,Auto,Auto,*,Auto,Auto,Auto">
237-
<Button Grid.Column="0"
238-
Classes="icon_button"
239-
Margin="4,0,0,0" Padding="0"
240-
Click="OnOpenCommitMessagePicker"
241-
ToolTip.Tip="{DynamicResource Text.WorkingCopy.CommitMessageHelper}"
242-
ToolTip.Placement="Top"
243-
ToolTip.VerticalOffset="0">
244-
<Path Width="12" Height="12" Data="{StaticResource Icons.Menu}"/>
245-
</Button>
246-
247-
<Button Grid.Column="1"
248-
Classes="icon_button"
249-
Margin="4,2,0,0"
250-
Click="OnOpenOpenAIHelper"
251-
ToolTip.Tip="{DynamicResource Text.AIAssistant.Tip}"
252-
ToolTip.Placement="Top"
253-
ToolTip.VerticalOffset="0">
254-
<Path Width="15" Height="15" Data="{StaticResource Icons.AIAssist}"/>
255-
</Button>
256-
257-
<CheckBox Grid.Column="2"
236+
<Grid Grid.Row="3" Margin="0,6,0,0" ColumnDefinitions="Auto,Auto,*,Auto,Auto,Auto">
237+
<CheckBox Grid.Column="0"
258238
Height="24"
259-
Margin="8,0,0,0"
239+
Margin="1,0,0,0"
260240
HorizontalAlignment="Left"
261241
IsChecked="{Binding EnableSignOff, Mode=TwoWay}"
262242
Content="{DynamicResource Text.WorkingCopy.SignOff}"
263243
ToolTip.Tip="--signoff"
264244
ToolTip.Placement="Top"
265245
ToolTip.VerticalOffset="0"/>
266246

267-
<CheckBox Grid.Column="3"
247+
<CheckBox Grid.Column="1"
268248
Height="24"
269249
Margin="12,0,0,0"
270250
HorizontalAlignment="Left"
@@ -274,12 +254,12 @@
274254
ToolTip.Placement="Top"
275255
ToolTip.VerticalOffset="0"/>
276256

277-
<v:LoadingIcon Grid.Column="4"
257+
<v:LoadingIcon Grid.Column="2"
278258
Width="18" Height="18"
279259
HorizontalAlignment="Right"
280260
IsVisible="{Binding IsCommitting}"/>
281261

282-
<SplitButton Grid.Column="5"
262+
<SplitButton Grid.Column="3"
283263
Content="{DynamicResource Text.Repository.Continue}"
284264
Height="28"
285265
Margin="8,0,0,0"
@@ -301,7 +281,7 @@
301281
</SplitButton.Flyout>
302282
</SplitButton>
303283

304-
<Button Grid.Column="5"
284+
<Button Grid.Column="3"
305285
Classes="flat primary"
306286
Content="{DynamicResource Text.WorkingCopy.Commit}"
307287
Height="28"
@@ -334,7 +314,7 @@
334314
</Button>
335315

336316
<!-- Invisible button just to add another hotkey `Ctrl+Shift+Enter` to commit with auto-stage -->
337-
<Button Grid.Column="6"
317+
<Button Grid.Column="4"
338318
Width="0" Height="0"
339319
Background="Transparent"
340320
Command="{Binding CommitWithAutoStage}"
@@ -347,7 +327,7 @@
347327
</Button.IsEnabled>
348328
</Button>
349329

350-
<Button Grid.Column="7"
330+
<Button Grid.Column="5"
351331
Classes="flat"
352332
Content="{DynamicResource Text.WorkingCopy.CommitAndPush}"
353333
Height="28"

src/Views/WorkingCopy.axaml.cs

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,6 @@ private void OnMainLayoutSizeChanged(object sender, SizeChangedEventArgs e)
2525
layout.WorkingCopyLeftWidth = new GridLength(maxLeft, GridUnitType.Pixel);
2626
}
2727

28-
private void OnOpenCommitMessagePicker(object sender, RoutedEventArgs e)
29-
{
30-
if (sender is Button button && DataContext is ViewModels.WorkingCopy vm)
31-
{
32-
var menu = vm.CreateContextMenuForCommitMessages();
33-
menu.Placement = PlacementMode.TopEdgeAlignedLeft;
34-
menu?.Open(button);
35-
e.Handled = true;
36-
}
37-
}
38-
3928
private void OnUnstagedContextRequested(object sender, ContextRequestedEventArgs e)
4029
{
4130
if (DataContext is ViewModels.WorkingCopy vm && sender is Control control)
@@ -133,16 +122,5 @@ private void OnUnstageSelectedButtonClicked(object _, RoutedEventArgs e)
133122

134123
e.Handled = true;
135124
}
136-
137-
private void OnOpenOpenAIHelper(object sender, RoutedEventArgs e)
138-
{
139-
if (DataContext is ViewModels.WorkingCopy vm && sender is Control control)
140-
{
141-
var menu = vm.CreateContextForOpenAI();
142-
menu?.Open(control);
143-
}
144-
145-
e.Handled = true;
146-
}
147125
}
148126
}

0 commit comments

Comments
 (0)