Browse Source

- Some improvements in AddInManager's UI: Direct updates of repository list when edited in options, added captions in front of repository combobox and search input field.

- Migration of some forgotten SD service references to SD 5.
pull/32/head
Andreas Weizel 13 years ago
parent
commit
a384b58769
  1. 2
      src/AddIns/Misc/AddInManager2/Project/AddInManager2.addin
  2. 6
      src/AddIns/Misc/AddInManager2/Project/Resources/StringResources.resx
  3. 2
      src/AddIns/Misc/AddInManager2/Project/Src/AddInManagerServices.cs
  4. 10
      src/AddIns/Misc/AddInManager2/Project/Src/Model/AddInManagerEvents.cs
  5. 4
      src/AddIns/Misc/AddInManager2/Project/Src/Model/AddInSetup.cs
  6. 3
      src/AddIns/Misc/AddInManager2/Project/Src/Model/Interfaces/IAddInManagerEvents.cs
  7. 26
      src/AddIns/Misc/AddInManager2/Project/Src/Model/PackageRepositories.cs
  8. 24
      src/AddIns/Misc/AddInManager2/Project/Src/View/AddInsView.xaml
  9. 2
      src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AddInManagerViewModel.cs
  10. 41
      src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AddInsViewModelBase.cs
  11. 3
      src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AvailableAddInsViewModel.cs
  12. 9
      src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/InstalledAddInsViewModel.cs
  13. 9
      src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/NuGetPackageViewModel.cs
  14. 19
      src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/OfflineAddInViewModel.cs
  15. 1
      src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/PackageRepositoriesViewModel.cs
  16. 3
      src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/UpdatedAddInsViewModel.cs

2
src/AddIns/Misc/AddInManager2/Project/AddInManager2.addin

@ -23,7 +23,7 @@ @@ -23,7 +23,7 @@
<OptionPanel
id="AddInManager2"
label="${res:AddInManager2.OptionPanel.Tree.AddIns}"
insertafter="FormsDesignerOptions">
insertafter="ToolsOptions">
<OptionPanel
id="AddInRepositories"
label="${res:AddInManager2.OptionPanel.Tree.Repositories}"

6
src/AddIns/Misc/AddInManager2/Project/Resources/StringResources.resx

@ -245,4 +245,10 @@ If you do not agree to the license terms click "I Decline".</value> @@ -245,4 +245,10 @@ If you do not agree to the license terms click "I Decline".</value>
The application will try to download and install them, as well. Do you want to continue?</value>
</data>
<data name="AddInManager2.AddInsView.Search" xml:space="preserve">
<value>Search:</value>
</data>
<data name="AddInManager2.AddInsView.Repository" xml:space="preserve">
<value>Repository:</value>
</data>
</root>

2
src/AddIns/Misc/AddInManager2/Project/Src/AddInManagerServices.cs

@ -45,7 +45,7 @@ namespace ICSharpCode.AddInManager2 @@ -45,7 +45,7 @@ namespace ICSharpCode.AddInManager2
{
_container = new AddInManagerServiceContainer();
_container.Events = new AddInManagerEvents();
_container.Repositories = new PackageRepositories();
_container.Repositories = new PackageRepositories(_container.Events);
_container.NuGet = new NuGetPackageManager(_container.Repositories, _container.Events);
_container.Setup = new AddInSetup(_container.Events, _container.NuGet);
}

10
src/AddIns/Misc/AddInManager2/Project/Src/Model/AddInManagerEvents.cs

@ -100,5 +100,15 @@ namespace ICSharpCode.AddInManager2.Model @@ -100,5 +100,15 @@ namespace ICSharpCode.AddInManager2.Model
AcceptLicenses(this, e);
}
}
public event EventHandler<EventArgs> PackageSourcesChanged;
public void OnPackageSourcesChanged(EventArgs e)
{
if (PackageSourcesChanged != null)
{
PackageSourcesChanged(this, e);
}
}
}
}

4
src/AddIns/Misc/AddInManager2/Project/Src/Model/AddInSetup.cs

