Browse Source

Fixed use of ActiveWorkbenchWindow / ActiveViewContent / ActiveContent.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2563 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
89bba2c88c
  1. 10
      src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/PackageFilesView.cs
  2. 35
      src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDialogDesigner.cs
  3. 1
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs
  4. 6
      src/AddIns/DisplayBindings/XmlEditor/Project/Src/XPathQueryPad.cs
  5. 14
      src/Main/Base/Project/Src/Gui/IWorkbench.cs
  6. 6
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserPad.cs
  7. 6
      src/Main/Base/Project/Src/Gui/Pads/PropertyPad/PropertyPad.cs
  8. 6
      src/Main/Base/Project/Src/Gui/Pads/ToolsPad.cs
  9. 32
      src/Main/Base/Project/Src/Gui/Workbench/DefaultWorkbench.cs
  10. 10
      src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs
  11. 4
      src/Main/Base/Project/Src/Services/ParserService/ParserService.cs
  12. 4
      src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs
  13. 6
      src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Gui/SearchAndReplacePanel.cs

10
src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/PackageFilesView.cs

@ -44,7 +44,7 @@ namespace ICSharpCode.WixBinding
TitleName = StringParser.Parse("${res:ICSharpCode.WixBinding.PackageFilesView.Title}"); TitleName = StringParser.Parse("${res:ICSharpCode.WixBinding.PackageFilesView.Title}");
this.project = project; this.project = project;
WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged += ActiveWorkbenchWindowChanged; WorkbenchSingleton.Workbench.ActiveViewContentChanged += ActiveViewContentChanged;
} }
public static PackageFilesView ActiveView { public static PackageFilesView ActiveView {
@ -98,7 +98,7 @@ namespace ICSharpCode.WixBinding
public override void Dispose() public override void Dispose()
{ {
if (packageFilesControl != null) { if (packageFilesControl != null) {
WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged -= ActiveWorkbenchWindowChanged; WorkbenchSingleton.Workbench.ActiveViewContentChanged -= ActiveViewContentChanged;
packageFilesControl.Dispose(); packageFilesControl.Dispose();
packageFilesControl = null; packageFilesControl = null;
} }
@ -214,7 +214,7 @@ namespace ICSharpCode.WixBinding
/// Wix document then we update the document's contents. When the user switches /// Wix document then we update the document's contents. When the user switches
/// back we reload the view if the corresponding Wix document is open. /// back we reload the view if the corresponding Wix document is open.
/// </summary> /// </summary>
void ActiveWorkbenchWindowChanged(object source, EventArgs e) void ActiveViewContentChanged(object source, EventArgs e)
{ {
if (IsWixDocumentWindowActive) { if (IsWixDocumentWindowActive) {
if (IsDirty) { if (IsDirty) {
@ -238,7 +238,7 @@ namespace ICSharpCode.WixBinding
get { get {
WixDocument document = packageFilesControl.Document; WixDocument document = packageFilesControl.Document;
if (document != null) { if (document != null) {
IViewContent view = WorkbenchSingleton.Workbench.ActiveContent as IViewContent; IViewContent view = WorkbenchSingleton.Workbench.ActiveViewContent;
if (view != null) { if (view != null) {
return FileUtility.IsEqualFileName(view.PrimaryFileName, document.FileName); return FileUtility.IsEqualFileName(view.PrimaryFileName, document.FileName);
} }
@ -252,7 +252,7 @@ namespace ICSharpCode.WixBinding
/// </summary> /// </summary>
bool IsActiveWindow { bool IsActiveWindow {
get { get {
return Object.ReferenceEquals(WorkbenchSingleton.Workbench.ActiveContent, this); return Object.ReferenceEquals(WorkbenchSingleton.Workbench.ActiveViewContent, this);
} }
} }

35
src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDialogDesigner.cs

@ -71,9 +71,9 @@ namespace ICSharpCode.WixBinding
JumpToDialogElement(id); JumpToDialogElement(id);
if (base.IsFormsDesignerVisible) { if (base.IsFormsDesignerVisible) {
// Reload so the correct dialog is displayed. // Reload so the correct dialog is displayed.
SaveToPrimary(); base.SaveToPrimary();
DialogId = id; DialogId = id;
LoadFromPrimary(); base.LoadFromPrimary();
} else { } else {
// Need to open the designer. // Need to open the designer.
DialogId = id; DialogId = id;
@ -81,22 +81,7 @@ namespace ICSharpCode.WixBinding
} }
} }
/* //DG: protected override void LoadFromPrimary()
/// <summary>
/// Set dialog id to null after calling base.Deselecting since base.Deselecting
/// calls MergeFormChanges which will reference this dialog id.
/// </summary>
public override void Deselecting()
{
base.Deselecting();
DialogId = null;
RemoveWixToolboxSideTab();
}
/// <summary>
/// Designer has been selected.
/// </summary>
public override void Selected()
{ {
try { try {
if (!ignoreDialogIdSelectedInTextEditor) { if (!ignoreDialogIdSelectedInTextEditor) {
@ -114,20 +99,8 @@ namespace ICSharpCode.WixBinding
DialogId = "InvalidXML"; DialogId = "InvalidXML";
AddToErrorList(ex); AddToErrorList(ex);
} }
base.Selected(); base.LoadFromPrimary();
RemoveFormsDesignerToolboxSideTabs();
AddWixToolboxSideTab();
}
/// <summary>
/// Removes the WinForms toolbox side tabs.
/// </summary>
public override void SwitchedTo()
{
base.SwitchedTo();
RemoveFormsDesignerToolboxSideTabs();
} }
*/
/// <summary> /// <summary>
/// Gets the Wix document filename. /// Gets the Wix document filename.

1
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs

@ -359,6 +359,7 @@ namespace ICSharpCode.FormsDesigner
protected override void LoadFromPrimary() protected override void LoadFromPrimary()
{ {
UnloadDesigner();
Reload(); Reload();
} }

6
src/AddIns/DisplayBindings/XmlEditor/Project/Src/XPathQueryPad.cs

@ -23,7 +23,7 @@ namespace ICSharpCode.XmlEditor
public XPathQueryPad() public XPathQueryPad()
{ {
xPathQueryControl = new XPathQueryControl(); xPathQueryControl = new XPathQueryControl();
WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged += ActiveWorkbenchWindowChanged; WorkbenchSingleton.Workbench.ActiveViewContentChanged += ActiveViewContentChanged;
Properties properties = PropertyService.Get(XPathQueryControlProperties, new Properties()); Properties properties = PropertyService.Get(XPathQueryControlProperties, new Properties());
xPathQueryControl.SetMemento(properties); xPathQueryControl.SetMemento(properties);
instance = this; instance = this;
@ -48,7 +48,7 @@ namespace ICSharpCode.XmlEditor
{ {
if (!disposed) { if (!disposed) {
disposed = true; disposed = true;
WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged -= ActiveWorkbenchWindowChanged; WorkbenchSingleton.Workbench.ActiveViewContentChanged -= ActiveViewContentChanged;
Properties properties = xPathQueryControl.CreateMemento(); Properties properties = xPathQueryControl.CreateMemento();
PropertyService.Set(XPathQueryControlProperties, properties); PropertyService.Set(XPathQueryControlProperties, properties);
xPathQueryControl.Dispose(); xPathQueryControl.Dispose();
@ -60,7 +60,7 @@ namespace ICSharpCode.XmlEditor
xPathQueryControl.RemoveXPathNodeTextMarkers(); xPathQueryControl.RemoveXPathNodeTextMarkers();
} }
void ActiveWorkbenchWindowChanged(object source, EventArgs e) void ActiveViewContentChanged(object source, EventArgs e)
{ {
xPathQueryControl.ActiveWindowChanged(); xPathQueryControl.ActiveWindowChanged();
} }

14
src/Main/Base/Project/Src/Gui/IWorkbench.cs

@ -47,14 +47,14 @@ namespace ICSharpCode.SharpDevelop.Gui
/// <summary> /// <summary>
/// The active workbench window. /// The active workbench window.
/// This is the window containing the active view content.
/// </summary> /// </summary>
IWorkbenchWindow ActiveWorkbenchWindow { IWorkbenchWindow ActiveWorkbenchWindow {
get; get;
} }
/// <summary> /// <summary>
/// Is called, when the workbench window which the user has into /// Is called, when the ActiveWorkbenchWindow property changes.
/// the foreground (e.g. editable) changed to a new one.
/// </summary> /// </summary>
event EventHandler ActiveWorkbenchWindowChanged; event EventHandler ActiveWorkbenchWindowChanged;
@ -71,13 +71,19 @@ namespace ICSharpCode.SharpDevelop.Gui
event EventHandler ActiveViewContentChanged; event EventHandler ActiveViewContentChanged;
/// <summary> /// <summary>
/// The active content. This can be either a IViewContent or a IPadContent, depending on /// The active content, depending on where the focus currently is.
/// where the focus currently is. /// If a document is currently active, this will be equal to ActiveViewContent,
/// if a pad has the focus, this property will return the IPadContent instance.
/// </summary> /// </summary>
object ActiveContent { object ActiveContent {
get; get;
} }
/// <summary>
/// Is called, when the active content has changed.
/// </summary>
event EventHandler ActiveContentChanged;
IWorkbenchLayout WorkbenchLayout { IWorkbenchLayout WorkbenchLayout {
get; get;
set; set;

6
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserPad.cs

@ -82,11 +82,11 @@ namespace ICSharpCode.SharpDevelop.Project
ProjectService.SolutionClosed += ProjectServiceSolutionClosed; ProjectService.SolutionClosed += ProjectServiceSolutionClosed;
ProjectService.SolutionPreferencesSaving += ProjectServiceSolutionPreferencesSaving; ProjectService.SolutionPreferencesSaving += ProjectServiceSolutionPreferencesSaving;
WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged += ActiveWindowChanged; WorkbenchSingleton.Workbench.ActiveContentChanged += ActiveContentChanged;
if (ProjectService.OpenSolution != null) { if (ProjectService.OpenSolution != null) {
ProjectServiceSolutionLoaded(null, new SolutionEventArgs(ProjectService.OpenSolution)); ProjectServiceSolutionLoaded(null, new SolutionEventArgs(ProjectService.OpenSolution));
} }
ActiveWindowChanged(null, null); ActiveContentChanged(null, null);
} }
public void StartLabelEdit(ExtTreeNode node) public void StartLabelEdit(ExtTreeNode node)
@ -112,7 +112,7 @@ namespace ICSharpCode.SharpDevelop.Project
string lastFileName; string lastFileName;
void ActiveWindowChanged(object sender, EventArgs e) void ActiveContentChanged(object sender, EventArgs e)
{ {
if (WorkbenchSingleton.Workbench.ActiveContent == this) { if (WorkbenchSingleton.Workbench.ActiveContent == this) {
projectBrowserPanel.ProjectBrowserControl.PadActivated(); projectBrowserPanel.ProjectBrowserControl.PadActivated();

6
src/Main/Base/Project/Src/Gui/Pads/PropertyPad/PropertyPad.cs

@ -97,7 +97,7 @@ namespace ICSharpCode.SharpDevelop.Gui
} }
} }
void WorkbenchWindowChanged(object sender, EventArgs e) void WorkbenchActiveContentChanged(object sender, EventArgs e)
{ {
IHasPropertyContainer c = WorkbenchSingleton.Workbench.ActiveContent as IHasPropertyContainer; IHasPropertyContainer c = WorkbenchSingleton.Workbench.ActiveContent as IHasPropertyContainer;
if (c == null) { if (c == null) {
@ -148,8 +148,8 @@ namespace ICSharpCode.SharpDevelop.Gui
grid.ContextMenuStrip = MenuService.CreateContextMenu(this, "/SharpDevelop/Views/PropertyPad/ContextMenu"); grid.ContextMenuStrip = MenuService.CreateContextMenu(this, "/SharpDevelop/Views/PropertyPad/ContextMenu");
LoggingService.Debug("PropertyPad created"); LoggingService.Debug("PropertyPad created");
WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged += WorkbenchWindowChanged; WorkbenchSingleton.Workbench.ActiveContentChanged += WorkbenchActiveContentChanged;
WorkbenchWindowChanged(null, null); WorkbenchActiveContentChanged(null, null);
} }
void CombineClosedEvent(object sender, EventArgs e) void CombineClosedEvent(object sender, EventArgs e)

6
src/Main/Base/Project/Src/Gui/Pads/ToolsPad.cs

@ -44,8 +44,8 @@ namespace ICSharpCode.SharpDevelop.Gui
panel.Controls.Add(noToolsAvailable); panel.Controls.Add(noToolsAvailable);
child = noToolsAvailable; child = noToolsAvailable;
WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged += WorkbenchWindowChanged; WorkbenchSingleton.Workbench.ActiveContentChanged += WorkbenchActiveContentChanged;
WorkbenchWindowChanged(null, null); WorkbenchActiveContentChanged(null, null);
} }
void SetChild(Control newChild) void SetChild(Control newChild)
@ -58,7 +58,7 @@ namespace ICSharpCode.SharpDevelop.Gui
} }
} }
void WorkbenchWindowChanged(object sender, EventArgs e) void WorkbenchActiveContentChanged(object sender, EventArgs e)
{ {
IToolsHost th = WorkbenchSingleton.Workbench.ActiveContent as IToolsHost; IToolsHost th = WorkbenchSingleton.Workbench.ActiveContent as IToolsHost;
if (th == null) { if (th == null) {

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

@ -136,8 +136,10 @@ namespace ICSharpCode.SharpDevelop.Gui
if (layout == null) { if (layout == null) {
this.ActiveWorkbenchWindow = null; this.ActiveWorkbenchWindow = null;
this.ActiveContent = null;
} else { } else {
this.ActiveWorkbenchWindow = layout.ActiveWorkbenchWindow; this.ActiveWorkbenchWindow = layout.ActiveWorkbenchWindow;
this.ActiveContent = layout.ActiveContent;
} }
} }
@ -157,13 +159,13 @@ namespace ICSharpCode.SharpDevelop.Gui
if (activeWorkbenchWindow != null) { if (activeWorkbenchWindow != null) {
activeWorkbenchWindow.ActiveViewContentChanged += OnWorkbenchActiveViewContentChanged; activeWorkbenchWindow.ActiveViewContentChanged += OnWorkbenchActiveViewContentChanged;
} }
if (ActiveWorkbenchWindowChanged != null) {
ActiveWorkbenchWindowChanged(this, EventArgs.Empty);
}
OnWorkbenchActiveViewContentChanged(null, null); OnWorkbenchActiveViewContentChanged(null, null);
} }
// raise even when activeWorkbenchWindow didn't change because we also use
// ActiveWorkbenchWindowChanged to signal changes in ActiveContent (when switching between pads)
if (ActiveWorkbenchWindowChanged != null) {
ActiveWorkbenchWindowChanged(this, EventArgs.Empty);
}
} }
} }
@ -175,6 +177,8 @@ namespace ICSharpCode.SharpDevelop.Gui
this.ActiveViewContent = window.ActiveViewContent; this.ActiveViewContent = window.ActiveViewContent;
else else
this.ActiveViewContent = null; this.ActiveViewContent = null;
this.ActiveContent = layout.ActiveContent;
} }
public event EventHandler ActiveWorkbenchWindowChanged; public event EventHandler ActiveWorkbenchWindowChanged;
@ -204,14 +208,26 @@ namespace ICSharpCode.SharpDevelop.Gui
/// </summary> /// </summary>
public event EventHandler ActiveViewContentChanged; public event EventHandler ActiveViewContentChanged;
object activeContent;
public object ActiveContent { public object ActiveContent {
get { get {
if (layout == null) { return activeContent;
return null; }
private set {
if (activeContent != value) {
activeContent = value;
if (ActiveContentChanged != null) {
ActiveContentChanged(this, EventArgs.Empty);
}
} }
return layout.ActiveContent;
} }
} }
/// <summary>
/// Is called, when the active content has changed.
/// </summary>
public event EventHandler ActiveContentChanged;
#endregion #endregion
public DefaultWorkbench() public DefaultWorkbench()

10
src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs

@ -102,6 +102,16 @@ namespace ICSharpCode.SharpDevelop.Gui
// initialize workbench-dependent services: // initialize workbench-dependent services:
Project.ProjectService.InitializeService(); Project.ProjectService.InitializeService();
NavigationService.InitializeService(); NavigationService.InitializeService();
workbench.ActiveContentChanged += delegate {
Console.WriteLine("ActiveContentChanged to " + workbench.ActiveContent);
};
workbench.ActiveViewContentChanged += delegate {
Console.WriteLine("ActiveViewContentChanged to " + workbench.ActiveViewContent);
};
workbench.ActiveWorkbenchWindowChanged += delegate {
Console.WriteLine("ActiveWorkbenchWindowChanged to " + workbench.ActiveWorkbenchWindow);
};
} }
/// <summary> /// <summary>

4
src/Main/Base/Project/Src/Services/ParserService/ParserService.cs

@ -513,8 +513,8 @@ namespace ICSharpCode.SharpDevelop
defaultProjectContent.AddReferencedContent(ParserService.GetProjectContentForReference(item)); defaultProjectContent.AddReferencedContent(ParserService.GetProjectContentForReference(item));
} }
if (WorkbenchSingleton.Workbench != null) { if (WorkbenchSingleton.Workbench != null) {
WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged += delegate { WorkbenchSingleton.Workbench.ActiveViewContentChanged += delegate {
if (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow != null) { if (WorkbenchSingleton.Workbench.ActiveViewContent != null) {
string file = WorkbenchSingleton.Workbench.ActiveViewContent.PrimaryFileName; string file = WorkbenchSingleton.Workbench.ActiveViewContent.PrimaryFileName;
if (file != null) { if (file != null) {
IParser parser = GetParser(file); IParser parser = GetParser(file);

4
src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs

@ -60,7 +60,7 @@ namespace ICSharpCode.SharpDevelop.Project
{ {
if (!initialized) { if (!initialized) {
initialized = true; initialized = true;
WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged += ActiveWindowChanged; WorkbenchSingleton.Workbench.ActiveViewContentChanged += ActiveViewContentChanged;
FileService.FileRenamed += FileServiceFileRenamed; FileService.FileRenamed += FileServiceFileRenamed;
FileService.FileRemoved += FileServiceFileRemoved; FileService.FileRemoved += FileServiceFileRemoved;
} }
@ -172,7 +172,7 @@ namespace ICSharpCode.SharpDevelop.Project
} }
} }
static void ActiveWindowChanged(object sender, EventArgs e) static void ActiveViewContentChanged(object sender, EventArgs e)
{ {
IViewContent viewContent = WorkbenchSingleton.Workbench.ActiveViewContent; IViewContent viewContent = WorkbenchSingleton.Workbench.ActiveViewContent;
if (OpenSolution == null || viewContent == null) { if (OpenSolution == null || viewContent == null) {

6
src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Gui/SearchAndReplacePanel.cs

@ -341,7 +341,7 @@ namespace SearchAndReplace
return null; return null;
} }
void WorkbenchWindowChanged(object source, EventArgs e) void WorkbenchActiveViewContentChanged(object source, EventArgs e)
{ {
TextEditorControl activeTextEditorControl = SearchReplaceUtilities.GetActiveTextEditor(); TextEditorControl activeTextEditorControl = SearchReplaceUtilities.GetActiveTextEditor();
if (activeTextEditorControl != this.textEditor) { if (activeTextEditorControl != this.textEditor) {
@ -369,7 +369,7 @@ namespace SearchAndReplace
void RemoveActiveWindowChangedHandler() void RemoveActiveWindowChangedHandler()
{ {
WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged -= WorkbenchWindowChanged; WorkbenchSingleton.Workbench.ActiveViewContentChanged -= WorkbenchActiveViewContentChanged;
} }
/// <summary> /// <summary>
@ -398,7 +398,7 @@ namespace SearchAndReplace
findFirst = true; findFirst = true;
selection = GetCurrentTextSelection(); selection = GetCurrentTextSelection();
AddSelectionChangedHandler(SearchReplaceUtilities.GetActiveTextEditor()); AddSelectionChangedHandler(SearchReplaceUtilities.GetActiveTextEditor());
WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged += WorkbenchWindowChanged; WorkbenchSingleton.Workbench.ActiveViewContentChanged += WorkbenchActiveViewContentChanged;
} }
void RemoveSelectionSearchHandlers() void RemoveSelectionSearchHandlers()

Loading…
Cancel
Save