Browse Source

added more ITextEditorOptions, implemented markers for XPath

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/XmlEditor@4162 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Siegfried Pammer 16 years ago
parent
commit
79884004e1
  1. 2
      src/AddIns/BackendBindings/WixBinding/Project/WixBinding.csproj
  2. 2
      src/AddIns/BackendBindings/WixBinding/Test/Utils/MockViewContent.cs
  3. 8
      src/AddIns/BackendBindings/WixBinding/Test/WixBinding.Tests.csproj
  4. 4
      src/AddIns/BackendBindings/XamlBinding/XamlBinding.Tests/XamlBinding.Tests.csproj
  5. 2
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlBinding.csproj
  6. 38
      src/AddIns/BackendBindings/XmlBinding/Project/Src/XPathNodeTextMarker.cs
  7. 9
      src/AddIns/BackendBindings/XmlBinding/Project/Src/XmlView.cs
  8. 29
      src/AddIns/BackendBindings/XmlBinding/Test/Schema/XsdSchemaTestFixture.cs
  9. 2
      src/AddIns/BackendBindings/XmlBinding/Test/Utils/MockOpenedFile.cs
  10. 12
      src/Main/Base/Project/Src/Editor/AvalonEdit/AvalonEditTextEditorAdapter.cs
  11. 10
      src/Main/Base/Project/Src/Editor/ITextEditor.cs
  12. 5
      src/Main/Base/Project/Src/Editor/ITextMarker.cs
  13. 12
      src/Main/Base/Project/Src/TextEditor/Gui/TextEditorAdapter.cs

2
src/AddIns/BackendBindings/WixBinding/Project/WixBinding.csproj

@ -232,7 +232,7 @@ @@ -232,7 +232,7 @@
<ProjectReference Include="..\..\XmlBinding\Project\XmlEditor.csproj">
<Project>{DCA2703D-250A-463E-A68A-07ED105AE6BD}</Project>
<Name>XmlEditor</Name>
<Private>False</Private>
<Private>True</Private>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />

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

@ -58,6 +58,8 @@ namespace WixBinding.Tests.Utils @@ -58,6 +58,8 @@ namespace WixBinding.Tests.Utils
public override void UnregisterView(IViewContent view)
{
}
public override event EventHandler FileClosed;
}
#pragma warning disable 67

8
src/AddIns/BackendBindings/WixBinding/Test/WixBinding.Tests.csproj

@ -243,6 +243,10 @@ @@ -243,6 +243,10 @@
<None Include="app.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\XmlBinding\Project\XmlEditor.csproj">
<Project>{DCA2703D-250A-463E-A68A-07ED105AE6BD}</Project>
<Name>XmlEditor</Name>
</ProjectReference>
<ProjectReference Include="..\Project\WixBinding.csproj">
<Project>{e1b288a2-08ee-4318-8bbb-8ab72c69e33e}</Project>
<Name>WixBinding</Name>
@ -285,10 +289,6 @@ @@ -285,10 +289,6 @@
<Name>ICSharpCode.SharpDevelop.Dom</Name>
</ProjectReference>
<Folder Include="PackageFiles" />
<ProjectReference Include="..\..\..\DisplayBindings\XmlEditor\Project\XmlEditor.csproj">
<Project>{6B717BD1-CD5E-498C-A42E-9E6A4584DC48}</Project>
<Name>XmlEditor</Name>
</ProjectReference>
<Content Include="..\..\..\..\..\bin\ICSharpCode.SharpDevelop.Dom.dll">
<Link>ICSharpCode.SharpDevelop.Dom.dll</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>

4
src/AddIns/BackendBindings/XamlBinding/XamlBinding.Tests/XamlBinding.Tests.csproj

@ -66,8 +66,8 @@ @@ -66,8 +66,8 @@
<Project>{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}</Project>
<Name>ICSharpCode.SharpDevelop.Dom</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\DisplayBindings\XmlEditor\Project\XmlEditor.csproj">
<Project>{6B717BD1-CD5E-498C-A42E-9E6A4584DC48}</Project>
<ProjectReference Include="..\..\XmlBinding\Project\XmlEditor.csproj">
<Project>{DCA2703D-250A-463E-A68A-07ED105AE6BD}</Project>
<Name>XmlEditor</Name>
</ProjectReference>
<ProjectReference Include="..\XamlBinding\XamlBinding.csproj">

2
src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlBinding.csproj

