diff --git a/data/resources/StringResources.fr.resx b/data/resources/StringResources.fr.resx
index 2427767d59..1caf861360 100644
--- a/data/resources/StringResources.fr.resx
+++ b/data/resources/StringResources.fr.resx
@@ -7250,6 +7250,12 @@ Les fichiers de resources ont été renommés/déplacés en conséquence.
Entrée du menu Outils
+
+ Un projet pour une application Silverlight.
+
+
+ Application Silverlight
+
Un projet qui crée une application avec une icône dans la zone de notification de la barre des tâches.
diff --git a/data/resources/StringResources.nl.resx b/data/resources/StringResources.nl.resx
index b6d180ef44..d59f3bea9c 100644
--- a/data/resources/StringResources.nl.resx
+++ b/data/resources/StringResources.nl.resx
@@ -7252,6 +7252,12 @@ De hulpbron bestanden zijn hernoemd/verplaatst op de beschreven wijze.
Eztra menu ingang
+
+ Project voor het maken van een Silverlight applicatie.
+
+
+ Silverlight applicatie
+
Een project waarin een applicatie wordt gemaakt met een pictogram in het meldingengebied van de taakbalk.
diff --git a/data/resources/StringResources.resx b/data/resources/StringResources.resx
index 0db9a068e5..3ad119f76e 100644
--- a/data/resources/StringResources.resx
+++ b/data/resources/StringResources.resx
@@ -4269,6 +4269,9 @@ All changes get lost.
File Saved
+
+ Navigate to file in project browser
+
From VB.NET to C#
@@ -5934,6 +5937,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
Clea&n
+
+ Collapse all
+
Delete '${FileName}' permanently?
diff --git a/src/AddIns/Misc/SharpRefactoring/Project/Src/ContextActions/CacheClassAtCaret.cs b/src/AddIns/Misc/SharpRefactoring/Project/Src/ContextActions/CacheClassAtCaret.cs
index 3d1c2cbfa9..3c0be26ea2 100644
--- a/src/AddIns/Misc/SharpRefactoring/Project/Src/ContextActions/CacheClassAtCaret.cs
+++ b/src/AddIns/Misc/SharpRefactoring/Project/Src/ContextActions/CacheClassAtCaret.cs
@@ -34,7 +34,14 @@ namespace SharpRefactoring.ContextActions
public bool IsFixClassFileNameAvailable
{
get {
- return !IsClassReadOnly && IsCaretAtClassDeclaration && !IsClassFileNameCorrect && IsCorrectClassFileNameAvailable;
+ return IsCaretAtClassDeclaration && Class.IsUserCode() && !IsClassReadOnly && !IsClassFileNameCorrect && IsCorrectClassFileNameAvailable;
+ }
+ }
+
+ public bool IsCreateDerivedClassAvailable
+ {
+ get {
+ return IsCaretAtClassDeclaration && Class.IsUserCode() && !Class.IsStatic && !Class.IsSealed;
}
}
@@ -52,7 +59,7 @@ namespace SharpRefactoring.ContextActions
this.IsClassFileNameCorrect = (c.IsInnerClass() || (!c.IsUserCode()) ||
c.Name.Equals(Path.GetFileNameWithoutExtension(c.CompilationUnit.FileName), StringComparison.OrdinalIgnoreCase));
- if (string.IsNullOrEmpty(c.CompilationUnit.FileName)) {
+ if (string.IsNullOrEmpty(c.Name) || c.CompilationUnit == null || string.IsNullOrEmpty(c.CompilationUnit.FileName)) {
// Cannot get path
this.CorrectClassFileName = null;
this.IsCorrectClassFileNameAvailable = false;
diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin b/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin
index 143b62e1bb..4b0eb5ac5d 100755
--- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin
+++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin
@@ -228,6 +228,9 @@
+
+
@@ -1005,6 +1013,9 @@
+
@@ -1340,7 +1351,7 @@
- /// Opens the containing folder in the clipboard.
+ /// Expands and scrolls to this file in the project browser.
+ ///
+ public class NavigateToFileInProjectBrowser : AbstractMenuCommand
+ {
+ public override void Run()
+ {
+ var c = ProjectBrowserPad.Instance.Control as ProjectBrowserPanel;
+ c.ProjectBrowserControl.SelectFileAndExpand(((IWorkbenchWindow)Owner).ActiveViewContent.PrimaryFileName);
+ }
+ }
+
+ ///
+ /// Opens the folder containing this file in the windows explorer.
///
public class OpenFolderContainingFile : AbstractMenuCommand
{
diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs
index 0f6e986823..7e6a8fe5d4 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs
@@ -148,4 +148,23 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
}
}
}
+
+ public class CollapseAll : AbstractMenuCommand
+ {
+ public override void Run()
+ {
+ AbstractProjectBrowserTreeNode node = ProjectBrowserPad.Instance.ProjectBrowserControl.SelectedNode;
+ if (node is SolutionNode) {
+ // Solution node does not collapse fully, but its subitems stay visible
+ foreach (var subNode in node.Nodes) {
+ var subBrowserNode = subNode as AbstractProjectBrowserTreeNode;
+ if (subBrowserNode != null) {
+ subBrowserNode.Collapse();
+ }
+ }
+ } else {
+ node.Collapse();
+ }
+ }
+ }
}
diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserControl.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserControl.cs
index b2e3b4511a..7768354a07 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserControl.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserControl.cs
@@ -236,6 +236,32 @@ namespace ICSharpCode.SharpDevelop.Project
inSelectFile = false;
}
}
+
+ public void SelectFileAndExpand(string fileName)
+ {
+ try {
+ inSelectFile = true;
+ lastSelectionTarget = fileName;
+ TreeNode node = FindFileNode(fileName);
+
+ if (node != null) {
+ // Expand to node
+ TreeNode parent = node.Parent;
+ while (parent != null) {
+ parent.Expand();
+ parent = parent.Parent;
+ }
+ //node = FindFileNode(fileName);
+ treeView.SelectedNode = node;
+ } else {
+ // Node for this file does not exist yet (the tree view is lazy loaded)
+ SelectDeepestOpenNodeForPath(fileName);
+ }
+ this.Focus();
+ } finally {
+ inSelectFile = false;
+ }
+ }
#region SelectDeepestOpenNode internals
//