Browse Source

Revert patches for SD-1783 (react to "read only" changes).

4.1
Daniel Grunwald 14 years ago
parent
commit
793e35797a
  1. 8
      src/AddIns/BackendBindings/Scripting/Test/Utils/MockViewContent.cs
  2. 1
      src/AddIns/BackendBindings/WixBinding/Test/Utils/MockViewContent.cs
  3. 22
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs
  4. 9
      src/AddIns/DisplayBindings/XmlEditor/Test/Utils/MockViewContent.cs
  5. 8
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/MockViewContend.cs
  6. 15
      src/Main/Base/Project/Src/Gui/AbstractViewContent.cs
  7. 5
      src/Main/Base/Project/Src/Gui/IViewContent.cs
  8. 4
      src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonWorkbenchWindow.cs
  9. 50
      src/Main/Base/Project/Src/Services/File/FileChangeWatcher.cs
  10. 9
      src/Main/Base/Project/Src/Util/FakeXmlViewContent.cs

8
src/AddIns/BackendBindings/Scripting/Test/Utils/MockViewContent.cs

@ -26,7 +26,6 @@ namespace ICSharpCode.Scripting.Tests.Utils @@ -26,7 +26,6 @@ namespace ICSharpCode.Scripting.Tests.Utils
public event EventHandler TabPageTextChanged;
public event EventHandler Disposed;
public event EventHandler IsDirtyChanged;
public event EventHandler IsReadOnlyChanged;
public string TitleName {
get {
@ -235,13 +234,6 @@ namespace ICSharpCode.Scripting.Tests.Utils @@ -235,13 +234,6 @@ namespace ICSharpCode.Scripting.Tests.Utils
}
}
protected virtual void OnIsReadOnlyChanged(EventArgs e)
{
if (IsReadOnlyChanged != null) {
IsReadOnlyChanged(this, e);
}
}
public object GetService(Type serviceType)
{
return null;

1
src/AddIns/BackendBindings/WixBinding/Test/Utils/MockViewContent.cs

@ -41,7 +41,6 @@ namespace WixBinding.Tests.Utils @@ -41,7 +41,6 @@ namespace WixBinding.Tests.Utils
public event EventHandler IsDirtyChanged;
public event EventHandler TitleNameChanged;
public event EventHandler InfoTipChanged;
public event EventHandler IsReadOnlyChanged;
#pragma warning restore 67
public IList<OpenedFile> Files {

22
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs

@ -5,12 +5,15 @@ using System; @@ -5,12 +5,15 @@ using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Threading;
using ICSharpCode.AvalonEdit.AddIn.Options;
using ICSharpCode.AvalonEdit.Document;
using ICSharpCode.AvalonEdit.Highlighting;
using ICSharpCode.AvalonEdit.Utils;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Bookmarks;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
@ -50,23 +53,6 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -50,23 +53,6 @@ namespace ICSharpCode.AvalonEdit.AddIn
codeEditor.Document.UndoStack.PropertyChanged += codeEditor_Document_UndoStack_PropertyChanged;
codeEditor.CaretPositionChanged += CaretChanged;
codeEditor.TextCopied += codeEditor_TextCopied;
// get the watcher for the file
var watcher = FileChangeWatcher.ActiveWatchers.FirstOrDefault(w => w.File == file);
if (watcher != null)
watcher.FileChanged += OnFileExternallyChanged;
}
void OnFileExternallyChanged(object sender, EventArgs e)
{
// handle readonly
if (this.PrimaryFileName != null && File.Exists(this.PrimaryFileName)) {
bool isExternalReadOnly = (File.GetAttributes(this.PrimaryFileName) & FileAttributes.ReadOnly) == FileAttributes.ReadOnly;
if (isExternalReadOnly != IsReadOnly) {
codeEditor.PrimaryTextEditor.IsReadOnly = isExternalReadOnly;
OnIsReadOnlyChanged(EventArgs.Empty);
}
}
}
void codeEditor_Document_UndoStack_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)

9
src/AddIns/DisplayBindings/XmlEditor/Test/Utils/MockViewContent.cs

