Skip to content

Commit 71b5964

Browse files
authored
Package Item ToolTips show automatically when focusing on a package (#7001)
1 parent af9df1d commit 71b5964

5 files changed

Lines changed: 82 additions & 81 deletions

File tree

src/NuGet.Clients/NuGet.PackageManagement.UI/InfiniteScrollListItemStyleSelector.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ private void Init(ItemsControl infiniteScrollList)
2424
{
2525
_packageItemStyle.Setters.Add(new Setter(InfiniteScrollList.FocusVisualStyleProperty, infiniteScrollList.FindResource("MarginFocusVisualStyle")));
2626
_packageItemStyle.Setters.Add(new Setter(InfiniteScrollList.TemplateProperty, infiniteScrollList.FindResource("ListBoxItemTemplate")));
27+
_packageItemStyle.Setters.Add(new Setter(InfiniteScrollList.ToolTipProperty, infiniteScrollList.FindResource("PackageToolTipTemplate")));
2728
}
2829
}
2930
}

src/NuGet.Clients/NuGet.PackageManagement.UI/Resources/Resources.xaml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -173,11 +173,6 @@
173173

174174
<Style x:Key="{x:Type ProgressBar}" TargetType="{x:Type ProgressBar}" BasedOn="{StaticResource {x:Static vs:VsResourceKeys.ProgressBarStyleKey}}"/>
175175

176-
<Style x:Key="TooltipStyle" TargetType="{x:Type TextBlock}">
177-
<Setter Property="TextWrapping" Value="Wrap" />
178-
<Setter Property="MaxWidth" Value="300" />
179-
</Style>
180-
181176
<Style x:Key="ToolBarButtonStyle" BasedOn="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" TargetType="{x:Type Button}">
182177
<Setter Property="FocusVisualStyle" Value="{StaticResource ControlsFocusVisualStyle}" />
183178
</Style>