@ -108,7 +108,7 @@ namespace ICSharpCode.AddInManager2.Model @@ -108,7 +108,7 @@ namespace ICSharpCode.AddInManager2.Model
{
if (addIn.Manifest.PrimaryIdentity == null)
{
throw new AddInLoadException(ResourceService.GetString("AddInManager.AddInMustHaveIdentity"));
throw new AddInLoadException(SD.ResourceService.GetString("AddInManager.AddInMustHaveIdentity"));
}
// Try to find this AddIn in current registry
@ -178,7 +178,7 @@ namespace ICSharpCode.AddInManager2.Model @@ -178,7 +178,7 @@ namespace ICSharpCode.AddInManager2.Model
AddIn addIn = AddIn.Load(SD.AddInTree, addInManifestFile);
if (addIn.Manifest.PrimaryIdentity == null)
{
throw new AddInLoadException(ResourceService.GetString("AddInManager.AddInMustHaveIdentity"));
throw new AddInLoadException(SD.ResourceService.GetString("AddInManager.AddInMustHaveIdentity"));
}
// Try to find this AddIn in current registry

3
src/AddIns/Misc/AddInManager2/Project/Src/Model/Interfaces/IAddInManagerEvents.cs

@ -37,5 +37,8 @@ namespace ICSharpCode.AddInManager2.Model @@ -37,5 +37,8 @@ namespace ICSharpCode.AddInManager2.Model
event EventHandler<AcceptLicensesEventArgs> AcceptLicenses;
void OnAcceptLicenses(AcceptLicensesEventArgs e);
event EventHandler<EventArgs> PackageSourcesChanged;
void OnPackageSourcesChanged(EventArgs e);
}
}

26
src/AddIns/Misc/AddInManager2/Project/Src/Model/PackageRepositories.cs

