Browse Source

Implemented Active*ContentChanged events.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0wpf@3322 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 17 years ago
parent
commit
606cb75ed5
  1. 2
      src/AddIns/BackendBindings/FSharp/FSharpBinding/Project/FSharpBinding.fsproj
  2. 6
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/FormKeyHandler.cs
  3. 4
      src/AddIns/Misc/PInvokeAddIn/Project/Src/InsertPInvokeSignaturesCommand.cs
  4. 11
      src/Main/Base/Project/Src/Gui/AbstractPadContent.cs
  5. 8
      src/Main/Base/Project/Src/Gui/IWorkbenchLayout.cs
  6. 4
      src/Main/Base/Project/Src/Gui/Workbench/DefaultWorkbench.cs
  7. 11
      src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonDockLayout.cs
  8. 86
      src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs

2
src/AddIns/BackendBindings/FSharp/FSharpBinding/Project/FSharpBinding.fsproj

@ -28,7 +28,7 @@ @@ -28,7 +28,7 @@
<HintPath>..\..\RequiredLibraries\FSharp.Build.Tasks.dll</HintPath>
</Reference>
<Reference Include="log4net">
<HintPath>..\..\..\..\..\..\..\3.0\SharpDevelop\src\Libraries\log4net\log4net.dll</HintPath>
<HintPath>..\..\..\..\..\Libraries\log4net\log4net.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Microsoft.Build.Engine, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">

6
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/FormKeyHandler.cs

@ -70,11 +70,7 @@ namespace ICSharpCode.FormsDesigner @@ -70,11 +70,7 @@ namespace ICSharpCode.FormsDesigner
return false;
}
if (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow == null) {
return false;
}
FormsDesignerViewContent formDesigner = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ActiveViewContent as FormsDesignerViewContent;
FormsDesignerViewContent formDesigner = WorkbenchSingleton.Workbench.ActiveContent as FormsDesignerViewContent;
if (formDesigner == null || formDesigner.Host == null) {
return false;

4
src/AddIns/Misc/PInvokeAddIn/Project/Src/InsertPInvokeSignaturesCommand.cs

@ -16,7 +16,7 @@ namespace ICSharpCode.PInvokeAddIn @@ -16,7 +16,7 @@ namespace ICSharpCode.PInvokeAddIn
/// insert one or more of them into the code.
/// </summary>
public class InsertPInvokeSignaturesCommand : AbstractMenuCommand
{
{
/// <summary>
/// Starts the command.
/// </summary>
@ -24,7 +24,7 @@ namespace ICSharpCode.PInvokeAddIn @@ -24,7 +24,7 @@ namespace ICSharpCode.PInvokeAddIn
{
// Show PInvoke dialog.
using(InsertPInvokeSignaturesForm form = new InsertPInvokeSignaturesForm()) {
form.ShowDialog(WorkbenchSingleton.MainWin32Window);
form.ShowDialog(WorkbenchSingleton.MainWin32Window);
}
}
}

11
src/Main/Base/Project/Src/Gui/AbstractPadContent.cs

@ -23,5 +23,16 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -23,5 +23,16 @@ namespace ICSharpCode.SharpDevelop.Gui
public virtual void Dispose()
{
}
protected bool IsVisible {
get {
if (WorkbenchSingleton.Workbench == null || WorkbenchSingleton.Workbench.WorkbenchLayout == null)
return false;
PadDescriptor d = WorkbenchSingleton.Workbench.GetPad(GetType());
if (d == null)
return false;
return WorkbenchSingleton.Workbench.WorkbenchLayout.IsVisible(d);
}
}
}
}

8
src/Main/Base/Project/Src/Gui/IWorkbenchLayout.cs

@ -32,6 +32,8 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -32,6 +32,8 @@ namespace ICSharpCode.SharpDevelop.Gui
get;
}
event EventHandler ActiveContentChanged;
/// <summary>
/// Attaches this layout manager to a workbench object.
/// </summary>
@ -82,11 +84,5 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -82,11 +84,5 @@ namespace ICSharpCode.SharpDevelop.Gui
void LoadConfiguration();
void StoreConfiguration();
/// <summary>
/// Is called, when the workbench window which the user has into
/// the foreground (e.g. editable) changed to a new one.
/// </summary>
event EventHandler ActiveWorkbenchWindowChanged;
}
}

4
src/Main/Base/Project/Src/Gui/Workbench/DefaultWorkbench.cs

@ -94,12 +94,12 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -94,12 +94,12 @@ namespace ICSharpCode.SharpDevelop.Gui
}
set {
if (layout != null) {
layout.ActiveWorkbenchWindowChanged -= OnActiveWindowChanged;
layout.ActiveContentChanged -= OnActiveWindowChanged;
layout.Detach();
}
value.Attach(this);
layout = value;
layout.ActiveWorkbenchWindowChanged += OnActiveWindowChanged;
layout.ActiveContentChanged += OnActiveWindowChanged;
OnActiveWindowChanged(null, null);
}
}

