Browse Source

Completed support for pinned/unpinned assemblies in ClassBrowser.

pull/80/head
Andreas Weizel 12 years ago
parent
commit
0a4719492e
  1. 32
      src/Main/Base/Project/Dom/ClassBrowser/ClassBrowserAssemblyModelExtensions.cs
  2. 2
      src/Main/Base/Project/Dom/ClassBrowser/ClassBrowserTreeView.cs
  3. 20
      src/Main/Base/Project/Dom/ClassBrowser/IsAssemblyUnpinnedConditionEvaluator.cs
  4. 9
      src/Main/Base/Project/ICSharpCode.SharpDevelop.addin
  5. 2
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  6. 31
      src/Main/SharpDevelop/Dom/ClassBrowser/Commands.cs

32
src/Main/Base/Project/Dom/ClassBrowser/ClassBrowserAssemblyModelExtensions.cs

@ -0,0 +1,32 @@ @@ -0,0 +1,32 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Linq;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom;
namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
{
public static class ClassBrowserAssemblyModelExtensions
{
/// <summary>
/// Checks if an assembly model is added to the unpinned (temporary) list of ClassBrowser service.
/// </summary>
/// <param name="model">Assembly model to check.</param>
/// <returns>True if in unpinned list, false otherwise.</returns>
public static bool IsUnpinned(this IAssemblyModel model)
{
if (model == null)
throw new ArgumentNullException("model");
var classBrowser = SD.GetService<IClassBrowser>();
if (classBrowser != null) {
// Look in unpinned list
return classBrowser.UnpinnedAssemblies.Assemblies.Any(m => m.Location == model.Location);
}
return false;
}
}
}

2
src/Main/Base/Project/Dom/ClassBrowser/ClassBrowserTreeView.cs

