Browse Source

Lock view contents when debugger starts and refresh icon since we don't support EnC (yet).

pull/15/head
Eusebiu Marcu 15 years ago
parent
commit
a491d12952
  1. 2
      src/AddIns/BackendBindings/Scripting/Test/Utils/MockTextEditor.cs
  2. 2
      src/AddIns/BackendBindings/WixBinding/Test/Utils/MockTextEditor.cs
  3. 4
      src/AddIns/BackendBindings/WixBinding/Test/Utils/MockWorkbenchWindow.cs
  4. 45
      src/AddIns/Debugger/Debugger.AddIn/Service/WindowsDebugger.cs
  5. 2
      src/AddIns/DisplayBindings/XmlEditor/Test/Utils/MockTextEditor.cs
  6. 5
      src/Main/Base/Project/Src/Editor/AvalonEdit/AvalonEditTextEditorAdapter.cs
  7. 2
      src/Main/Base/Project/Src/Editor/ITextEditor.cs
  8. 5
      src/Main/Base/Project/Src/Gui/IWorkbenchWindow.cs
  9. 2
      src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonWorkbenchWindow.cs

2
src/AddIns/BackendBindings/Scripting/Test/Utils/MockTextEditor.cs

@ -62,6 +62,8 @@ namespace ICSharpCode.Scripting.Tests.Utils
} }
} }
public bool IsReadOnly { get; set; }
public int SelectionLength { get; set; } public int SelectionLength { get; set; }
public string SelectedText { get; set; } public string SelectedText { get; set; }

2
src/AddIns/BackendBindings/WixBinding/Test/Utils/MockTextEditor.cs