@ -123,7 +123,7 @@ @@ -123,7 +123,7 @@
<ProjectReference Include="..\..\XmlBinding\Project\XmlEditor.csproj">
<Project>{DCA2703D-250A-463E-A68A-07ED105AE6BD}</Project>
<Name>XmlEditor</Name>
<Private>False</Private>
<Private>True</Private>
</ProjectReference>
</ItemGroup>
</Project>

38
src/AddIns/BackendBindings/XmlBinding/Project/Src/XPathNodeTextMarker.cs

@ -6,55 +6,59 @@ @@ -6,55 +6,59 @@
// </file>
using System;
using System.Collections.Generic;
using System.Drawing;
using ICSharpCode.SharpDevelop.Editor;
namespace ICSharpCode.XmlEditor
{
/*
/// <summary>
/// A text marker for an XPath query match.
/// A text marker for an XPath query match. Wraps ITextMarker.
/// </summary>
public class XPathNodeTextMarker : TextMarker
public class XPathNodeTextMarker
{
public static readonly Color MarkerBackColor = Color.FromArgb(159, 255, 162);
static List<XPathNodeTextMarker> markers = new List<XPathNodeTextMarker>();
ITextMarker marker;
public XPathNodeTextMarker(int offset, XPathNodeMatch node) : base(offset, node.Value.Length, TextMarkerType.SolidBlock, MarkerBackColor)
XPathNodeTextMarker(ITextEditor editor, int offset, XPathNodeMatch node)
{
ITextMarkerService markerService = editor.GetService(typeof(ITextMarkerService)) as ITextMarkerService;
marker = markerService.Create(offset, node.DisplayValue.Length);
marker.Tag = this;
}
/// <summary>
/// Adds markers for each XPathNodeMatch.
/// </summary>
public static void AddMarkers(MarkerStrategy markerStrategy, XPathNodeMatch[] nodes)
public static void AddMarkers(ITextEditor editor, XPathNodeMatch[] nodes)
{
foreach (XPathNodeMatch node in nodes) {
AddMarker(markerStrategy, node);
AddMarker(editor, node);
}
}
/// <summary>
/// Adds a single marker for the XPathNodeMatch.
/// </summary>
public static void AddMarker(MarkerStrategy markerStrategy, XPathNodeMatch node)
public static void AddMarker(ITextEditor editor, XPathNodeMatch node)
{
if (node.HasLineInfo() && node.Value.Length > 0) {
LineSegment lineSegment = markerStrategy.Document.GetLineSegment(node.LineNumber);
markerStrategy.AddMarker(new XPathNodeTextMarker(lineSegment.Offset + node.LinePosition, node));
markers.Add(new XPathNodeTextMarker(editor, editor.Document.PositionToOffset(node.LineNumber, node.LinePosition), node));
}
}
/// <summary>
/// Removes all the XPathNodeMarkers from the marker strategy.
/// </summary>
public static void RemoveMarkers(MarkerStrategy markerStrategy)
public static void RemoveMarkers(ITextEditor editor)
{
markerStrategy.RemoveAll(IsXPathNodeTextMarkerMatch);
}
static bool IsXPathNodeTextMarkerMatch(TextMarker marker)
{
return marker is XPathNodeTextMarker;
ITextMarkerService markerService = editor.GetService(typeof(ITextMarkerService)) as ITextMarkerService;
foreach (ITextMarker marker in markerService.TextMarkers) {
if (marker.Tag is XPathNodeTextMarker)
marker.Delete();
}
}
}
*/
}

9
src/AddIns/BackendBindings/XmlBinding/Project/Src/XmlView.cs

@ -392,8 +392,13 @@ namespace ICSharpCode.XmlEditor @@ -392,8 +392,13 @@ namespace ICSharpCode.XmlEditor
static XmlTextWriter CreateXmlTextWriter(TextWriter textWriter, ITextEditor editor)
{
XmlTextWriter writer = new XmlTextWriter(textWriter);
writer.Indentation = editor.Options.IndentationString.Length;
writer.IndentChar = (editor.Options.IndentationString.Length > 0) ? editor.Options.IndentationString[0] : ' ';
if (editor.Options.ConvertTabsToSpaces) {
writer.Indentation = editor.Options.IndendationSize;
writer.IndentChar = ' ';
} else {
writer.Indentation = 1;
writer.IndentChar = '\t';
}
writer.Formatting = Formatting.Indented;
return writer;
}

29
src/AddIns/BackendBindings/XmlBinding/Test/Schema/XsdSchemaTestFixture.cs

