Browse Source

- Implemented "Collapse all" context menu item in project browser.

- Implemented "Navigate to file in project browser" context menu item for tab in tabstrip. This does not expand nodes that have not been loaded yet; probably it should.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@6400 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Martin Koníček 15 years ago
parent
commit
b169fe6311
  1. 6
      data/resources/StringResources.fr.resx
  2. 6
      data/resources/StringResources.nl.resx
  3. 6
      data/resources/StringResources.resx
  4. 11
      src/AddIns/Misc/SharpRefactoring/Project/Src/ContextActions/CacheClassAtCaret.cs
  5. 13
      src/Main/Base/Project/ICSharpCode.SharpDevelop.addin
  6. 15
      src/Main/Base/Project/Src/Commands/FileTabStripCommands.cs
  7. 19
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs
  8. 26
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserControl.cs

6
data/resources/StringResources.fr.resx

@ -7250,6 +7250,12 @@ Les fichiers de resources ont été renommés/déplacés en conséquence.</value
<data name="Templates.Project.SharpDevelopMacro.Name" xml:space="preserve"> <data name="Templates.Project.SharpDevelopMacro.Name" xml:space="preserve">
<value>Entrée du menu Outils</value> <value>Entrée du menu Outils</value>
</data> </data>
<data name="Templates.Project.SilverlightApplication.Description" xml:space="preserve">
<value>Un projet pour une application Silverlight.</value>
</data>
<data name="Templates.Project.SilverlightApplication.Name" xml:space="preserve">
<value>Application Silverlight</value>
</data>
<data name="Templates.Project.SysTrayIcon.Description" xml:space="preserve"> <data name="Templates.Project.SysTrayIcon.Description" xml:space="preserve">
<value>Un projet qui crée une application avec une icône dans la zone de notification de la barre des tâches.</value> <value>Un projet qui crée une application avec une icône dans la zone de notification de la barre des tâches.</value>
</data> </data>

6
data/resources/StringResources.nl.resx

@ -7252,6 +7252,12 @@ De hulpbron bestanden zijn hernoemd/verplaatst op de beschreven wijze.</value>
<data name="Templates.Project.SharpDevelopMacro.Name" xml:space="preserve"> <data name="Templates.Project.SharpDevelopMacro.Name" xml:space="preserve">
<value>Eztra menu ingang</value> <value>Eztra menu ingang</value>
</data> </data>
<data name="Templates.Project.SilverlightApplication.Description" xml:space="preserve">
<value>Project voor het maken van een Silverlight applicatie.</value>
</data>
<data name="Templates.Project.SilverlightApplication.Name" xml:space="preserve">
<value>Silverlight applicatie</value>
</data>
<data name="Templates.Project.SysTrayIcon.Description" xml:space="preserve"> <data name="Templates.Project.SysTrayIcon.Description" xml:space="preserve">
<value>Een project waarin een applicatie wordt gemaakt met een pictogram in het meldingengebied van de taakbalk.</value> <value>Een project waarin een applicatie wordt gemaakt met een pictogram in het meldingengebied van de taakbalk.</value>
</data> </data>

6
data/resources/StringResources.resx

@ -4269,6 +4269,9 @@ All changes get lost.</value>
<data name="ICSharpCode.SharpDevelop.Commands.SaveFileAs.FileSavedCaption" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Commands.SaveFileAs.FileSavedCaption" xml:space="preserve">
<value>File Saved</value> <value>File Saved</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.Commands.TabStrip.NavigateToFileInProjectBrowser" xml:space="preserve">
<value>Navigate to file in project browser</value>
</data>
<data name="ICSharpCode.SharpDevelop.Commands.VBConvertProjectToCSharp" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Commands.VBConvertProjectToCSharp" xml:space="preserve">
<value>From VB.NET to C#</value> <value>From VB.NET to C#</value>
</data> </data>
@ -5934,6 +5937,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="ProjectComponent.ContextMenu.Clean" xml:space="preserve"> <data name="ProjectComponent.ContextMenu.Clean" xml:space="preserve">
<value>Clea&amp;n</value> <value>Clea&amp;n</value>
</data> </data>
<data name="ProjectComponent.ContextMenu.CollapseAll" xml:space="preserve">
<value>Collapse all</value>
</data>
<data name="ProjectComponent.ContextMenu.Delete.Question" xml:space="preserve"> <data name="ProjectComponent.ContextMenu.Delete.Question" xml:space="preserve">
<value>Delete '${FileName}' permanently?</value> <value>Delete '${FileName}' permanently?</value>
</data> </data>

