#develop (short for SharpDevelop) is a free IDE for .NET programming languages.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

74 lines
2.0 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Threading;
using System.Windows.Forms;
using ICSharpCode.TextEditor.Undo;
using ICSharpCode.TextEditor;
using ICSharpCode.TextEditor.Document;
namespace SharpDevelop.Samples.XamlDesigner
{
public partial class ShellDocumentView : System.Windows.Controls.UserControl
{
public ShellDocumentView(ShellDocument doc)
{
InitializeComponent();
ShellDocument = doc;
uxTextEditor.SetHighlighting("XML");
uxTextEditor.Document.UndoStack.OperationPushed += UndoStack_OperationPushed;
uxTextEditor.Document.DocumentChanged += Document_DocumentChanged;
uxTextEditor.Document.DocumentAboutToBeChanged += Document_DocumentAboutToBeChanged;
}
public ShellDocument ShellDocument { get; private set; }
IUndoableOperation lastOperation;
bool textValid;
void Document_DocumentAboutToBeChanged(object sender, DocumentEventArgs e)
{
textValid = false;
}
void Document_DocumentChanged(object sender, DocumentEventArgs e)
{
textValid = true;
TryUpdateDesignUndoStack();
}
void UndoStack_OperationPushed(object sender, OperationEventArgs e)
{
lastOperation = e.Operation;
TryUpdateDesignUndoStack();
}
void TryUpdateDesignUndoStack()
{
if (textValid && lastOperation != null) {
ShellDocument.Context.UndoManager.Done(new TextAction(lastOperation));
lastOperation = null;
}
}
//public void JumpToError(XamlDocumentError error)
//{
// ShellDocument.Mode = DocumentMode.Xaml;
// Dispatcher.BeginInvoke(new Action(delegate {
// uxTextEditor.ActiveTextAreaControl.JumpTo(error.LineNumber - 1, error.LinePosition - 1);
// }), DispatcherPriority.Background);
//}
}
}