src/NuGet.Clients/NuGet.PackageManagement.UI/ViewModels/PackageItemViewModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public PackageItemViewModel(INuGetSearchService searchService, PackageModel pack
7979

8080
public ImmutableList<KnownOwnerViewModel> KnownOwnerViewModels { get; internal set; }
8181

82-
public string Owner => string.Join(",", _packageModel.OwnersList ?? []);
82+
public string Owner => string.Join(", ", _packageModel.OwnersList ?? []);
8383

8484
public string Author => _packageModel.Authors;
8585

src/NuGet.Clients/NuGet.PackageManagement.UI/Xamls/InfiniteScrollList.xaml

Lines changed: 80 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,10 @@
2424
x:Key="PackageLevelToGroupNameConverter" />
2525

2626
<nuget:PackageLevelGroupToBooleanConverter
27-
x:Key="PackageLevelGroupToBooleanConverter" />
27+
x:Key="PackageLevelGroupToBooleanConverter" />
28+
29+
<nuget:NullToBooleanConverter
30+
x:Key="NullToBooleanConverter" />
2831

2932
<DataTemplate
3033
DataType="{x:Type nuget:PackageDependencyMetadata}">
@@ -236,7 +239,7 @@
236239
TargetType="{x:Type ListBoxItem}"
237240
BasedOn="{StaticResource listBoxItemStyle}">
238241
<!--
239-
Note that we cannot set the template property in xaml list this:
242+
Note that we cannot set the template property in xaml like this:
240243
241244
<Setter Property="Template" Value="{StaticResource ListBoxItemTemplate}" />
242245
@@ -246,6 +249,81 @@
246249
-->
247250
</Style>
248251

252+
<Style x:Key="TooltipStyle" TargetType="{x:Type TextBlock}">
253+
<Setter Property="TextWrapping" Value="Wrap" />
254+
<Setter Property="MaxWidth" Value="300" />
255+
</Style>
256+
257+
<Style x:Key="PackageDescriptionToolTipStyle" TargetType="{x:Type TextBlock}" BasedOn="{StaticResource TooltipStyle}">
258+
<Setter Property="Visibility" Value="Collapsed" />
259+
<Style.Triggers>
260+
<DataTrigger Binding="{Binding Path=PackageLevel}" Value="TopLevel">
261+
<Setter Property="Visibility" Value="Visible" />
262+
</DataTrigger>
263+
</Style.Triggers>
264+
</Style>
265+
266+
<Style x:Key="TransitiveInfoToolTipStyle" TargetType="{x:Type TextBlock}" BasedOn="{StaticResource TooltipStyle}">
267+
<Setter Property="Visibility" Value="Visible" />
268+
<Style.Triggers>
269+
<DataTrigger Binding="{Binding Path=TransitiveToolTipMessage, Converter={StaticResource NullToBooleanConverter}}" Value="True">
270+
<Setter Property="Visibility" Value="Collapsed" />
271+
</DataTrigger>
272+
</Style.Triggers>
273+
</Style>
274+
275+
<ToolTip x:Key="PackageToolTipTemplate">
276+
<StackPanel>
277+
<TextBlock Style="{StaticResource TooltipStyle}">
278+
<Run
279+
Text="{Binding Id, Mode=OneTime}"
280+
FontWeight="Bold" /> <Run Text="{Binding ByOwnerOrAuthor, Mode=OneTime}"/>
281+
</TextBlock>
282+
<TextBlock Style="{StaticResource PackageDescriptionToolTipStyle}">
283+
<Run Text="{Binding Summary, Mode=OneTime}" />
284+
</TextBlock>
285+
<TextBlock Style="{StaticResource TransitiveInfoToolTipStyle}">
286+
<Run
287+
Text="{x:Static nuget:Resources.ToolTip_TransitiveDependency}"
288+
FontWeight="Bold" />
289+
<Run Text="{Binding TransitiveToolTipMessage, Mode=OneTime}" />
290+
<Run>
291+
<Run.Style>
292+
<Style TargetType="Run">
293+
<Style.Triggers>
294+
<DataTrigger Binding="{Binding Path=PackageLevel}" Value="Transitive">
295+
<Setter Property="Text" Value="&#x0a;&#x0a;" />
296+
</DataTrigger>
297+
</Style.Triggers>
298+
</Style>
299+
</Run.Style>
300+
</Run><Run>
301+
<Run.Style>
302+
<Style TargetType="Run">
303+
<Style.Triggers>
304+
<DataTrigger Binding="{Binding Path=PackageLevel}" Value="Transitive">
305+
<Setter Property="Text" Value="{x:Static nuget:Resources.ToolTip_TransitivePathHelp}" />
306+
</DataTrigger>
307+
</Style.Triggers>
308+
</Style>
309+
</Run.Style>
310+
</Run>
311+
<Run>
312+
<Run.Style>
313+
<Style TargetType="Run">
314+
<Style.Triggers>
315+
<DataTrigger Binding="{Binding Path=PackageLevel}" Value="Transitive">
316+
<Setter Property="Text" Value="aka.ms/dotnet/nuget/why"/>
317+
<Setter Property="FontWeight" Value="Bold"/>
318+
</DataTrigger>
319+
</Style.Triggers>
320+
</Style>
321+
</Run.Style>
322+
</Run>
323+
</TextBlock>
324+
</StackPanel>
325+
</ToolTip>
326+
249327
<Style TargetType="FrameworkElement" x:Key="FadeAnimationStyle">
250328
<Setter Property="Visibility" Value="Hidden"/>
251329
<Style.Triggers>

src/NuGet.Clients/NuGet.PackageManagement.UI/Xamls/PackageItemControl.xaml

Lines changed: 0 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@
2323
x:Key="SummaryToStringConverter" />
2424
<nuget:StringFormatConverter
2525
x:Key="StringFormatConverter" />
26-
<nuget:NullToBooleanConverter
27-
x:Key="NullToBooleanConverter" />
2826

2927
<!--Style for warning tooltip text-->
3028
<Style TargetType="TextBlock" x:Key="VulnerabilitiesCountText">
@@ -88,24 +86,6 @@
8886
</Trigger>
8987
</Style.Triggers>
9088
</Style>
91-
92-
<Style x:Key="PackageDescriptionToolTipStyle" TargetType="{x:Type TextBlock}" BasedOn="{StaticResource TooltipStyle}">
93-
<Setter Property="Visibility" Value="Collapsed" />
94-
<Style.Triggers>
95-
<DataTrigger Binding="{Binding Path=PackageLevel}" Value="TopLevel">
96-
<Setter Property="Visibility" Value="Visible" />
97-
</DataTrigger>
98-
</Style.Triggers>
99-
</Style>
100-
101-
<Style x:Key="TransitiveInfoToolTipStyle" TargetType="{x:Type TextBlock}" BasedOn="{StaticResource TooltipStyle}">
102-
<Setter Property="Visibility" Value="Visible" />
103-
<Style.Triggers>
104-
<DataTrigger Binding="{Binding Path=TransitiveToolTipMessage, Converter={StaticResource NullToBooleanConverter}}" Value="True">
105-
<Setter Property="Visibility" Value="Collapsed" />
106-
</DataTrigger>
107-
</Style.Triggers>
108-
</Style>
10989
</ResourceDictionary>
11090
</UserControl.Resources>
11191

@@ -250,59 +230,6 @@
250230
FormatStringAlternative="{x:Static nuget:Resources.Deprecation_PackageItemMessageAlternative}"
251231
DataContext="{Binding DeprecationMetadata}" />
252232
</Grid>
253-
254-
<Grid.ToolTip>
255-
<StackPanel>
256-
<TextBlock
257-
Style="{StaticResource TooltipStyle}">
258-
<Run
259-
Text="{Binding Id, Mode=OneTime}"
260-
FontWeight="Bold" /> <Run Text="{Binding ByOwnerOrAuthor, Mode=OneTime}"/>
261-
</TextBlock>
262-
<TextBlock Style="{StaticResource PackageDescriptionToolTipStyle}">
263-
<Run Text="{Binding Summary, Mode=OneTime}" />
264-
</TextBlock>
265-
<TextBlock Style="{StaticResource TransitiveInfoToolTipStyle}">
266-
<Run
267-
Text="{x:Static nuget:Resources.ToolTip_TransitiveDependency}"
268-
FontWeight="Bold" />
269-
<Run Text="{Binding TransitiveToolTipMessage, Mode=OneTime}" />
270-
<Run>
271-
<Run.Style>
272-
<Style TargetType="Run">
273-
<Style.Triggers>
274-
<DataTrigger Binding="{Binding Path=PackageLevel}" Value="Transitive">
275-
<Setter Property="Text" Value="&#x0a;&#x0a;" />
276-
</DataTrigger>
277-
</Style.Triggers>
278-
</Style>
279-
</Run.Style>
280-
</Run><Run>
281-
<Run.Style>
282-
<Style TargetType="Run">
283-
<Style.Triggers>
284-
<DataTrigger Binding="{Binding Path=PackageLevel}" Value="Transitive">
285-
<Setter Property="Text" Value="{x:Static nuget:Resources.ToolTip_TransitivePathHelp}" />
286-
</DataTrigger>
287-
</Style.Triggers>
288-
</Style>
289-
</Run.Style>
290-
</Run>
291-
<Run>
292-
<Run.Style>
293-
<Style TargetType="Run">
294-
<Style.Triggers>
295-
<DataTrigger Binding="{Binding Path=PackageLevel}" Value="Transitive">
296-
<Setter Property="Text" Value="aka.ms/dotnet/nuget/why"/>
297-
<Setter Property="FontWeight" Value="Bold"/>
298-
</DataTrigger>
299-
</Style.Triggers>
300-
</Style>
301-
</Run.Style>
302-
</Run>
303-
</TextBlock>
304-
</StackPanel>
305-
</Grid.ToolTip>
306233
</Grid>
307234

308235
<Grid

0 commit comments

Comments
 (0)