aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Editing/EmptySelection.cs
diff options
context:
space:
mode:
authorVictoria Plitt <Victoria.Plitt@twine-s.com>2019-04-08 13:49:55 +0300
committerVictoria Plitt <Victoria.Plitt@twine-s.com>2019-04-08 13:49:55 +0300
commitfc8a05358a92cc3c77c5f1e30d536807ef0614fd (patch)
treec65f696ebd60f3790145721307c255e5a339923f /Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Editing/EmptySelection.cs
parentb4a71931ea52636c6b36376aa9d71697ccf73524 (diff)
downloadTango-fc8a05358a92cc3c77c5f1e30d536807ef0614fd.tar.gz
Tango-fc8a05358a92cc3c77c5f1e30d536807ef0614fd.zip
were added scripting projects
Diffstat (limited to 'Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Editing/EmptySelection.cs')
-rw-r--r--Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Editing/EmptySelection.cs85
1 files changed, 85 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Editing/EmptySelection.cs b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Editing/EmptySelection.cs
new file mode 100644
index 000000000..6cca63ecb
--- /dev/null
+++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Editing/EmptySelection.cs
@@ -0,0 +1,85 @@
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
+// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
+
+using System;
+using System.Collections.Generic;
+using System.Runtime.CompilerServices;
+using Tango.Scripting.Editors.Document;
+using Tango.Scripting.Editors.Utils;
+
+namespace Tango.Scripting.Editors.Editing
+{
+ sealed class EmptySelection : Selection
+ {
+ public EmptySelection(TextArea textArea) : base(textArea)
+ {
+ }
+
+ public override Selection UpdateOnDocumentChange(DocumentChangeEventArgs e)
+ {
+ return this;
+ }
+
+ public override TextViewPosition StartPosition {
+ get { return new TextViewPosition(TextLocation.Empty); }
+ }
+
+ public override TextViewPosition EndPosition {
+ get { return new TextViewPosition(TextLocation.Empty); }
+ }
+
+ public override ISegment SurroundingSegment {
+ get { return null; }
+ }
+
+ public override Selection SetEndpoint(TextViewPosition endPosition)
+ {
+ throw new NotSupportedException();
+ }
+
+ public override Selection StartSelectionOrSetEndpoint(TextViewPosition startPosition, TextViewPosition endPosition)
+ {
+ var document = textArea.Document;
+ if (document == null)
+ throw ThrowUtil.NoDocumentAssigned();
+ return Create(textArea, startPosition, endPosition);
+ }
+
+ public override IEnumerable<SelectionSegment> Segments {
+ get { return Empty<SelectionSegment>.Array; }
+ }
+
+ public override string GetText()
+ {
+ return string.Empty;
+ }
+
+ public override void ReplaceSelectionWithText(string newText)
+ {
+ if (newText == null)
+ throw new ArgumentNullException("newText");
+ newText = AddSpacesIfRequired(newText, textArea.Caret.Position, textArea.Caret.Position);
+ if (newText.Length > 0) {
+ if (textArea.ReadOnlySectionProvider.CanInsert(textArea.Caret.Offset)) {
+ textArea.Document.Insert(textArea.Caret.Offset, newText);
+ }
+ }
+ textArea.Caret.VisualColumn = -1;
+ }
+
+ public override int Length {
+ get { return 0; }
+ }
+
+ // Use reference equality because there's only one EmptySelection per text area.
+ public override int GetHashCode()
+ {
+ return RuntimeHelpers.GetHashCode(this);
+ }
+
+ public override bool Equals(object obj)
+ {
+ return this == obj;
+ }
+ }
+}