@ -171,7 +171,7 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser @@ -171,7 +171,7 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
return false;
}
}
public interface IClassBrowserTreeView : IClassBrowser
{

20
src/Main/Base/Project/Dom/ClassBrowser/IsAssemblyUnpinnedConditionEvaluator.cs

@ -0,0 +1,20 @@ @@ -0,0 +1,20 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using ICSharpCode.Core;
namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
{
public class IsAssemblyUnpinnedConditionEvaluator : IConditionEvaluator
{
public bool IsValid(object parameter, Condition condition)
{
var assemblyModel = parameter as IAssemblyModel;
if (assemblyModel != null) {
return assemblyModel.IsUnpinned();
}
return false;
}
}
}

9
src/Main/Base/Project/ICSharpCode.SharpDevelop.addin

@ -33,6 +33,7 @@ @@ -33,6 +33,7 @@
<ConditionEvaluator name="IsTextSelected" class="ICSharpCode.SharpDevelop.Editor.TextSelectedCondition"/>
<ConditionEvaluator name="ViewInBrowser" class="ICSharpCode.SharpDevelop.ViewInBrowserConditionEvaluator"/>
<ConditionEvaluator name="ProjectBehaviorSupported" class="ICSharpCode.SharpDevelop.Project.ProjectBehaviorSupportedConditionEvaluator"/>
<ConditionEvaluator name="IsAssemblyUnpinned" class="ICSharpCode.SharpDevelop.Dom.ClassBrowser.IsAssemblyUnpinnedConditionEvaluator"/>
<Doozer name="CustomTool" class="ICSharpCode.SharpDevelop.Project.CustomToolDoozer"/>
<Doozer name="CustomProperty" class="ICSharpCode.SharpDevelop.Project.CustomPropertyDoozer"/>
@ -999,6 +1000,12 @@ @@ -999,6 +1000,12 @@
<MenuItem id = "AssemblyContextMenuSeparator" type = "Separator"/>
</Condition>
</Condition>
<Condition name="IsAssemblyUnpinned" action="Exclude">
<MenuItem id = "PermanentlyAddToWorkspace"
label = "${res:MainWindow.Windows.ClassBrowser.AddToWorkspace}"
icon = "Icons.16x16.AssemblyFromFile"
class = "ICSharpCode.SharpDevelop.Dom.ClassBrowser.PermanentlyAddModuleToWorkspaceCommand"/>
</Condition>
<MenuItem id = "RemoveAssembly"
label = "Remove"
icon = "Icons.16x16.DeleteIcon"
@ -1009,7 +1016,7 @@ @@ -1009,7 +1016,7 @@
<MenuItem id="OpenInClassBrowser"
icon="ILSpy"
type="Item"
label="Open in Class Browser"
label="${res:MainWindow.Windows.ClassBrowser.OpenInClassBrowser}"
class="ICSharpCode.SharpDevelop.Dom.ClassBrowser.OpenInClassBrowserCommand"/>
</Path>

2
src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

@ -87,9 +87,11 @@ @@ -87,9 +87,11 @@
<Compile Include="Dom\ClassBrowser\AssemblyLoadErrorTreeNode.cs" />
<Compile Include="Dom\ClassBrowser\AssemblyTreeNode.cs" />
<Compile Include="Dom\ClassBrowser\BaseTypesTreeNode.cs" />
<Compile Include="Dom\ClassBrowser\ClassBrowserAssemblyModelExtensions.cs" />
<Compile Include="Dom\ClassBrowser\ClassBrowserTreeView.cs" />
<Compile Include="Dom\ClassBrowser\DerivedTypesTreeNode.cs" />
<Compile Include="Dom\ClassBrowser\IClassBrowser.cs" />
<Compile Include="Dom\ClassBrowser\IsAssemblyUnpinnedConditionEvaluator.cs" />
<Compile Include="Dom\ClassBrowser\MemberTreeNode.cs" />
<Compile Include="Dom\ClassBrowser\NamespaceTreeNode.cs" />
<Compile Include="Dom\ClassBrowser\ProjectTreeNode.cs" />

31
src/Main/SharpDevelop/Dom/ClassBrowser/Commands.cs

@ -51,13 +51,42 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser @@ -51,13 +51,42 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
foreach (string assemblyFile in gacDialog.SelectedFileNames) {
IAssemblyModel assemblyModel = SD.AssemblyParserService.GetAssemblyModelSafe(new ICSharpCode.Core.FileName(assemblyFile), true);
if (assemblyModel != null)
classBrowser.MainAssemblyList.Assemblies.Add(assemblyModel);
// classBrowser.MainAssemblyList.Assemblies.Add(assemblyModel);
classBrowser.UnpinnedAssemblies.Assemblies.Add(assemblyModel);
}
}
}
}
}
/// <summary>
/// PermanentlyAddModuleToWorkspaceCommand.
/// </summary>
class PermanentlyAddModuleToWorkspaceCommand : SimpleCommand
{
public override bool CanExecute(object parameter)
{
IAssemblyModel assemblyModel = parameter as IAssemblyModel;
return (assemblyModel != null) && assemblyModel.Context.IsValid;
}
public override void Execute(object parameter)
{
var classBrowser = SD.GetService<IClassBrowser>();
if (classBrowser != null) {
IAssemblyModel assemblyModel = (IAssemblyModel) parameter;
// Try to remove AssemblyModel from list of UnpinnedAssemblies
classBrowser.UnpinnedAssemblies.Assemblies.Remove(assemblyModel);
// Create a new copy of this assembly model
IAssemblyModel newAssemblyModel = SD.AssemblyParserService.GetAssemblyModelSafe(new ICSharpCode.Core.FileName(assemblyModel.Context.Location), true);
if (newAssemblyModel != null)
classBrowser.MainAssemblyList.Assemblies.Add(newAssemblyModel);
}
}
}
/// <summary>
/// RemoveAssemblyCommand.
/// </summary>

Loading…
Cancel
Save