@ -110,6 +110,8 @@ namespace WixBinding.Tests.Utils
} }
} }
public bool IsReadOnly { get; set; }
public FileName FileName { public FileName FileName {
get { get {
throw new NotImplementedException(); throw new NotImplementedException();

4
src/AddIns/BackendBindings/WixBinding/Test/Utils/MockWorkbenchWindow.cs

@ -69,6 +69,10 @@ namespace WixBinding.Tests.Utils
get { return selectWindowMethodCalled; } get { return selectWindowMethodCalled; }
} }
public void UpdateActiveViewContent()
{
}
public event EventHandler ActiveViewContentChanged; public event EventHandler ActiveViewContentChanged;
protected virtual void OnActiveViewContentChanged(EventArgs e) protected virtual void OnActiveViewContentChanged(EventArgs e)

45
src/AddIns/Debugger/Debugger.AddIn/Service/WindowsDebugger.cs

@ -22,6 +22,8 @@ using ICSharpCode.NRefactory.Ast;
using ICSharpCode.NRefactory.Visitors; using ICSharpCode.NRefactory.Visitors;
using ICSharpCode.SharpDevelop.Bookmarks; using ICSharpCode.SharpDevelop.Bookmarks;
using ICSharpCode.SharpDevelop.Debugging; using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.AvalonEdit;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Gui.OptionPanels; using ICSharpCode.SharpDevelop.Gui.OptionPanels;
using ICSharpCode.SharpDevelop.Project; using ICSharpCode.SharpDevelop.Project;
@ -764,16 +766,59 @@ namespace ICSharpCode.SharpDevelop.Services
if (debugger.Processes.Count == 1) { if (debugger.Processes.Count == 1) {
if (DebugStarted != null) { if (DebugStarted != null) {
DebugStarted(this, EventArgs.Empty); DebugStarted(this, EventArgs.Empty);
SetActiveViewsReadonly(true);
} }
} }
e.Item.LogMessage += LogMessage; e.Item.LogMessage += LogMessage;
} }
void SetActiveViewsReadonly(bool readOnly)
{
// TODO: don't forget about EnC
//if (DebuggingOptions.Instance.EnableEditAndContinue)
// return;
if (WorkbenchSingleton.Workbench == null)
return;
if (WorkbenchSingleton.Workbench.WorkbenchWindowCollection.Count > 0) {
foreach(var window in WorkbenchSingleton.Workbench.WorkbenchWindowCollection) {
foreach (var content in window.ViewContents) {
if (content is ITextEditorProvider) {
((ITextEditorProvider)content).TextEditor.IsReadOnly = readOnly;
}
}
// refresh tab icon
window.UpdateActiveViewContent();
}
}
// make readonly the newly opened views
if (readOnly)
WorkbenchSingleton.Workbench.ViewOpened += OnViewOpened;
else
WorkbenchSingleton.Workbench.ViewOpened -= OnViewOpened;
}
void OnViewOpened(object sender, ViewContentEventArgs e)
{
if (!IsDebugging)
return;
// TODO: don't forget about EnC
//if (!DebuggingOptions.Instance.EnableEditAndContinue)
if (e.Content is ITextEditorProvider) {
((ITextEditorProvider)e.Content).TextEditor.IsReadOnly = true;
}
}
void debugger_ProcessExited(object sender, CollectionItemEventArgs<Process> e) void debugger_ProcessExited(object sender, CollectionItemEventArgs<Process> e)
{ {
if (debugger.Processes.Count == 0) { if (debugger.Processes.Count == 0) {
if (DebugStopped != null) { if (DebugStopped != null) {
DebugStopped(this, e); DebugStopped(this, e);
SetActiveViewsReadonly(false);
} }
SelectProcess(null); SelectProcess(null);
} else { } else {

2
src/AddIns/DisplayBindings/XmlEditor/Test/Utils/MockTextEditor.cs

@ -95,6 +95,8 @@ namespace XmlEditor.Tests.Utils
} }
} }
public bool IsReadOnly { get; set; }
public FileName FileName { public FileName FileName {
get { return fileName; } get { return fileName; }
set { fileName = value; } set { fileName = value; }

5
src/Main/Base/Project/Src/Editor/AvalonEdit/AvalonEditTextEditorAdapter.cs

@ -26,6 +26,11 @@ namespace ICSharpCode.SharpDevelop.Editor.AvalonEdit
readonly TextEditor textEditor; readonly TextEditor textEditor;
AvalonEditDocumentAdapter document; AvalonEditDocumentAdapter document;
public bool IsReadOnly {
get { return textEditor.IsReadOnly; }
set { textEditor.IsReadOnly = value; }
}
public TextEditor TextEditor { public TextEditor TextEditor {
get { return textEditor; } get { return textEditor; }
} }

2
src/Main/Base/Project/Src/Editor/ITextEditor.cs

@ -24,6 +24,8 @@ namespace ICSharpCode.SharpDevelop.Editor
/// </summary> /// </summary>
public interface ITextEditor : IServiceProvider public interface ITextEditor : IServiceProvider
{ {
bool IsReadOnly { get; set; }
/// <summary> /// <summary>
/// Gets the primary view if split-view is active. /// Gets the primary view if split-view is active.
/// If split-view is disabled, the current ITextEditor instance is returned. /// If split-view is disabled, the current ITextEditor instance is returned.

5
src/Main/Base/Project/Src/Gui/IWorkbenchWindow.cs

@ -76,5 +76,10 @@ namespace ICSharpCode.SharpDevelop.Gui
/// Is called when the title of this window has changed. /// Is called when the title of this window has changed.
/// </summary> /// </summary>
event EventHandler TitleChanged; event EventHandler TitleChanged;
/// <summary>
/// Updates the content.
/// </summary>
void UpdateActiveViewContent();
} }
} }

2
src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonWorkbenchWindow.cs

@ -137,7 +137,7 @@ namespace ICSharpCode.SharpDevelop.Gui
IViewContent oldActiveViewContent; IViewContent oldActiveViewContent;
void UpdateActiveViewContent() public void UpdateActiveViewContent()
{ {
UpdateTitleAndInfoTip(); UpdateTitleAndInfoTip();

Loading…
Cancel
Save