@ -53,15 +53,6 @@ namespace XmlEditor.Tests.Utils @@ -53,15 +53,6 @@ namespace XmlEditor.Tests.Utils
}
}
public event EventHandler IsReadOnlyChanged;
protected virtual void OnIsReadOnlyChanged(EventArgs e)
{
if (IsReadOnlyChanged != null) {
IsReadOnlyChanged(this, e);
}
}
public object Control {
get {
throw new NotImplementedException();

8
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Test/Designer/MockViewContend.cs

@ -28,7 +28,6 @@ namespace ICSharpCode.Reports.Addin.Test.Designer @@ -28,7 +28,6 @@ namespace ICSharpCode.Reports.Addin.Test.Designer
public event EventHandler TabPageTextChanged;
public event EventHandler Disposed;
public event EventHandler IsDirtyChanged;
public event EventHandler IsReadOnlyChanged;
public object Control
{
@ -231,13 +230,6 @@ namespace ICSharpCode.Reports.Addin.Test.Designer @@ -231,13 +230,6 @@ namespace ICSharpCode.Reports.Addin.Test.Designer
}
}
protected virtual void OnIsReadOnlyChanged(EventArgs e)
{
if (IsReadOnlyChanged != null) {
IsReadOnlyChanged(this, e);
}
}
public object InitiallyFocusedControl {
get {
throw new NotImplementedException();

15
src/Main/Base/Project/Src/Gui/AbstractViewContent.cs

@ -2,10 +2,11 @@ @@ -2,10 +2,11 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.ComponentModel.Design;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel.Design;
using System.IO;
using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.Core.Presentation;
@ -392,6 +393,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -392,6 +393,7 @@ namespace ICSharpCode.SharpDevelop.Gui
}
#endregion
#region InfoTip
public event EventHandler InfoTipChanged;
@ -606,7 +608,6 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -606,7 +608,6 @@ namespace ICSharpCode.SharpDevelop.Gui
return null;
}
#region Read only
/// <summary>
/// Gets if the view content is read-only (can be saved only when choosing another file name).
/// </summary>
@ -614,16 +615,6 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -614,16 +615,6 @@ namespace ICSharpCode.SharpDevelop.Gui
get { return false; }
}
public event EventHandler IsReadOnlyChanged;
protected virtual void OnIsReadOnlyChanged(EventArgs e)
{
if (IsReadOnlyChanged != null) {
IsReadOnlyChanged(this, e);
}
}
#endregion
/// <summary>
/// Gets if the view content is view-only (cannot be saved at all).
/// </summary>

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

@ -145,11 +145,6 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -145,11 +145,6 @@ namespace ICSharpCode.SharpDevelop.Gui
/// </summary>
bool IsReadOnly { get; }
/// <summary>
/// Is called each time the IsReadonly for the content has changed.
/// </summary>
event EventHandler IsReadOnlyChanged;
/// <summary>
/// Gets if the view content is view-only (cannot be saved at all).
/// </summary>

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

