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 @@ -62,6 +62,8 @@ namespace ICSharpCode.Scripting.Tests.Utils
}
}
public bool IsReadOnly { get; set; }
public int SelectionLength { get; set; }
public string SelectedText { get; set; }

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

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

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

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

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

@ -22,6 +22,8 @@ using ICSharpCode.NRefactory.Ast; @@ -22,6 +22,8 @@ using ICSharpCode.NRefactory.Ast;
using ICSharpCode.NRefactory.Visitors;
using ICSharpCode.SharpDevelop.Bookmarks;
using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.AvalonEdit;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Gui.OptionPanels;
using ICSharpCode.SharpDevelop.Project;
@ -764,16 +766,59 @@ namespace ICSharpCode.SharpDevelop.Services @@ -764,16 +766,59 @@ namespace ICSharpCode.SharpDevelop.Services
if (debugger.Processes.Count == 1) {
if (DebugStarted != null) {
DebugStarted(this, EventArgs.Empty);
SetActiveViewsReadonly(true);
}
}
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)
{
if (debugger.Processes.Count == 0) {
if (DebugStopped != null) {
DebugStopped(this, e);
SetActiveViewsReadonly(false);
}
SelectProcess(null);
} else {

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

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

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

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

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

@ -24,6 +24,8 @@ namespace ICSharpCode.SharpDevelop.Editor @@ -24,6 +24,8 @@ namespace ICSharpCode.SharpDevelop.Editor
/// </summary>
public interface ITextEditor : IServiceProvider
{
bool IsReadOnly { get; set; }
/// <summary>
/// Gets the primary view if split-view is active.
/// 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 @@ -76,5 +76,10 @@ namespace ICSharpCode.SharpDevelop.Gui
/// Is called when the title of this window has changed.
/// </summary>
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 @@ -137,7 +137,7 @@ namespace ICSharpCode.SharpDevelop.Gui
IViewContent oldActiveViewContent;
void UpdateActiveViewContent()
public void UpdateActiveViewContent()
{
UpdateTitleAndInfoTip();

Loading…
Cancel
Save