@ -3,6 +3,8 @@ @@ -3,6 +3,8 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.Linq;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
@ -19,10 +21,15 @@ namespace ICSharpCode.AddInManager2.Model @@ -19,10 +21,15 @@ namespace ICSharpCode.AddInManager2.Model
private IPackageRepository _activeRepository;
private PackageSource _activeSource;
private List<PackageSource> _registeredPackageSources;
private IAddInManagerEvents _events;
public PackageRepositories()
public PackageRepositories(IAddInManagerEvents events)
{
_events = events;
_registeredPackageSources = new List<PackageSource>();
LoadPackageSources();
UpdateCurrentRepository();
UpdateActiveRepository();
@ -68,6 +75,9 @@ namespace ICSharpCode.AddInManager2.Model @@ -68,6 +75,9 @@ namespace ICSharpCode.AddInManager2.Model
_registeredPackageSources.Clear();
_registeredPackageSources.AddRange(value);
SavePackageSources();
// Send around the update
_events.OnPackageSourcesChanged(new EventArgs());
}
}
@ -92,16 +102,19 @@ namespace ICSharpCode.AddInManager2.Model @@ -92,16 +102,19 @@ namespace ICSharpCode.AddInManager2.Model
{
// If we don't have any repositories, so add the default one
PackageSource defaultPackageSource =
new PackageSource("https://nuget.org/api/v2", ResourceService.GetString("AddInManager2.DefaultRepository"));
new PackageSource("https://nuget.org/api/v2", SD.ResourceService.GetString("AddInManager2.DefaultRepository"));
_registeredPackageSources.Add(defaultPackageSource);
SavePackageSources();
}
// Send around the update
_events.OnPackageSourcesChanged(new EventArgs());
}
private void SavePackageSources()
{
var savedRepositories = _registeredPackageSources.Select(ps => ps.Name + "=" + ps.Source);
PropertyService.Set<string[]>("AddInManager2.PackageRepositories", savedRepositories.ToArray());
SD.PropertyService.Set<string[]>("AddInManager2.PackageRepositories", savedRepositories.ToArray());
UpdateCurrentRepository();
}
@ -113,11 +126,16 @@ namespace ICSharpCode.AddInManager2.Model @@ -113,11 +126,16 @@ namespace ICSharpCode.AddInManager2.Model
{
_currentRepository = new AggregateRepository(repositories);
}
else
{
// We have no repositories in configuration -> then we can't have an active source
ActiveSource = null;
}
}
private void UpdateActiveRepository()
{
if ((_activeSource == null) && (_registeredPackageSources != null))
if ((_activeSource == null) && (_registeredPackageSources != null) && _registeredPackageSources.Any())
{
_activeSource = _registeredPackageSources[0];
}

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

@ -419,6 +419,7 @@ @@ -419,6 +419,7 @@
Visibility="{Binding Path=IsSearchable, Converter={StaticResource BoolToVisibility}}"
Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
@ -426,17 +427,34 @@ @@ -426,17 +427,34 @@
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock
Grid.Row="0"
Grid.Column="0"
VerticalAlignment="Center"
Margin="2, 0, 5, 2"
Visibility="{Binding Path=ShowPackageSources, Converter={StaticResource BoolToVisibility}}"
Text="{core:Localize AddInManager2.AddInsView.Repository}" />
<ComboBox
Grid.Row="0"
Grid.Column="1"
Grid.ColumnSpan="2"
Margin="0, 0, 0, 2"
Margin="2, 0, 0, 2"
SelectedItem="{Binding Path=SelectedPackageSource}"
ItemsSource="{Binding Path=PackageSources}"
ItemTemplate="{StaticResource PackageSourceComboBoxItemTemplate}"
Visibility="{Binding Path=ShowPackageSources, Converter={StaticResource BoolToVisibility}}"/>
<TextBox
<TextBlock
Grid.Row="1"
Grid.Column="0"
VerticalAlignment="Center"
Margin="2, 0, 5, 2"
Text="{core:Localize AddInManager2.AddInsView.Search}" />
<TextBox
Grid.Row="1"
Grid.Column="1"
Margin="2, 0, 0, 2"
Text="{Binding Path=SearchTerms, UpdateSourceTrigger=PropertyChanged}">
<TextBox.InputBindings>
<KeyBinding
@ -446,7 +464,7 @@ @@ -446,7 +464,7 @@
</TextBox>
<TextBlock
Grid.Row="1"
Grid.Column="1"
Grid.Column="2"
Margin="4">
<Hyperlink
TextDecorations="{x:Null}"

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

@ -23,7 +23,7 @@ namespace ICSharpCode.AddInManager2.ViewModel @@ -23,7 +23,7 @@ namespace ICSharpCode.AddInManager2.ViewModel
public AddInManagerViewModel()
{
// Visuals
this.Title = ResourceService.GetString("AddInManager.Title");
this.Title = SD.ResourceService.GetString("AddInManager.Title");
// Add event handlers
AddInManager.Events.OperationStarted += AddInManager_Events_OperationStarted;

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

@ -19,13 +19,21 @@ namespace ICSharpCode.AddInManager2.ViewModel @@ -19,13 +19,21 @@ namespace ICSharpCode.AddInManager2.ViewModel
private int _highlightCount;
private string _title;
private ObservableCollection<PackageSource> _packageSources;
public AddInsViewModelBase()
{
// Initialization of internal lists
_pages = new Pages();
_highlightCount = 0;
AddInPackages = new ObservableCollection<AddInPackageViewModelBase>();
_packageSources = new ObservableCollection<PackageSource>();
ErrorMessage = String.Empty;
// Update package sources list and ensure that it's updated automatically from now
UpdatePackageSources();
AddInManager.Events.PackageSourcesChanged += AddInManager_Events_PackageSourcesChanged;
CreateCommands();
}
@ -382,14 +390,29 @@ namespace ICSharpCode.AddInManager2.ViewModel @@ -382,14 +390,29 @@ namespace ICSharpCode.AddInManager2.ViewModel
set;
}
public IEnumerable<PackageSource> PackageSources
public ObservableCollection<PackageSource> PackageSources
{
get
{
foreach (PackageSource packageSource in AddInManager.Repositories.RegisteredPackageSources)
{
yield return packageSource;
}
return _packageSources;
}
}
private void UpdatePackageSources()
{
PackageSource oldValue = SelectedPackageSource;
// Refill package sources list
_packageSources.Clear();
foreach (PackageSource packageSource in AddInManager.Repositories.RegisteredPackageSources)
{
_packageSources.Add(packageSource);
}
// Try to select the same active source, again
if ((oldValue != null) && _packageSources.Contains(oldValue) && (oldValue != SelectedPackageSource))
{
SelectedPackageSource = oldValue;
}
}
@ -403,6 +426,7 @@ namespace ICSharpCode.AddInManager2.ViewModel @@ -403,6 +426,7 @@ namespace ICSharpCode.AddInManager2.ViewModel
{
AddInManager.Repositories.ActiveSource = value;
ReadPackages();
OnPropertyChanged(m => m.SelectedPackageSource);
}
}
@ -426,5 +450,12 @@ namespace ICSharpCode.AddInManager2.ViewModel @@ -426,5 +450,12 @@ namespace ICSharpCode.AddInManager2.ViewModel
packageViewModel.UpdateInstallationState();
}
}
private void AddInManager_Events_PackageSourcesChanged(object sender, EventArgs e)
{
// Update the list of package sources
UpdatePackageSources();
}
}
}