11
src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonDockLayout.cs

@ -38,9 +38,18 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -38,9 +38,18 @@ namespace ICSharpCode.SharpDevelop.Gui
public AvalonDockLayout()
{
dockingManager.Content = documentPane;
dockingManager.PropertyChanged += dockingManager_PropertyChanged;
}
public event EventHandler ActiveWorkbenchWindowChanged;
void dockingManager_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (e.PropertyName == "ActiveContent") {
if (ActiveContentChanged != null)
ActiveContentChanged(this, e);
}
}
public event EventHandler ActiveContentChanged;
public IWorkbenchWindow ActiveWorkbenchWindow {
get {

86
src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs

@ -9,6 +9,7 @@ using ICSharpCode.Core.Presentation; @@ -9,6 +9,7 @@ using ICSharpCode.Core.Presentation;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using ICSharpCode.Core;
@ -28,7 +29,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -28,7 +29,7 @@ namespace ICSharpCode.SharpDevelop.Gui
public event EventHandler ActiveContentChanged;
public event ViewContentEventHandler ViewOpened;
protected void OnViewOpened(ViewContentEventArgs e)
void OnViewOpened(ViewContentEventArgs e)
{
if (ViewOpened != null) {
ViewOpened(this, e);
@ -87,7 +88,8 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -87,7 +88,8 @@ namespace ICSharpCode.SharpDevelop.Gui
public IList<IWorkbenchWindow> WorkbenchWindowCollection {
get {
return new IWorkbenchWindow[0];
return viewContentCollection.Select(vc => vc.WorkbenchWindow)
.Distinct().ToList().AsReadOnly();
}
}
@ -97,21 +99,85 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -97,21 +99,85 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
IWorkbenchWindow activeWorkbenchWindow;
public IWorkbenchWindow ActiveWorkbenchWindow {
get {
return null;
return activeWorkbenchWindow;
}
private set {
if (activeWorkbenchWindow != value) {
if (activeWorkbenchWindow != null) {
activeWorkbenchWindow.ActiveViewContentChanged -= WorkbenchWindowActiveViewContentChanged;
}
activeWorkbenchWindow = value;
if (value != null) {
value.ActiveViewContentChanged += WorkbenchWindowActiveViewContentChanged;
}
if (ActiveWorkbenchWindowChanged != null) {
ActiveWorkbenchWindowChanged(this, EventArgs.Empty);
}
WorkbenchWindowActiveViewContentChanged(null, null);
}
}
}
void WorkbenchWindowActiveViewContentChanged(object sender, EventArgs e)
{
if (workbenchLayout != null) {
// update ActiveViewContent
IWorkbenchWindow window = this.ActiveWorkbenchWindow;
if (window != null)
this.ActiveViewContent = window.ActiveViewContent;
else
this.ActiveViewContent = null;
// update ActiveContent
this.ActiveContent = workbenchLayout.ActiveContent;
}
}
void OnActiveWindowChanged(object sender, EventArgs e)
{
if (workbenchLayout != null) {
this.ActiveContent = workbenchLayout.ActiveContent;
this.ActiveWorkbenchWindow = workbenchLayout.ActiveWorkbenchWindow;
} else {
this.ActiveContent = null;
this.ActiveWorkbenchWindow = null;
}
}
IViewContent activeViewContent;
public IViewContent ActiveViewContent {
get {
return null;
get { return activeViewContent; }
private set {
if (activeViewContent != value) {
activeViewContent = value;
if (ActiveViewContentChanged != null) {
ActiveViewContentChanged(this, EventArgs.Empty);
}
}
}
}
object activeContent;
public object ActiveContent {
get {
return null;
get { return activeContent; }
private set {
if (activeContent != value) {
activeContent = value;
if (ActiveContentChanged != null) {
ActiveContentChanged(this, EventArgs.Empty);
}
}
}
}
@ -123,15 +189,15 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -123,15 +189,15 @@ namespace ICSharpCode.SharpDevelop.Gui
}
set {
if (workbenchLayout != null) {
//workbenchLayout.ActiveWorkbenchWindowChanged -= OnActiveWindowChanged;
workbenchLayout.ActiveContentChanged -= OnActiveWindowChanged;
workbenchLayout.Detach();
}
if (value != null) {
value.Attach(this);
value.ActiveContentChanged += OnActiveWindowChanged;
}
workbenchLayout = value;
//workbenchLayout.ActiveWorkbenchWindowChanged += OnActiveWindowChanged;
//OnActiveWindowChanged(null, null);
OnActiveWindowChanged(null, null);
}
}

Loading…
Cancel
Save