@ -145,10 +145,8 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -145,10 +145,8 @@ namespace ICSharpCode.SharpDevelop.Gui
UpdateTitleAndInfoTip();
IViewContent newActiveViewContent = this.ActiveViewContent;
if (newActiveViewContent != null) {
if (newActiveViewContent != null)
IsLocked = newActiveViewContent.IsReadOnly;
newActiveViewContent.IsReadOnlyChanged += delegate { IsLocked = newActiveViewContent.IsReadOnly; };
}
if (oldActiveViewContent != newActiveViewContent && ActiveViewContentChanged != null) {
ActiveViewContentChanged(this, EventArgs.Empty);

50
src/Main/Base/Project/Src/Services/File/FileChangeWatcher.cs

@ -3,14 +3,15 @@ @@ -3,14 +3,15 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using ICSharpCode.Core;
using System.Windows.Forms;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.Core;
namespace ICSharpCode.SharpDevelop
{
public sealed class FileChangeWatcher : IDisposable
internal sealed class FileChangeWatcher : IDisposable
{
public static bool DetectExternalChangesOption {
get {
@ -36,10 +37,6 @@ namespace ICSharpCode.SharpDevelop @@ -36,10 +37,6 @@ namespace ICSharpCode.SharpDevelop
static HashSet<FileChangeWatcher> activeWatchers = new HashSet<FileChangeWatcher>();
public static HashSet<FileChangeWatcher> ActiveWatchers {
get { return activeWatchers; }
}
static int globalDisableCount;
public static bool AllChangeWatchersDisabled {
@ -66,23 +63,9 @@ namespace ICSharpCode.SharpDevelop @@ -66,23 +63,9 @@ namespace ICSharpCode.SharpDevelop
Project.ProjectChangeWatcher.OnAllChangeWatchersDisabledChanged();
}
public event EventHandler FileChanged;
void OnFileChanged(EventArgs e)
{
if (FileChanged != null) {
FileChanged(this, e);
}
}
FileSystemWatcher watcher;
bool wasChangedExternally = false;
OpenedFile file;
bool isFileReadOnly;
public OpenedFile File {
get { return file; }
}
public FileChangeWatcher(OpenedFile file)
{
@ -93,10 +76,6 @@ namespace ICSharpCode.SharpDevelop @@ -93,10 +76,6 @@ namespace ICSharpCode.SharpDevelop
file.FileNameChanged += file_FileNameChanged;
activeWatchers.Add(this);
SetWatcher();
if (System.IO.File.Exists(this.file.FileName)) {
isFileReadOnly = (System.IO.File.GetAttributes(this.file.FileName) & FileAttributes.ReadOnly) == FileAttributes.ReadOnly;
}
}
void file_FileNameChanged(object sender, EventArgs e)
@ -164,7 +143,6 @@ namespace ICSharpCode.SharpDevelop @@ -164,7 +143,6 @@ namespace ICSharpCode.SharpDevelop
watcher.Path = Path.GetDirectoryName(fileName);
watcher.Filter = Path.GetFileName(fileName);
watcher.EnableRaisingEvents = true;
watcher.NotifyFilter |= NotifyFilters.Attributes;
} catch (PlatformNotSupportedException) {
if (watcher != null) {
watcher.Dispose();
@ -192,8 +170,6 @@ namespace ICSharpCode.SharpDevelop @@ -192,8 +170,6 @@ namespace ICSharpCode.SharpDevelop
LoggingService.Debug("File " + file.FileName + " was changed externally: " + e.ChangeType);
if (!wasChangedExternally) {
wasChangedExternally = true;
OnFileChanged(EventArgs.Empty);
if (WorkbenchSingleton.Workbench.IsActiveWindow) {
// delay reloading message a bit, prevents showing two messages
// when the file changes twice in quick succession; and prevents
@ -207,22 +183,14 @@ namespace ICSharpCode.SharpDevelop @@ -207,22 +183,14 @@ namespace ICSharpCode.SharpDevelop
void MainForm_Activated(object sender, EventArgs e)
{
if (file == null)
return;
if (System.IO.File.Exists(file.FileName)) {
// if the file was only made readonly, prevent reloading it from disk
bool readOnly = (System.IO.File.GetAttributes(this.file.FileName) & FileAttributes.ReadOnly) == FileAttributes.ReadOnly;
if (readOnly != isFileReadOnly)
wasChangedExternally = false;
isFileReadOnly = readOnly;
}
if (wasChangedExternally) {
wasChangedExternally = false;
if (file == null)
return;
string fileName = file.FileName;
if (!System.IO.File.Exists(fileName))
if (!File.Exists(fileName))
return;
string message = StringParser.Parse(
@ -232,7 +200,7 @@ namespace ICSharpCode.SharpDevelop @@ -232,7 +200,7 @@ namespace ICSharpCode.SharpDevelop
if ((AutoLoadExternalChangesOption && file.IsDirty == false)
|| MessageService.AskQuestion(message, StringParser.Parse("${res:MainWindow.DialogName}")))
{
if (System.IO.File.Exists(fileName)) {
if (File.Exists(fileName)) {
file.ReloadFromDisk();
}
} else {

9
src/Main/Base/Project/Src/Util/FakeXmlViewContent.cs

@ -213,14 +213,5 @@ namespace ICSharpCode.SharpDevelop.Util @@ -213,14 +213,5 @@ namespace ICSharpCode.SharpDevelop.Util
return null;
}
#endregion
public event EventHandler IsReadOnlyChanged;
protected void OnIsReadOnlyChanged(EventArgs e)
{
if (IsReadOnlyChanged != null) {
IsReadOnlyChanged(this, e);
}
}
}
}

Loading…
Cancel
Save