3
src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/AvailableAddInsViewModel.cs

@ -10,6 +10,7 @@ using System.Text; @@ -10,6 +10,7 @@ using System.Text;
using System.Windows.Input;
using ICSharpCode.AddInManager2.Model;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using NuGet;
namespace ICSharpCode.AddInManager2.ViewModel
@ -21,7 +22,7 @@ namespace ICSharpCode.AddInManager2.ViewModel @@ -21,7 +22,7 @@ namespace ICSharpCode.AddInManager2.ViewModel
{
IsSearchable = true;
ShowPackageSources = true;
Title = ResourceService.GetString("AddInManager2.Views.Available");
Title = SD.ResourceService.GetString("AddInManager2.Views.Available");
AddInManager.Events.AddInInstalled += AddInInstallationStateChanged;
AddInManager.Events.AddInUninstalled += AddInInstallationStateChanged;

9
src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/InstalledAddInsViewModel.cs

@ -10,6 +10,7 @@ using System.Text; @@ -10,6 +10,7 @@ using System.Text;
using System.Windows.Input;
using ICSharpCode.AddInManager2.Model;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using Microsoft.Win32;
using NuGet;
@ -22,7 +23,7 @@ namespace ICSharpCode.AddInManager2.ViewModel @@ -22,7 +23,7 @@ namespace ICSharpCode.AddInManager2.ViewModel
{
AllowInstallFromArchive = true;
HasFilterForPreinstalled = true;
Title = ResourceService.GetString("AddInManager2.Views.Installed");
Title = SD.ResourceService.GetString("AddInManager2.Views.Installed");
// Load preinstalled AddIn filter
LoadPreinstalledAddInFilter();
@ -139,18 +140,18 @@ namespace ICSharpCode.AddInManager2.ViewModel @@ -139,18 +140,18 @@ namespace ICSharpCode.AddInManager2.ViewModel
private void LoadPreinstalledAddInFilter()
{
ShowPreinstalledAddIns = PropertyService.Get<bool>("AddInManager2.ShowPreinstalledAddIns", false);
ShowPreinstalledAddIns = SD.PropertyService.Get<bool>("AddInManager2.ShowPreinstalledAddIns", false);
}
private void SavePreinstalledAddInFilter()
{
PropertyService.Set<bool>("AddInManager2.ShowPreinstalledAddIns", ShowPreinstalledAddIns);
SD.PropertyService.Set<bool>("AddInManager2.ShowPreinstalledAddIns", ShowPreinstalledAddIns);
}
protected override void InstallFromArchive()
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = ResourceService.GetString("AddInManager2.SDAddInFileFilter");
dlg.Filter = SD.ResourceService.GetString("AddInManager2.SDAddInFileFilter");
dlg.Multiselect = true;
var showDialogResult = dlg.ShowDialog();
if (showDialogResult.HasValue && showDialogResult.Value)

9
src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/NuGetPackageViewModel.cs

@ -8,6 +8,7 @@ using System.Linq; @@ -8,6 +8,7 @@ using System.Linq;
using System.Windows.Input;
using ICSharpCode.AddInManager2.Model;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using NuGet;
namespace ICSharpCode.AddInManager2.ViewModel
@ -214,20 +215,20 @@ namespace ICSharpCode.AddInManager2.ViewModel @@ -214,20 +215,20 @@ namespace ICSharpCode.AddInManager2.ViewModel
{
if (IsUpdate)
{
return ResourceService.GetString("AddInManager.AddInUpdated");
return SD.ResourceService.GetString("AddInManager.AddInUpdated");
}
else
{
return SurroundWithParantheses(ResourceService.GetString("AddInManager.AddInInstalled"));
return SurroundWithParantheses(SD.ResourceService.GetString("AddInManager.AddInInstalled"));
}
}
else if (IsRemoved)
{
return SurroundWithParantheses(ResourceService.GetString("AddInManager.AddInRemoved"));
return SurroundWithParantheses(SD.ResourceService.GetString("AddInManager.AddInRemoved"));
}
else if (!IsEnabled)
{
return SurroundWithParantheses(ResourceService.GetString("AddInManager.AddInDisabled"));
return SurroundWithParantheses(SD.ResourceService.GetString("AddInManager.AddInDisabled"));
}
else
{

19
src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/OfflineAddInViewModel.cs

@ -7,6 +7,7 @@ using System.Linq; @@ -7,6 +7,7 @@ using System.Linq;
using System.Windows.Input;
using ICSharpCode.AddInManager2.Model;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using NuGet;
namespace ICSharpCode.AddInManager2.ViewModel
@ -287,38 +288,38 @@ namespace ICSharpCode.AddInManager2.ViewModel @@ -287,38 +288,38 @@ namespace ICSharpCode.AddInManager2.ViewModel
{
if (_addIn.Action == AddInAction.Install)
{
return SurroundWithParantheses(ResourceService.GetString("AddInManager.AddInInstalled"));
return SurroundWithParantheses(SD.ResourceService.GetString("AddInManager.AddInInstalled"));
}
else if (_addIn.Action == AddInAction.Update)
{
return ResourceService.GetString("AddInManager.AddInUpdated");
return SD.ResourceService.GetString("AddInManager.AddInUpdated");
}
else if (HasDependencyConflicts)
{
return SurroundWithParantheses(ResourceService.GetString("AddInManager.AddInDependencyFailed"));
return SurroundWithParantheses(SD.ResourceService.GetString("AddInManager.AddInDependencyFailed"));
}
else if (IsRemoved)
{
return SurroundWithParantheses(ResourceService.GetString("AddInManager.AddInRemoved"));
return SurroundWithParantheses(SD.ResourceService.GetString("AddInManager.AddInRemoved"));
}
else if (IsEnabled && !_addIn.Enabled)
{
return SurroundWithParantheses(ResourceService.GetString("AddInManager.AddInEnabled"));
return SurroundWithParantheses(SD.ResourceService.GetString("AddInManager.AddInEnabled"));
}
else if (!IsEnabled)
{
if (_addIn.Enabled)
{
return SurroundWithParantheses(ResourceService.GetString("AddInManager.AddInWillBeDisabled"));
return SurroundWithParantheses(SD.ResourceService.GetString("AddInManager.AddInWillBeDisabled"));
}
else
{
return SurroundWithParantheses(ResourceService.GetString("AddInManager.AddInDisabled"));
return SurroundWithParantheses(SD.ResourceService.GetString("AddInManager.AddInDisabled"));
}
}
else if (_addIn.Action == AddInAction.InstalledTwice)
{
return SurroundWithParantheses(ResourceService.GetString("AddInManager.AddInInstalledTwice"));
return SurroundWithParantheses(SD.ResourceService.GetString("AddInManager.AddInInstalledTwice"));
}
else
{
@ -520,7 +521,7 @@ namespace ICSharpCode.AddInManager2.ViewModel @@ -520,7 +521,7 @@ namespace ICSharpCode.AddInManager2.ViewModel
}
}
ICSharpCode.SharpDevelop.Commands.OptionsCommand.ShowTabbedOptions(
_addIn.Name + " " + ResourceService.GetString("AddInManager.Options"),
_addIn.Name + " " + SD.ResourceService.GetString("AddInManager.Options"),
dummyNode);
}
}

1
src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/PackageRepositoriesViewModel.cs

@ -109,7 +109,6 @@ namespace ICSharpCode.AddInManager2.ViewModel @@ -109,7 +109,6 @@ namespace ICSharpCode.AddInManager2.ViewModel
public void Load()
{
packageSources.Clear();
// packageSources.AddRange(AddInManager.Repositories.RegisteredPackageSources);
NuGet.CollectionExtensions.AddRange(packageSources, AddInManager.Repositories.RegisteredPackageSources);
foreach (PackageSource packageSource in packageSources)
{

3
src/AddIns/Misc/AddInManager2/Project/Src/ViewModel/UpdatedAddInsViewModel.cs

@ -10,6 +10,7 @@ using System.Text; @@ -10,6 +10,7 @@ using System.Text;
using System.Windows.Input;
using ICSharpCode.AddInManager2.Model;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using NuGet;
namespace ICSharpCode.AddInManager2.ViewModel
@ -25,7 +26,7 @@ namespace ICSharpCode.AddInManager2.ViewModel @@ -25,7 +26,7 @@ namespace ICSharpCode.AddInManager2.ViewModel
{
IsSearchable = true;
HasFilterForPrereleases = true;
Title = ResourceService.GetString("AddInManager2.Views.Updates");;
Title = SD.ResourceService.GetString("AddInManager2.Views.Updates");;
AddInManager.Events.AddInInstalled += NuGetPackagesChanged;
AddInManager.Events.AddInUninstalled += NuGetPackagesChanged;

Loading…
Cancel
Save