From f022d3b2eaaee10759b12eef8f8e30b46b3ecd6d Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Wed, 27 Aug 2008 17:34:52 +0000 Subject: [PATCH] Allow pads to specify their start position. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0wpf@3454 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- AddIns/ICSharpCode.SharpDevelop.addin | 39 +++-- data/resources/layouts/Default.xml | 140 +++--------------- .../Boo/BooBinding/Project/BooBinding.addin | 3 +- .../WixBinding/Project/WixBinding.addin | 3 +- .../ClassDiagramAddin/ClassDiagramAddin.addin | 3 +- .../XmlEditor/Project/XmlEditor.addin | 3 +- .../CodeCoverage/Project/CodeCoverage.addin | 3 +- .../Project/Debugger.AddIn.addin | 18 ++- .../Project/HtmlHelp2.DynamicHelp.addin | 3 +- .../Misc/HtmlHelp2/Project/HtmlHelp2.addin | 12 +- src/AddIns/Misc/UnitTesting/UnitTesting.addin | 3 +- .../Base/Project/Src/Gui/IWorkbenchLayout.cs | 1 - .../Src/Gui/Pads/ErrorList/ErrorListPad.cs | 2 +- .../AbstractProjectBrowserTreeNode.cs | 2 +- .../Gui/Workbench/Layouts/AvalonDockLayout.cs | 39 +++-- .../Src/Internal/Doozers/PadDescriptor.cs | 23 +++ 16 files changed, 133 insertions(+), 164 deletions(-) diff --git a/AddIns/ICSharpCode.SharpDevelop.addin b/AddIns/ICSharpCode.SharpDevelop.addin index 9fb78c55c8..d2ccb325aa 100644 --- a/AddIns/ICSharpCode.SharpDevelop.addin +++ b/AddIns/ICSharpCode.SharpDevelop.addin @@ -74,73 +74,84 @@ title = "${res:MainWindow.Windows.ProjectScoutLabel}" icon = "PadIcons.ProjectBrowser" shortcut = "Control|Alt|L" - class = "ICSharpCode.SharpDevelop.Project.ProjectBrowserPad"/> + class = "ICSharpCode.SharpDevelop.Project.ProjectBrowserPad" + defaultPosition = "Left" /> + class = "ICSharpCode.SharpDevelop.Gui.ClassBrowser.ClassBrowserPad" + defaultPosition = "Right" /> + class = "ICSharpCode.SharpDevelop.Gui.ToolsPad" + defaultPosition = "Left" /> + class = "ICSharpCode.SharpDevelop.Gui.ErrorListPad" + defaultPosition = "Bottom" /> + class = "ICSharpCode.SharpDevelop.Gui.TaskListPad" + defaultPosition = "Bottom" /> + class = "ICSharpCode.SharpDevelop.Gui.CompilerMessageView" + defaultPosition = "Bottom" /> + class = "ICSharpCode.SharpDevelop.Gui.PropertyPad" + defaultPosition = "Right" /> + class = "ICSharpCode.SharpDevelop.Gui.FileScout" + defaultPosition = "Left, Hidden" /> + class = "SearchAndReplace.SearchResultPanel" + defaultPosition = "Bottom, Hidden" /> + class = "ICSharpCode.SharpDevelop.Bookmarks.BookmarkPad" + defaultPosition = "Bottom, Hidden" /> + class = "ICSharpCode.SharpDevelop.Gui.DefinitionViewPad" + defaultPosition = "Bottom, Hidden" /> @@ -933,7 +944,7 @@ - + @@ -1473,7 +1484,7 @@ class = "ICSharpCode.SharpDevelop.Project.Commands.StopDebuggingCommand"/> - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.addin b/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.addin index 9951101968..71adfb5640 100644 --- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.addin +++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.addin @@ -165,6 +165,7 @@ title = "${res:ICSharpCode.BooInterpreter}" icon = "Boo.ProjectIcon" shortcut = "Control|Shift|B" - class = "Grunwald.BooBinding.InteractiveInterpreterPad"/> + class = "Grunwald.BooBinding.InteractiveInterpreterPad" + defaultPosition = "Bottom, Hidden" /> diff --git a/src/AddIns/BackendBindings/WixBinding/Project/WixBinding.addin b/src/AddIns/BackendBindings/WixBinding/Project/WixBinding.addin index b048039a79..38222765cc 100644 --- a/src/AddIns/BackendBindings/WixBinding/Project/WixBinding.addin +++ b/src/AddIns/BackendBindings/WixBinding/Project/WixBinding.addin @@ -161,7 +161,8 @@ category = "Setup" title = "${res:ICSharpCode.WixBinding.SetupDialogListPad.Title}" icon = "Setup.Icons.16x16.SetupDialogsPad" - class = "ICSharpCode.WixBinding.SetupDialogListPad"/> + class = "ICSharpCode.WixBinding.SetupDialogListPad" + defaultPosition = "Bottom, Hidden" /> diff --git a/src/AddIns/DisplayBindings/ClassDiagram/ClassDiagramAddin/ClassDiagramAddin.addin b/src/AddIns/DisplayBindings/ClassDiagram/ClassDiagramAddin/ClassDiagramAddin.addin index 3751ebc5d9..0586b957b0 100644 --- a/src/AddIns/DisplayBindings/ClassDiagram/ClassDiagramAddin/ClassDiagramAddin.addin +++ b/src/AddIns/DisplayBindings/ClassDiagram/ClassDiagramAddin/ClassDiagramAddin.addin @@ -144,7 +144,8 @@ category = "Tools" title = "Class Editor" class = "ClassDiagramAddin.ClassEditorPad" - icon = "ClassDiagram.ClassEditor" /> + icon = "ClassDiagram.ClassEditor" + defaultPosition = "Right, Hidden" /> diff --git a/src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.addin b/src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.addin index d6f6eeb254..4876f58d68 100644 --- a/src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.addin +++ b/src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.addin @@ -169,7 +169,8 @@ icon = "PadIcons.XPathQuery" title = "${res:ICSharpCode.XmlEditor.XPathQueryPad.Title}" insertafter = "UnitTestingPad" - class = "ICSharpCode.XmlEditor.XPathQueryPad"/> + class = "ICSharpCode.XmlEditor.XPathQueryPad" + defaultPosition = "Bottom, Hidden" /> diff --git a/src/AddIns/Misc/CodeCoverage/Project/CodeCoverage.addin b/src/AddIns/Misc/CodeCoverage/Project/CodeCoverage.addin index e0562c7211..b06aa6452b 100644 --- a/src/AddIns/Misc/CodeCoverage/Project/CodeCoverage.addin +++ b/src/AddIns/Misc/CodeCoverage/Project/CodeCoverage.addin @@ -20,7 +20,8 @@ insertbefore = "DefinitionView" icon = "CodeCoverage.Icons.16x16.Pad" shortcut = "Control|Alt|G" - class = "ICSharpCode.CodeCoverage.CodeCoveragePad"/> + class = "ICSharpCode.CodeCoverage.CodeCoveragePad" + defaultPosition = "Bottom, Hidden" /> diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Debugger.AddIn.addin b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Debugger.AddIn.addin index ef965b2aa0..0a335bb2de 100644 --- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Debugger.AddIn.addin +++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Debugger.AddIn.addin @@ -43,42 +43,48 @@ title = "${res:MainWindow.Windows.Debug.Breakpoints}" icon = "PadIcons.BreakPoints" shortcut = "Control|Alt|P" - class = "ICSharpCode.SharpDevelop.Gui.Pads.BreakPointsPad"/> + class = "ICSharpCode.SharpDevelop.Gui.Pads.BreakPointsPad" + defaultPosition = "Bottom, Hidden" /> + class = "ICSharpCode.SharpDevelop.Gui.Pads.CallStackPad" + defaultPosition = "Bottom, Hidden" /> + class = "ICSharpCode.SharpDevelop.Gui.Pads.LoadedModulesPad" + defaultPosition = "Bottom, Hidden" /> + class = "ICSharpCode.SharpDevelop.Gui.Pads.RunningThreadsPad" + defaultPosition = "Bottom, Hidden" /> + class = "ICSharpCode.SharpDevelop.Gui.Pads.LocalVarPad" + defaultPosition = "Bottom, Hidden" /> + class = "ICSharpCode.SharpDevelop.Gui.Pads.ConsolePad" + defaultPosition = "Bottom, Hidden" /> diff --git a/src/AddIns/Misc/HtmlHelp2/Project/HtmlHelp2.DynamicHelp.addin b/src/AddIns/Misc/HtmlHelp2/Project/HtmlHelp2.DynamicHelp.addin index 5f8f665470..88b4919146 100644 --- a/src/AddIns/Misc/HtmlHelp2/Project/HtmlHelp2.DynamicHelp.addin +++ b/src/AddIns/Misc/HtmlHelp2/Project/HtmlHelp2.DynamicHelp.addin @@ -15,7 +15,8 @@ category = "Help2" title = "${res:AddIns.HtmlHelp2.DynamicHelp}" icon = "HtmlHelp2.16x16.DynamicHelp" - class = "HtmlHelp2.HtmlHelp2DynamicHelpPad"/> + class = "HtmlHelp2.HtmlHelp2DynamicHelpPad" + defaultPosition = "Right, Hidden" /> diff --git a/src/AddIns/Misc/HtmlHelp2/Project/HtmlHelp2.addin b/src/AddIns/Misc/HtmlHelp2/Project/HtmlHelp2.addin index cb63b2fea0..1c4145ff0d 100644 --- a/src/AddIns/Misc/HtmlHelp2/Project/HtmlHelp2.addin +++ b/src/AddIns/Misc/HtmlHelp2/Project/HtmlHelp2.addin @@ -24,22 +24,26 @@ category = "Help2" title = "${res:AddIns.HtmlHelp2.Contents}" icon = "HtmlHelp2.16x16.Toc" - class = "HtmlHelp2.HtmlHelp2TocPad"/> + class = "HtmlHelp2.HtmlHelp2TocPad" + defaultPosition = "Right, Hidden" /> + class = "HtmlHelp2.HtmlHelp2IndexPad" + defaultPosition = "Right, Hidden" /> + class = "HtmlHelp2.HtmlHelp2SearchPad" + defaultPosition = "Right, Hidden" /> + class = "HtmlHelp2.HtmlHelp2IndexResultsPad" + defaultPosition = "Bottom, Hidden" /> diff --git a/src/AddIns/Misc/UnitTesting/UnitTesting.addin b/src/AddIns/Misc/UnitTesting/UnitTesting.addin index 799e70a629..c3ce1ce4cf 100644 --- a/src/AddIns/Misc/UnitTesting/UnitTesting.addin +++ b/src/AddIns/Misc/UnitTesting/UnitTesting.addin @@ -20,7 +20,8 @@ title = "${res:ICSharpCode.NUnitPad.NUnitPadContent.PadName}" icon = "PadIcons.NUnitTest" shortcut = "Control|Alt|T" - class = "ICSharpCode.UnitTesting.UnitTestsPad"/> + class = "ICSharpCode.UnitTesting.UnitTestsPad" + defaultPosition = "Right, Hidden" /> diff --git a/src/Main/Base/Project/Src/Gui/IWorkbenchLayout.cs b/src/Main/Base/Project/Src/Gui/IWorkbenchLayout.cs index be42f1bbb1..1f8106a676 100644 --- a/src/Main/Base/Project/Src/Gui/IWorkbenchLayout.cs +++ b/src/Main/Base/Project/Src/Gui/IWorkbenchLayout.cs @@ -62,7 +62,6 @@ namespace ICSharpCode.SharpDevelop.Gui /// bring it to foreground) /// void ActivatePad(PadDescriptor content); - void ActivatePad(string fullyQualifiedTypeName); /// /// Hides a . diff --git a/src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorListPad.cs b/src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorListPad.cs index 729cd0b835..3a0bb93b57 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorListPad.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorListPad.cs @@ -131,7 +131,7 @@ namespace ICSharpCode.SharpDevelop.Gui void ProjectServiceEndBuild(object sender, EventArgs e) { if (TaskService.TaskCount > 0 && ShowAfterBuild) { - WorkbenchSingleton.Workbench.WorkbenchLayout.ActivatePad(this.GetType().FullName); + WorkbenchSingleton.Workbench.GetPad(typeof(ErrorListPad)).BringPadToFront(); } UpdateToolstripStatus(); } diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/AbstractProjectBrowserTreeNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/AbstractProjectBrowserTreeNode.cs index 1b5d32cd43..6101989d6b 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/AbstractProjectBrowserTreeNode.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/AbstractProjectBrowserTreeNode.cs @@ -92,7 +92,7 @@ namespace ICSharpCode.SharpDevelop.Project public virtual void ShowProperties() { - WorkbenchSingleton.Workbench.WorkbenchLayout.ActivatePad(typeof(PropertyPad).FullName); + WorkbenchSingleton.Workbench.GetPad(typeof(PropertyPad)).BringPadToFront(); } public static bool IsSomewhereBelow(string path, ProjectItem item) diff --git a/src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonDockLayout.cs b/src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonDockLayout.cs index 6739fdfcd1..2c446ebc8c 100644 --- a/src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonDockLayout.cs +++ b/src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonDockLayout.cs @@ -117,8 +117,19 @@ namespace ICSharpCode.SharpDevelop.Gui pad = new AvalonPadContent(this, content); pads.Add(content, pad); padsByClass.Add(content.Class, pad); - dockingManager.Show(pad, DockableContentState.Docked, AnchorStyle.Right); + AnchorStyle style; + if ((content.DefaultPosition & DefaultPadPositions.Top) != 0) + style = AnchorStyle.Top; + else if ((content.DefaultPosition & DefaultPadPositions.Left) != 0) + style = AnchorStyle.Left; + else if ((content.DefaultPosition & DefaultPadPositions.Bottom) != 0) + style = AnchorStyle.Bottom; + else + style = AnchorStyle.Right; + dockingManager.Show(pad, DockableContentState.Docked, style); SetPaneSizeWorkaround(pad.ContainerPane); + if ((content.DefaultPosition & DefaultPadPositions.Hidden) != 0) + dockingManager.Hide(pad); } } @@ -127,26 +138,27 @@ namespace ICSharpCode.SharpDevelop.Gui ResizingPanel panel = pane.Parent as ResizingPanel; if (panel.Orientation == Orientation.Horizontal) { if (ResizingPanel.GetResizeWidth(pane) == 0) - ResizingPanel.SetResizeWidth(pane, 150); + ResizingPanel.SetResizeWidth(pane, 200); } else if (panel.Orientation == Orientation.Vertical) { if (ResizingPanel.GetResizeHeight(pane) == 0) - ResizingPanel.SetResizeHeight(pane, 100); + ResizingPanel.SetResizeHeight(pane, 150); } } public void ActivatePad(PadDescriptor content) { - pads[content].BringIntoView(); - } - - public void ActivatePad(string fullyQualifiedTypeName) - { - padsByClass[fullyQualifiedTypeName].BringIntoView(); + AvalonPadContent p; + if (pads.TryGetValue(content, out p)) + p.BringIntoView(); + else + ShowPad(content); } public void HidePad(PadDescriptor content) { - dockingManager.Hide(pads[content]); + AvalonPadContent p; + if (pads.TryGetValue(content, out p)) + dockingManager.Hide(p); } public void UnloadPad(PadDescriptor content) @@ -161,8 +173,11 @@ namespace ICSharpCode.SharpDevelop.Gui public bool IsVisible(PadDescriptor padContent) { - AvalonPadContent pad = pads[padContent]; - return pad.IsVisible; + AvalonPadContent p; + if (pads.TryGetValue(padContent, out p)) + return p.IsVisible; + else + return false; } public IWorkbenchWindow ShowView(IViewContent content) diff --git a/src/Main/Base/Project/Src/Internal/Doozers/PadDescriptor.cs b/src/Main/Base/Project/Src/Internal/Doozers/PadDescriptor.cs index 792ca4596e..dfc0da25de 100644 --- a/src/Main/Base/Project/Src/Internal/Doozers/PadDescriptor.cs +++ b/src/Main/Base/Project/Src/Internal/Doozers/PadDescriptor.cs @@ -11,6 +11,21 @@ using ICSharpCode.SharpDevelop.Gui; namespace ICSharpCode.SharpDevelop { + /// + /// Indicates the default position for a pad. + /// This is a bit-flag enum, Hidden can be combined with the directions. + /// + [Flags] + public enum DefaultPadPositions + { + None = 0, + Right = 1, + Left = 2, + Bottom = 4, + Top = 8, + Hidden = 16 + } + /// /// Describes a pad. /// @@ -39,6 +54,9 @@ namespace ICSharpCode.SharpDevelop icon = codon.Properties["icon"]; title = codon.Properties["title"]; @class = codon.Properties["class"]; + if (!string.IsNullOrEmpty(codon.Properties["defaultPosition"])) { + DefaultPosition = (DefaultPadPositions)Enum.Parse(typeof(DefaultPadPositions), codon.Properties["defaultPosition"]); + } } /// @@ -111,6 +129,11 @@ namespace ICSharpCode.SharpDevelop } } + /// + /// Gets/sets the default position of the pad. + /// + public DefaultPadPositions DefaultPosition { get; set; } + public IPadContent PadContent { get { CreatePad();