11
src/AddIns/Misc/SharpRefactoring/Project/Src/ContextActions/CacheClassAtCaret.cs

@ -34,7 +34,14 @@ namespace SharpRefactoring.ContextActions
public bool IsFixClassFileNameAvailable public bool IsFixClassFileNameAvailable
{ {
get { 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()) || this.IsClassFileNameCorrect = (c.IsInnerClass() || (!c.IsUserCode()) ||
c.Name.Equals(Path.GetFileNameWithoutExtension(c.CompilationUnit.FileName), StringComparison.OrdinalIgnoreCase)); 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 // Cannot get path
this.CorrectClassFileName = null; this.CorrectClassFileName = null;
this.IsCorrectClassFileNameAvailable = false; this.IsCorrectClassFileNameAvailable = false;

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

@ -228,6 +228,9 @@
</Condition> </Condition>
<MenuItem id = "AddSeparator" type = "Separator"/> <MenuItem id = "AddSeparator" type = "Separator"/>
<MenuItem id = "CollapseAll"
label = "${res:ProjectComponent.ContextMenu.CollapseAll}"
class = "ICSharpCode.SharpDevelop.Project.Commands.CollapseAll"/>
<MenuItem id = "Paste" <MenuItem id = "Paste"
label = "${res:XML.MainMenu.EditMenu.Paste}" label = "${res:XML.MainMenu.EditMenu.Paste}"
icon = "Icons.16x16.PasteIcon" icon = "Icons.16x16.PasteIcon"
@ -247,6 +250,8 @@
<Path path = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/SolutionFolderNode"> <Path path = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/SolutionFolderNode">
<Include id = "CombineAddMenu" item="/SharpDevelop/Pads/ProjectBrowser/ContextMenu/SolutionNode/CombineAddMenu"/> <Include id = "CombineAddMenu" item="/SharpDevelop/Pads/ProjectBrowser/ContextMenu/SolutionNode/CombineAddMenu"/>
<Include id = "CollapseAll" item="/SharpDevelop/Pads/ProjectBrowser/ContextMenu/SolutionNode/CollapseAll"/>
<MenuItem id = "AddSeparator" type = "Separator"/> <MenuItem id = "AddSeparator" type = "Separator"/>
<Include id="CutPasteRemoveRename" path="/SharpDevelop/Pads/ProjectBrowser/ContextMenu/CutPasteRemoveRename"/> <Include id="CutPasteRemoveRename" path="/SharpDevelop/Pads/ProjectBrowser/ContextMenu/CutPasteRemoveRename"/>
</Path> </Path>
@ -297,6 +302,8 @@
<MenuItem id = "AddSeparator" type = "Separator"/> <MenuItem id = "AddSeparator" type = "Separator"/>
</Condition> </Condition>
<Include id = "CollapseAll" item="/SharpDevelop/Pads/ProjectBrowser/ContextMenu/SolutionNode/CollapseAll"/>
<MenuItem id = "OpenProjectWith" <MenuItem id = "OpenProjectWith"
label = "${res:Gui.ProjectBrowser.OpenWith}" label = "${res:Gui.ProjectBrowser.OpenWith}"
class = "ICSharpCode.SharpDevelop.Project.Commands.OpenFileFromProjectBrowserWith"/> class = "ICSharpCode.SharpDevelop.Project.Commands.OpenFileFromProjectBrowserWith"/>
@ -552,6 +559,7 @@
class = "ICSharpCode.SharpDevelop.Project.Commands.AddExistingFolderToProject"/> class = "ICSharpCode.SharpDevelop.Project.Commands.AddExistingFolderToProject"/>
</MenuItem> </MenuItem>
<MenuItem id = "AddSeparator" type = "Separator" /> <MenuItem id = "AddSeparator" type = "Separator" />
<Include id = "CollapseAll" item="/SharpDevelop/Pads/ProjectBrowser/ContextMenu/SolutionNode/CollapseAll"/>
<MenuItem id = "OpenFolder" <MenuItem id = "OpenFolder"
label = "${res:Gui.ProjectBrowser.OpenFolderInExplorer}" label = "${res:Gui.ProjectBrowser.OpenFolderInExplorer}"
class = "ICSharpCode.SharpDevelop.Project.Commands.OpenFolder"/> class = "ICSharpCode.SharpDevelop.Project.Commands.OpenFolder"/>
@ -1005,6 +1013,9 @@
<MenuItem id = "CopyPathName" <MenuItem id = "CopyPathName"
label = "${res:OpenFileTabEventHandler.CopyPathName}" label = "${res:OpenFileTabEventHandler.CopyPathName}"
class = "ICSharpCode.SharpDevelop.Commands.TabStrip.CopyPathName"/> class = "ICSharpCode.SharpDevelop.Commands.TabStrip.CopyPathName"/>
<MenuItem id = "NavigateToFileInProjectBrowser"
label = "${res:ICSharpCode.SharpDevelop.Commands.TabStrip.NavigateToFileInProjectBrowser}"
class = "ICSharpCode.SharpDevelop.Commands.TabStrip.NavigateToFileInProjectBrowser"/>
<MenuItem id = "OpenFolderContainingFileFromTab" <MenuItem id = "OpenFolderContainingFileFromTab"
label = "${res:OpenFileTabEventHandler.FileContainingFolderInExplorer}" label = "${res:OpenFileTabEventHandler.FileContainingFolderInExplorer}"
class = "ICSharpCode.SharpDevelop.Commands.TabStrip.OpenFolderContainingFile"/> class = "ICSharpCode.SharpDevelop.Commands.TabStrip.OpenFolderContainingFile"/>
@ -1340,7 +1351,7 @@
<MenuItem id = "Refactor" label = "${res:XML.MainMenu.RefactorMenu}" type="Menu"> <MenuItem id = "Refactor" label = "${res:XML.MainMenu.RefactorMenu}" type="Menu">
<MenuItem id = "Rename" <MenuItem id = "Rename"
label = "${res:SharpDevelop.Refactoring.RenameCommand}" label = "${res:SharpDevelop.Refactoring.RenameCommand}"
class = "ICSharpCode.SharpDevelop.Refactoring.RenameCommand" class = "ICSharpCode.SharpDevelop.Refactoring.RenameCommand"
shortcut = "Control|R" /> shortcut = "Control|R" />
<Condition name="RefactoringProviderSupports" supports="FindUnusedUsingDeclarations"> <Condition name="RefactoringProviderSupports" supports="FindUnusedUsingDeclarations">
<MenuItem id = "RemoveUnusedUsings" <MenuItem id = "RemoveUnusedUsings"

15
src/Main/Base/Project/Src/Commands/FileTabStripCommands.cs

@ -13,6 +13,7 @@ using System.Linq;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.Core.WinForms; using ICSharpCode.Core.WinForms;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.SharpDevelop.Commands.TabStrip namespace ICSharpCode.SharpDevelop.Commands.TabStrip
{ {
@ -77,7 +78,19 @@ namespace ICSharpCode.SharpDevelop.Commands.TabStrip
} }
/// <summary> /// <summary>
/// Opens the containing folder in the clipboard. /// Expands and scrolls to this file in the project browser.
/// </summary>
public class NavigateToFileInProjectBrowser : AbstractMenuCommand
{
public override void Run()
{
var c = ProjectBrowserPad.Instance.Control as ProjectBrowserPanel;
c.ProjectBrowserControl.SelectFileAndExpand(((IWorkbenchWindow)Owner).ActiveViewContent.PrimaryFileName);
}
}
/// <summary>
/// Opens the folder containing this file in the windows explorer.
/// </summary> /// </summary>
public class OpenFolderContainingFile : AbstractMenuCommand public class OpenFolderContainingFile : AbstractMenuCommand
{ {

19
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();
}
}
}
} }

26
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserControl.cs

@ -236,6 +236,32 @@ namespace ICSharpCode.SharpDevelop.Project
inSelectFile = false; 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 #region SelectDeepestOpenNode internals
// //

Loading…
Cancel
Save