Browse Source

When list of AddIns (installed or in repository) gets updated, view is trying to restore the previous item selection.

newNRILSpyDebugger
Andreas Weizel 12 years ago
parent
commit
db1ecf4a51
  1. 8
      src/AddIns/Misc/AddInManager2/Project/Src/View/AddInsView.xaml
  2. 6
      src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AddInPackageViewModelBase.cs
  3. 20
      src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AddInsViewModelBase.cs
  4. 2
      src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/NuGetAddInsViewModelBase.cs

8
src/AddIns/Misc/AddInManager2/Project/Src/View/AddInsView.xaml

@ -119,6 +119,10 @@
</Style.Triggers>--> </Style.Triggers>-->
</Style> </Style>
<Style x:Key="packageListBoxItemContainerStyle" TargetType="{x:Type ListBoxItem}">
<Setter Property="IsSelected" Value="{Binding Mode=TwoWay, Path=IsSelected}"/>
</Style>
<DataTemplate x:Key="PackageListBoxItemTemplate"> <DataTemplate x:Key="PackageListBoxItemTemplate">
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
@ -491,7 +495,7 @@
<RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<!-- <TextBlock <!-- <TextBlock
Grid.Row="0" Grid.Row="0"
Grid.Column="0" Grid.Column="0"
VerticalAlignment="Center" VerticalAlignment="Center"
@ -550,8 +554,10 @@
x:Name="allPackagesListBox" x:Name="allPackagesListBox"
Grid.Row="0" Grid.Row="0"
SelectedIndex="0" SelectedIndex="0"
IsSynchronizedWithCurrentItem="true"
ItemTemplate="{StaticResource PackageListBoxItemTemplate}" ItemTemplate="{StaticResource PackageListBoxItemTemplate}"
ItemsSource="{Binding Path=AddInPackages}" ItemsSource="{Binding Path=AddInPackages}"
ItemContainerStyle="{StaticResource packageListBoxItemContainerStyle}"
HorizontalContentAlignment="Stretch" HorizontalContentAlignment="Stretch"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"/> ScrollViewer.HorizontalScrollBarVisibility="Disabled"/>
<ProgressBar <ProgressBar

6
src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AddInPackageViewModelBase.cs

@ -252,6 +252,12 @@ namespace ICSharpCode.AddInManager2.ViewModel
return false; return false;
} }
} }
public bool IsSelected
{
get;
set;
}
public virtual void AddPackage() public virtual void AddPackage()
{ {

20
src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AddInsViewModelBase.cs

@ -23,6 +23,7 @@ namespace ICSharpCode.AddInManager2.ViewModel
private bool _isReadingPackages; private bool _isReadingPackages;
private bool _isExpandedinView; private bool _isExpandedinView;
private bool _showPackageSources; private bool _showPackageSources;
private string _lastSelectedId;
private ObservableCollection<PackageRepository> _packageRepositories; private ObservableCollection<PackageRepository> _packageRepositories;
@ -289,9 +290,11 @@ namespace ICSharpCode.AddInManager2.ViewModel
protected void UpdatePackageViewModels(IEnumerable<AddInPackageViewModelBase> newPackageViewModels) protected void UpdatePackageViewModels(IEnumerable<AddInPackageViewModelBase> newPackageViewModels)
{ {
StoreSelection();
ClearPackages(); ClearPackages();
NuGet.CollectionExtensions.AddRange(AddInPackages, newPackageViewModels); NuGet.CollectionExtensions.AddRange(AddInPackages, newPackageViewModels);
UpdateInstallationState(); UpdateInstallationState();
RestoreSelection();
} }
protected void ClearPackages() protected void ClearPackages()
@ -545,5 +548,22 @@ namespace ICSharpCode.AddInManager2.ViewModel
// Update the list of package sources // Update the list of package sources
UpdatePackageSources(); UpdatePackageSources();
} }
private void StoreSelection()
{
AddInPackageViewModelBase selectedModel = AddInPackages.FirstOrDefault(m => m.IsSelected);
if (selectedModel != null) {
_lastSelectedId = selectedModel.Id;
}
}
private void RestoreSelection()
{
AddInPackageViewModelBase modelToSelect = AddInPackages.FirstOrDefault(m => m.Id == _lastSelectedId);
if (modelToSelect != null) {
modelToSelect.IsSelected = true;
}
_lastSelectedId = null;
}
} }
} }

2
src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/NuGetAddInsViewModelBase.cs

@ -49,7 +49,7 @@ namespace ICSharpCode.AddInManager2.ViewModel
{ {
IsReadingPackages = true; IsReadingPackages = true;
HasError = false; HasError = false;
ClearPackages(); // ClearPackages();
CancelReadPackagesTask(); CancelReadPackagesTask();
CreateReadPackagesTask(); CreateReadPackagesTask();
_task.Start(); _task.Start();

Loading…
Cancel
Save