@ -5,12 +5,13 @@ @@ -5,12 +5,13 @@
// <version>$Revision: 1334 $</version>
// </file>
using ICSharpCode.TextEditor.Gui.CompletionWindow;
using ICSharpCode.XmlEditor;
using NUnit.Framework;
using ICSharpCode.SharpDevelop.Editor;
using System;
using System.IO;
using System.Xml;
using ICSharpCode.TextEditor.Gui.CompletionWindow;
using ICSharpCode.XmlEditor;
using NUnit.Framework;
using XmlEditor.Tests.Utils;
namespace XmlEditor.Tests.Schema
@ -28,17 +29,17 @@ namespace XmlEditor.Tests.Schema @@ -28,17 +29,17 @@ namespace XmlEditor.Tests.Schema
XmlElementPath enumPath;
XmlElementPath allElementPath;
XmlElementPath allElementAnnotationPath;
ICompletionData[] choiceAttributes;
ICompletionData[] elementAttributes;
ICompletionData[] simpleEnumElements;
ICompletionData[] enumAttributes;
ICompletionData[] elementFormDefaultAttributeValues;
ICompletionData[] blockDefaultAttributeValues;
ICompletionData[] finalDefaultAttributeValues;
ICompletionData[] mixedAttributeValues;
ICompletionData[] maxOccursAttributeValues;
ICompletionData[] allElementChildElements;
ICompletionData[] allElementAnnotationChildElements;
ICompletionItem[] choiceAttributes;
ICompletionItem[] elementAttributes;
ICompletionItem[] simpleEnumElements;
ICompletionItem[] enumAttributes;
ICompletionItem[] elementFormDefaultAttributeValues;
ICompletionItem[] blockDefaultAttributeValues;
ICompletionItem[] finalDefaultAttributeValues;
ICompletionItem[] mixedAttributeValues;
ICompletionItem[] maxOccursAttributeValues;
ICompletionItem[] allElementChildElements;
ICompletionItem[] allElementAnnotationChildElements;
string namespaceURI = "http://www.w3.org/2001/XMLSchema";
string prefix = "xs";

2
src/AddIns/BackendBindings/XmlBinding/Test/Utils/MockOpenedFile.cs

@ -55,5 +55,7 @@ namespace XmlEditor.Tests.Utils @@ -55,5 +55,7 @@ namespace XmlEditor.Tests.Utils
throw new ArgumentException("registeredViews does not contain view");
base.SwitchedToView(view);
}
public override event EventHandler FileClosed;
}
}

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

@ -113,6 +113,18 @@ namespace ICSharpCode.SharpDevelop.Editor @@ -113,6 +113,18 @@ namespace ICSharpCode.SharpDevelop.Editor
return avalonEditOptions.IndentationString;
}
}
public bool ConvertTabsToSpaces {
get {
return avalonEditOptions.ConvertTabsToSpaces;
}
}
public int IndendationSize {
get {
return avalonEditOptions.IndentationSize;
}
}
}
public virtual string FileName {

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

@ -88,6 +88,16 @@ namespace ICSharpCode.SharpDevelop.Editor @@ -88,6 +88,16 @@ namespace ICSharpCode.SharpDevelop.Editor
/// Gets the text used for one indentation level.
/// </summary>
string IndentationString { get; }
/// <summary>
/// Gets if tabs should be converted to spaces.
/// </summary>
bool ConvertTabsToSpaces { get; }
/// <summary>
/// Gets the size of an indentation level.
/// </summary>
int IndendationSize { get; }
}
public interface ITextEditorCaret

5
src/Main/Base/Project/Src/Editor/ITextMarker.cs

@ -55,6 +55,11 @@ namespace ICSharpCode.SharpDevelop.Editor @@ -55,6 +55,11 @@ namespace ICSharpCode.SharpDevelop.Editor
/// Gets/Sets the foreground color.
/// </summary>
Color? ForegroundColor { get; set; }
/// <summary>
/// Gets/Sets an object with additional data for this text marker.
/// </summary>
object Tag { get; set; }
}
public interface ITextMarkerService

12
src/Main/Base/Project/Src/TextEditor/Gui/TextEditorAdapter.cs

@ -90,6 +90,18 @@ namespace ICSharpCode.SharpDevelop @@ -90,6 +90,18 @@ namespace ICSharpCode.SharpDevelop
return properties.ConvertTabsToSpaces ? new string(' ', properties.IndentationSize) : "\t";
}
}
public bool ConvertTabsToSpaces {
get {
return properties.ConvertTabsToSpaces;
}
}
public int IndendationSize {
get {
return properties.IndentationSize;
}
}
}
static ICSharpCode.NRefactory.Location ToLocation(TextLocation position)

Loading…
Cancel
Save