diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/SetupDialogListPad.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/SetupDialogListPad.cs
index faa71eef00..bee47ccfcc 100644
--- a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/SetupDialogListPad.cs
+++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/SetupDialogListPad.cs
@@ -45,7 +45,7 @@ namespace ICSharpCode.WixBinding
}
}
- public override Control Control {
+ public override object Content {
get {
return setupDialogListView;
}
diff --git a/src/AddIns/DisplayBindings/ClassDiagram/ClassDiagramAddin/Src/ClassDiagramViewContent.cs b/src/AddIns/DisplayBindings/ClassDiagram/ClassDiagramAddin/Src/ClassDiagramViewContent.cs
index dd1e697556..e05b31c177 100644
--- a/src/AddIns/DisplayBindings/ClassDiagram/ClassDiagramAddin/Src/ClassDiagramViewContent.cs
+++ b/src/AddIns/DisplayBindings/ClassDiagram/ClassDiagramAddin/Src/ClassDiagramViewContent.cs
@@ -164,7 +164,7 @@ namespace ClassDiagramAddin
PadDescriptor padDesc = WorkbenchSingleton.Workbench.GetPad(typeof(ClassEditorPad));
if (padDesc != null)
{
- ((ClassEditor)padDesc.PadContent.Control).SetClass(cci.RepresentedClassType);
+ ((ClassEditor)padDesc.PadContent.Content).SetClass(cci.RepresentedClassType);
}
}
}
diff --git a/src/AddIns/DisplayBindings/ClassDiagram/ClassDiagramAddin/Src/ClassEditorPad.cs b/src/AddIns/DisplayBindings/ClassDiagram/ClassDiagramAddin/Src/ClassEditorPad.cs
index 6502b4f2a9..a32b39c93b 100644
--- a/src/AddIns/DisplayBindings/ClassDiagram/ClassDiagramAddin/Src/ClassEditorPad.cs
+++ b/src/AddIns/DisplayBindings/ClassDiagram/ClassDiagramAddin/Src/ClassEditorPad.cs
@@ -157,7 +157,7 @@ namespace ClassDiagramAddin
///
/// The representing the pad
///
- public override Control Control
+ public override object Content
{
get { return editor; }
}
diff --git a/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XPathQueryPad.cs b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XPathQueryPad.cs
index 8ec5025b6c..7468df1668 100644
--- a/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XPathQueryPad.cs
+++ b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XPathQueryPad.cs
@@ -38,7 +38,7 @@ namespace ICSharpCode.XmlEditor
///
/// The representing the pad.
///
- public override Control Control {
+ public override object Content {
get {
return xPathQueryControl;
}
diff --git a/src/AddIns/Misc/CodeCoverage/Project/Src/CodeCoveragePad.cs b/src/AddIns/Misc/CodeCoverage/Project/Src/CodeCoveragePad.cs
index 54ad5f6aaa..b12882941a 100644
--- a/src/AddIns/Misc/CodeCoverage/Project/Src/CodeCoveragePad.cs
+++ b/src/AddIns/Misc/CodeCoverage/Project/Src/CodeCoveragePad.cs
@@ -38,7 +38,7 @@ namespace ICSharpCode.CodeCoverage
}
}
- public override Control Control {
+ public override object Content {
get {
return codeCoverageControl;
}
diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/CallStackPad.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/CallStackPad.cs
index d8c093c4f1..b82e38377e 100644
--- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/CallStackPad.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/CallStackPad.cs
@@ -58,7 +58,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
ColumnHeader name = new ColumnHeader();
ColumnHeader language = new ColumnHeader();
- public override Control Control {
+ public override object Content {
get {
return callStackList;
}
diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LoadedModulesPad.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LoadedModulesPad.cs
index e0ffbf0e80..d00af96564 100644
--- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LoadedModulesPad.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LoadedModulesPad.cs
@@ -59,7 +59,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
ColumnHeader information = new ColumnHeader();
- public override Control Control {
+ public override object Content {
get {
return loadedModulesList;
}
diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LocalVarPad.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LocalVarPad.cs
index 5846ec6fd7..9dc2bdc369 100644
--- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LocalVarPad.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LocalVarPad.cs
@@ -61,7 +61,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
///
/// This is not used anywhere, but it is neccessary to be overridden in children of AbstractPadContent.
///
- public override Control Control {
+ public override object Content {
get {
return localVarList;
}
diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.cs
index e0a9a39920..735defea3e 100644
--- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.cs
@@ -56,7 +56,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
ColumnHeader priority = new ColumnHeader();
ColumnHeader breaked = new ColumnHeader();
- public override Control Control {
+ public override object Content {
get {
return runningThreadsList;
}
diff --git a/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/DynamicHelpPad.cs b/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/DynamicHelpPad.cs
index 0e51d4c345..c1f943d942 100644
--- a/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/DynamicHelpPad.cs
+++ b/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/DynamicHelpPad.cs
@@ -43,7 +43,7 @@ namespace HtmlHelp2
private string debugPreElement = String.Empty;
private bool enableDebugInfo = HtmlHelp2Environment.Config.DynamicHelpDebugInfos;
- public override Control Control
+ public override object Content
{
get { return dynamicHelpBrowser; }
}
diff --git a/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/IndexPad.cs b/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/IndexPad.cs
index e8278362da..93f8024686 100644
--- a/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/IndexPad.cs
+++ b/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/IndexPad.cs
@@ -33,7 +33,7 @@ namespace HtmlHelp2
{
MSHelp2IndexControl help2IndexControl;
- public override Control Control
+ public override object Content
{
get { return help2IndexControl; }
}
diff --git a/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/IndexResultsPad.cs b/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/IndexResultsPad.cs
index 9e4ed57701..8473f75cde 100644
--- a/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/IndexResultsPad.cs
+++ b/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/IndexResultsPad.cs
@@ -32,7 +32,7 @@ namespace HtmlHelp2
ColumnHeader title = new ColumnHeader();
ColumnHeader location = new ColumnHeader();
- public override Control Control
+ public override object Content
{
get { return listView; }
}
diff --git a/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/SearchPad.cs b/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/SearchPad.cs
index d0e44196e8..269cde3d23 100644
--- a/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/SearchPad.cs
+++ b/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/SearchPad.cs
@@ -47,7 +47,7 @@ namespace HtmlHelp2
Label label2 = new Label();
bool searchIsBusy;
- public override Control Control
+ public override object Content
{
get { return mainPanel; }
}
diff --git a/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/TocPad.cs b/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/TocPad.cs
index f3e46ee6d1..7ca9db4770 100644
--- a/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/TocPad.cs
+++ b/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/TocPad.cs
@@ -34,7 +34,7 @@ namespace HtmlHelp2
{
MSHelp2TocControl help2TocControl;
- public override Control Control
+ public override object Content
{
get { return help2TocControl; }
}
diff --git a/src/AddIns/Misc/ServerTools/ServerBrowserHost.cs b/src/AddIns/Misc/ServerTools/ServerBrowserHost.cs
index e176c16aa2..1b8386b119 100644
--- a/src/AddIns/Misc/ServerTools/ServerBrowserHost.cs
+++ b/src/AddIns/Misc/ServerTools/ServerBrowserHost.cs
@@ -21,8 +21,8 @@ namespace ICSharpCode.ServerTools
///
public class ServerBrowserHost : AbstractPadContent
{
- ElementHost ctl;
-
+ ServerControl serverControl;
+
///
/// ServerBrowserTool hosts one or more TreeViews providing views of types
/// of server. Currently it shows only relational database servers.
@@ -30,17 +30,15 @@ namespace ICSharpCode.ServerTools
public ServerBrowserHost()
{
LoggingService.Debug("Loading ServerBrowserHost");
- ctl = new ElementHost();
- ServerControl serverControl = new ServerControl();
- ctl.Child = serverControl;
+ serverControl = new ServerControl();
}
///
/// The representing the pad
///
- public override Control Control {
+ public override object Content {
get {
- return ctl;
+ return serverControl;
}
}
@@ -57,7 +55,6 @@ namespace ICSharpCode.ServerTools
///
public override void Dispose()
{
- ctl.Dispose();
}
}
}
diff --git a/src/AddIns/Misc/UnitTesting/Src/UnitTestsPad.cs b/src/AddIns/Misc/UnitTesting/Src/UnitTestsPad.cs
index c5ac7bb42b..5424dcc63f 100644
--- a/src/AddIns/Misc/UnitTesting/Src/UnitTestsPad.cs
+++ b/src/AddIns/Misc/UnitTesting/Src/UnitTestsPad.cs
@@ -73,7 +73,7 @@ namespace ICSharpCode.UnitTesting
}
}
- public override Control Control {
+ public override object Content {
get {
return panel;
}
diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
index eaa966e939..78911ccb22 100644
--- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
+++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
@@ -124,6 +124,7 @@
+
diff --git a/src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs b/src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs
index 36e03c90a1..ca4f5f2e8e 100644
--- a/src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs
+++ b/src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs
@@ -493,7 +493,7 @@ namespace ICSharpCode.SharpDevelop.Commands
this.padDescriptor = padDescriptor;
this.Header = ICSharpCode.Core.Presentation.MenuService.ConvertLabel(StringParser.Parse(padDescriptor.Title));
if (!string.IsNullOrEmpty(padDescriptor.Icon)) {
- this.Icon = PresentationResourceService.GetBitmapSource(padDescriptor.Icon);
+ this.Icon = PresentationResourceService.GetImage(padDescriptor.Icon);
}
if (padDescriptor.Shortcut != null) {
this.InputGestureText = padDescriptor.Shortcut;
diff --git a/src/Main/Base/Project/Src/Gui/AbstractPadContent.cs b/src/Main/Base/Project/Src/Gui/AbstractPadContent.cs
index 9bc0fb133b..cf1c99c135 100644
--- a/src/Main/Base/Project/Src/Gui/AbstractPadContent.cs
+++ b/src/Main/Base/Project/Src/Gui/AbstractPadContent.cs
@@ -12,7 +12,7 @@ namespace ICSharpCode.SharpDevelop.Gui
{
public abstract class AbstractPadContent : IPadContent
{
- public abstract Control Control {
+ public abstract object Content {
get;
}
@@ -23,12 +23,5 @@ namespace ICSharpCode.SharpDevelop.Gui
public virtual void Dispose()
{
}
-
- public bool IsVisible {
- get {
- Control ctl = this.Control;
- return ctl.Visible && ctl.Width > 0 && ctl.Height > 0;
- }
- }
}
}
diff --git a/src/Main/Base/Project/Src/Gui/IPadContent.cs b/src/Main/Base/Project/Src/Gui/IPadContent.cs
index 81acb12dd6..caa679dc34 100644
--- a/src/Main/Base/Project/Src/Gui/IPadContent.cs
+++ b/src/Main/Base/Project/Src/Gui/IPadContent.cs
@@ -17,9 +17,10 @@ namespace ICSharpCode.SharpDevelop.Gui
public interface IPadContent : IDisposable
{
///
- /// Returns the Windows.Control for this pad.
+ /// This is the UI element for the view.
+ /// You can use both Windows.Forms and WPF controls.
///
- Control Control {
+ object Content {
get;
}
diff --git a/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/ClassBrowser.cs b/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/ClassBrowser.cs
index 405e641af6..2e3c9bce82 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/ClassBrowser.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/ClassBrowser.cs
@@ -59,7 +59,7 @@ namespace ICSharpCode.SharpDevelop.Gui.ClassBrowser
}
}
- public override Control Control {
+ public override object Content {
get {
return contentPanel;
}
diff --git a/src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/CompilerMessageView.cs b/src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/CompilerMessageView.cs
index 6482048b76..5bf6936679 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/CompilerMessageView.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/CompilerMessageView.cs
@@ -92,7 +92,7 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
- public override Control Control {
+ public override object Content {
get {
return myPanel;
}
@@ -289,9 +289,9 @@ namespace ICSharpCode.SharpDevelop.Gui
break;
}
}
- if (!this.IsVisible) {
- ActivateThisPad();
- }
+ //if (!this.IsVisible) {
+ // ActivateThisPad();
+ //}
}
void SelectCategory(string categoryName, string text)
diff --git a/src/Main/Base/Project/Src/Gui/Pads/DefinitionViewPad.cs b/src/Main/Base/Project/Src/Gui/Pads/DefinitionViewPad.cs
index 1b4427b575..3dd38eefac 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/DefinitionViewPad.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/DefinitionViewPad.cs
@@ -25,7 +25,7 @@ namespace ICSharpCode.SharpDevelop.Gui
///
/// The representing the pad
///
- public override Control Control {
+ public override object Content {
get {
return ctl;
}
@@ -73,7 +73,6 @@ namespace ICSharpCode.SharpDevelop.Gui
void UpdateTick(ParserUpdateStepEventArgs e)
{
- if (!this.IsVisible) return;
LoggingService.Debug("DefinitionViewPad.Update");
ResolveResult res = ResolveAtCaret(e);
@@ -112,7 +111,7 @@ namespace ICSharpCode.SharpDevelop.Gui
return ParserService.Resolve(expr, caret.Line + 1, caret.Column + 1, fileName, content);
} catch (Exception ex) {
disableDefinitionView = true;
- this.Control.Visible = false;
+ ctl.Visible = false;
MessageService.ShowError(ex, "Error resolving at " + (caret.Line + 1) + "/" + (caret.Column + 1)
+ ". DefinitionViewPad is disabled until you restart SharpDevelop.");
return null;
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 4b16bee646..5fa0e1aee3 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorListPad.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorListPad.cs
@@ -70,7 +70,7 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
- public override Control Control {
+ public override object Content {
get {
return contentPanel;
}
diff --git a/src/Main/Base/Project/Src/Gui/Pads/FileScout.cs b/src/Main/Base/Project/Src/Gui/Pads/FileScout.cs
index deba230b32..cb8102259e 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/FileScout.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/FileScout.cs
@@ -325,7 +325,7 @@ namespace ICSharpCode.SharpDevelop.Gui
public class FileScout : UserControl, IPadContent
{
- public Control Control {
+ public object Content {
get {
return this;
}
diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserPad.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserPad.cs
index d6bed2e01d..a3aac0088f 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserPad.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserPad.cs
@@ -63,7 +63,7 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
- public override Control Control {
+ public override object Content {
get {
return projectBrowserPanel;
}
diff --git a/src/Main/Base/Project/Src/Gui/Pads/PropertyPad/PropertyPad.cs b/src/Main/Base/Project/Src/Gui/Pads/PropertyPad/PropertyPad.cs
index 72415e86ec..f408a0571a 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/PropertyPad/PropertyPad.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/PropertyPad/PropertyPad.cs
@@ -123,7 +123,7 @@ namespace ICSharpCode.SharpDevelop.Gui
public static event EventHandler SelectedObjectChanged;
public static event SelectedGridItemChangedEventHandler SelectedGridItemChanged;
- public override Control Control {
+ public override object Content {
get {
return panel;
}
diff --git a/src/Main/Base/Project/Src/Gui/Pads/SearchResultPad/SearchResultPanel.cs b/src/Main/Base/Project/Src/Gui/Pads/SearchResultPad/SearchResultPanel.cs
index 9b890dd1c4..a2d8404d41 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/SearchResultPad/SearchResultPanel.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/SearchResultPad/SearchResultPanel.cs
@@ -50,7 +50,7 @@ namespace SearchAndReplace
string curPattern = null;
IList curResults = null;
- public override Control Control {
+ public override object Content {
get {
return myPanel;
}
diff --git a/src/Main/Base/Project/Src/Gui/Pads/TaskList/TaskListPad.cs b/src/Main/Base/Project/Src/Gui/Pads/TaskList/TaskListPad.cs
index e2cbc4dad4..37b5de294b 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/TaskList/TaskListPad.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/TaskList/TaskListPad.cs
@@ -46,7 +46,7 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
- public override Control Control {
+ public override object Content {
get {
return contentPanel;
}
diff --git a/src/Main/Base/Project/Src/Gui/Pads/ToolsPad.cs b/src/Main/Base/Project/Src/Gui/Pads/ToolsPad.cs
index b56c1ab812..6d9afc08cc 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/ToolsPad.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/ToolsPad.cs
@@ -31,7 +31,7 @@ namespace ICSharpCode.SharpDevelop.Gui
Label noToolsAvailable = new Label();
Control child;
- public override Control Control {
+ public override object Content {
get {
return panel;
}
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 ea06fa9a2b..47f039dc3e 100644
--- a/src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonDockLayout.cs
+++ b/src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonDockLayout.cs
@@ -6,10 +6,13 @@
//
using System;
+using System.Collections.Generic;
using System.IO;
using System.Windows;
-using AvalonDock;
+using System.Windows.Controls;
using System.Windows.Media.Imaging;
+
+using AvalonDock;
using ICSharpCode.Core;
namespace ICSharpCode.SharpDevelop.Gui
@@ -63,17 +66,69 @@ namespace ICSharpCode.SharpDevelop.Gui
public void ShowPad(PadDescriptor content)
{
- throw new NotImplementedException();
+ AvalonPadContent pad = new AvalonPadContent(content);
+ GetPane(Dock.Right).Items.Add(pad);
+ dockingManager.Show(pad, DockableContentState.Docked);
+ }
+
+ DockablePane GetPane(Dock dockPosition)
+ {
+ List allPanes = new List();
+ ListAllPanes(allPanes, dockingManager.Content);
+ // try to find an existing pane
+ DockablePane pane = allPanes.Find(p => DetectDock(p) == dockPosition);
+ if (pane == null) {
+ // none found: create a new pane
+ pane = new DockablePane();
+ UIElement content = (UIElement)dockingManager.Content;
+ ResizingPanel rp = new ResizingPanel();
+ dockingManager.Content = rp;
+ if (dockPosition == Dock.Left || dockPosition == Dock.Right) {
+ rp.Orientation = Orientation.Horizontal;
+ } else {
+ rp.Orientation = Orientation.Vertical;
+ }
+ if (dockPosition == Dock.Left || dockPosition == Dock.Top) {
+ rp.Children.Add(pane);
+ rp.Children.Add(content);
+ } else {
+ rp.Children.Add(content);
+ rp.Children.Add(pane);
+ }
+ }
+ return pane;
+ }
+
+ static Dock? DetectDock(DockablePane pane)
+ {
+ ResizingPanel rp = pane.Parent as ResizingPanel;
+ if (rp != null) {
+ if (rp.Children[0] == pane) {
+ return rp.Orientation == Orientation.Vertical ? Dock.Top : Dock.Left;
+ } else if (rp.Children[rp.Children.Count - 1] == pane) {
+ return rp.Orientation == Orientation.Vertical ? Dock.Bottom : Dock.Right;
+ }
+ }
+ return null;
+ }
+
+ static void ListAllPanes(List list, object content)
+ {
+ if (content is DockablePane) {
+ list.Add((DockablePane)content);
+ } else if (content is ResizingPanel) {
+ ResizingPanel rp = (ResizingPanel)content;
+ foreach (object o in rp.Children)
+ ListAllPanes(list, o);
+ }
}
public void ActivatePad(PadDescriptor content)
{
- throw new NotImplementedException();
}
public void ActivatePad(string fullyQualifiedTypeName)
{
- throw new NotImplementedException();
}
public void HidePad(PadDescriptor content)
@@ -88,7 +143,7 @@ namespace ICSharpCode.SharpDevelop.Gui
public bool IsVisible(PadDescriptor padContent)
{
- throw new NotImplementedException();
+ return false;
}
public void RedrawAllComponents()
@@ -106,6 +161,7 @@ namespace ICSharpCode.SharpDevelop.Gui
public void LoadConfiguration()
{
+ return;
try {
if (File.Exists(LayoutConfiguration.CurrentLayoutFileName)) {
dockingManager.RestoreLayout(LayoutConfiguration.CurrentLayoutFileName);
diff --git a/src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonPadContent.cs b/src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonPadContent.cs
new file mode 100644
index 0000000000..a7e08e615a
--- /dev/null
+++ b/src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonPadContent.cs
@@ -0,0 +1,29 @@
+//
+//
+//
+//
+// $Revision$
+//
+
+using System;
+using AvalonDock;
+using ICSharpCode.Core;
+
+namespace ICSharpCode.SharpDevelop.Gui
+{
+ ///
+ /// .
+ ///
+ sealed class AvalonPadContent : DockableContent
+ {
+ PadDescriptor descriptor;
+
+ public AvalonPadContent(PadDescriptor descriptor)
+ {
+ this.descriptor = descriptor;
+
+ this.Title = StringParser.Parse(descriptor.Title);
+ this.Content = descriptor.Class;
+ }
+ }
+}
diff --git a/src/Main/Base/Project/Src/Gui/Workbench/Layouts/SdiWorkspaceLayout.cs b/src/Main/Base/Project/Src/Gui/Workbench/Layouts/SdiWorkspaceLayout.cs
index 815ddfef90..8831440a1d 100644
--- a/src/Main/Base/Project/Src/Gui/Workbench/Layouts/SdiWorkspaceLayout.cs
+++ b/src/Main/Base/Project/Src/Gui/Workbench/Layouts/SdiWorkspaceLayout.cs
@@ -386,7 +386,7 @@ namespace ICSharpCode.SharpDevelop.Gui
IPadContent content = padDescriptor.PadContent;
if (content == null)
return;
- Control control = content.Control;
+ Control control = content.Content;
control.Dock = DockStyle.Fill;
Controls.Add(control);
}
diff --git a/src/Main/Base/Project/Src/Gui/Workbench/Layouts/SimpleWorkbenchLayout.cs b/src/Main/Base/Project/Src/Gui/Workbench/Layouts/SimpleWorkbenchLayout.cs
index 595bc227bd..71a3cb1955 100644
--- a/src/Main/Base/Project/Src/Gui/Workbench/Layouts/SimpleWorkbenchLayout.cs
+++ b/src/Main/Base/Project/Src/Gui/Workbench/Layouts/SimpleWorkbenchLayout.cs
@@ -90,7 +90,7 @@ namespace ICSharpCode.SharpDevelop.Gui
{
this.Text = StringParser.Parse(desc.Title);
- Control ctl = desc.PadContent.Control;
+ Control ctl = desc.PadContent.Content;
ctl.Dock = DockStyle.Fill;
Controls.Add(ctl);
}
diff --git a/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs b/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs
index c4420f18bf..fed4d34893 100644
--- a/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs
+++ b/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs
@@ -55,6 +55,12 @@ namespace ICSharpCode.SharpDevelop.Gui
public void Initialize()
{
+ foreach (PadDescriptor content in AddInTree.BuildItems(viewContentPath, this, false)) {
+ if (content != null) {
+ ShowPad(content);
+ }
+ }
+
mainMenu.ItemsSource = MenuService.CreateMenuItems(this, mainMenuPath);
toolBars = ToolBarService.CreateToolBars(this, "/SharpDevelop/Workbench/ToolBar");
@@ -69,13 +75,13 @@ namespace ICSharpCode.SharpDevelop.Gui
foreach (ToolBar tb in toolBars) {
ToolBarService.UpdateStatus(tb.ItemsSource);
}
- StatusBarService.RedrawStatusbar();
+
StatusBarService.SetMessage("${res:MainWindow.StatusBar.ReadyMessage}");
}
public ICollection ViewContentCollection {
get {
- return new IViewContent[0];
+ return viewContentCollection.AsReadOnly();
}
}
@@ -87,7 +93,7 @@ namespace ICSharpCode.SharpDevelop.Gui
public IList PadContentCollection {
get {
- return new PadDescriptor[0];
+ return padViewContentCollection.AsReadOnly();
}
}
@@ -135,6 +141,8 @@ namespace ICSharpCode.SharpDevelop.Gui
public void ShowView(IViewContent content)
{
+ if (content == null)
+ throw new ArgumentNullException("content");
System.Diagnostics.Debug.Assert(WorkbenchLayout != null);
viewContentCollection.Add(content);
@@ -145,6 +153,14 @@ namespace ICSharpCode.SharpDevelop.Gui
public void ShowPad(PadDescriptor content)
{
+ if (content == null)
+ throw new ArgumentNullException("content");
+
+ padViewContentCollection.Add(content);
+
+ if (WorkbenchLayout != null) {
+ WorkbenchLayout.ShowPad(content);
+ }
}
public void UnloadPad(PadDescriptor content)
diff --git a/src/Main/Base/Project/Src/Internal/Doozers/PadDescriptor.cs b/src/Main/Base/Project/Src/Internal/Doozers/PadDescriptor.cs
index 66e2025208..fba885751b 100644
--- a/src/Main/Base/Project/Src/Internal/Doozers/PadDescriptor.cs
+++ b/src/Main/Base/Project/Src/Internal/Doozers/PadDescriptor.cs
@@ -113,7 +113,8 @@ namespace ICSharpCode.SharpDevelop
public bool HasFocus {
get {
- return (padContent != null) ? padContent.Control.ContainsFocus : false;
+ return false;
+ //return (padContent != null) ? padContent.Content.ContainsFocus : false;
}
}
diff --git a/src/Main/Base/Project/Src/TextEditor/Bookmarks/Pad/BookmarkPad.cs b/src/Main/Base/Project/Src/TextEditor/Bookmarks/Pad/BookmarkPad.cs
index 045d63e068..ae43fddbf7 100644
--- a/src/Main/Base/Project/Src/TextEditor/Bookmarks/Pad/BookmarkPad.cs
+++ b/src/Main/Base/Project/Src/TextEditor/Bookmarks/Pad/BookmarkPad.cs
@@ -40,7 +40,7 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
Dictionary fileNodes = new Dictionary();
- public override Control Control {
+ public override object Content {
get {
return myPanel;
}
diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/TextEditorBasedPad.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/TextEditorBasedPad.cs
index 60d096c51b..3e9514f7dc 100644
--- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/TextEditorBasedPad.cs
+++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/TextEditorBasedPad.cs
@@ -23,7 +23,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
get;
}
- public override System.Windows.Forms.Control Control {
+ public override object Content {
get { return this.TextEditorControl; }
}
diff --git a/src/Main/ICSharpCode.Core.Presentation/PresentationResourceService.cs b/src/Main/ICSharpCode.Core.Presentation/PresentationResourceService.cs
index 8d4cd70a51..0bc63c61d1 100644
--- a/src/Main/ICSharpCode.Core.Presentation/PresentationResourceService.cs
+++ b/src/Main/ICSharpCode.Core.Presentation/PresentationResourceService.cs
@@ -21,6 +21,23 @@ namespace ICSharpCode.Core.Presentation
{
static readonly Dictionary bitmapCache = new Dictionary();
+ ///
+ /// Creates a new System.Windows.Controls.Image object containing the image with the
+ /// specified resource name.
+ ///
+ ///
+ /// The name of the requested bitmap.
+ ///
+ ///
+ /// Is thrown when the GlobalResource manager can't find a requested resource.
+ ///
+ public static System.Windows.Controls.Image GetImage(string name)
+ {
+ return new System.Windows.Controls.Image {
+ Source = GetBitmapSource(name)
+ };
+ }
+
///
/// Returns a BitmapSource from the resource database, it handles localization
/// transparent for the user.
diff --git a/src/Main/ICSharpCode.Core.Presentation/ToolBar/ToolBarButton.cs b/src/Main/ICSharpCode.Core.Presentation/ToolBar/ToolBarButton.cs
index 5c48bd415a..535b7cdc0a 100644
--- a/src/Main/ICSharpCode.Core.Presentation/ToolBar/ToolBarButton.cs
+++ b/src/Main/ICSharpCode.Core.Presentation/ToolBar/ToolBarButton.cs
@@ -32,10 +32,8 @@ namespace ICSharpCode.Core.Presentation
}
if (codon.Properties.Contains("icon")) {
- Image image = new Image {
- Source = PresentationResourceService.GetBitmapSource(StringParser.Parse(codon.Properties["icon"])),
- Height = 16
- };
+ Image image = PresentationResourceService.GetImage(StringParser.Parse(codon.Properties["icon"]));
+ image.Height = 16;
image.SetResourceReference(StyleProperty, ToolBarService.ImageStyleKey);
this.Content = image;
}
diff --git a/src/Main/ICSharpCode.SharpDevelop.Sda/Src/ExceptionBox.cs b/src/Main/ICSharpCode.SharpDevelop.Sda/Src/ExceptionBox.cs
index 83713119ba..c4b108db29 100644
--- a/src/Main/ICSharpCode.SharpDevelop.Sda/Src/ExceptionBox.cs
+++ b/src/Main/ICSharpCode.SharpDevelop.Sda/Src/ExceptionBox.cs
@@ -40,6 +40,13 @@ namespace ICSharpCode.SharpDevelop.Sda
Application.ThreadException += ShowErrorBox;
AppDomain.CurrentDomain.UnhandledException += ShowErrorBox;
MessageService.CustomErrorReporter = ShowErrorBox;
+ System.Windows.Threading.Dispatcher.CurrentDispatcher.UnhandledException += Dispatcher_UnhandledException;
+ }
+
+ static void Dispatcher_UnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
+ {
+ ShowErrorBox(e.Exception, "Unhandled WPF exception", false);
+ e.Handled = true;
}
static void ShowErrorBox(object sender, ThreadExceptionEventArgs e)
diff --git a/src/Main/StartUp/Project/app.template.config b/src/Main/StartUp/Project/app.template.config
index 20723149f3..4cb2b50c7a 100644
--- a/src/Main/StartUp/Project/app.template.config
+++ b/src/Main/StartUp/Project/app.template.config
@@ -17,6 +17,14 @@
+
+
+
+
+
+
+
+