Author: mkrueger
Date: 2008-02-05 16:26:18 -0500 (Tue, 05 Feb 2008)
New Revision: 94955
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/ChangeLog
trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs
trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorWidget.cs
Log:
* MonoDevelop.SourceEditor/SourceEditorWidget.cs,
MonoDevelop.SourceEditor/SourceEditorView.cs: Added some folding
commands.
Modified: trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/ChangeLog
===================================================================
--- trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/ChangeLog
2008-02-05 21:25:12 UTC (rev 94954)
+++ trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/ChangeLog
2008-02-05 21:26:18 UTC (rev 94955)
@@ -1,6 +1,12 @@
2008-02-05 Mike Krüger <[EMAIL PROTECTED]>
* MonoDevelop.SourceEditor/SourceEditorWidget.cs,
+ MonoDevelop.SourceEditor/SourceEditorView.cs: Added some folding
+ commands.
+
+2008-02-05 Mike Krüger <[EMAIL PROTECTED]>
+
+ * MonoDevelop.SourceEditor/SourceEditorWidget.cs,
MonoDevelop.SourceEditor/SourceEditorView.cs: Improved folding
behavior.
2008-02-05 Mike Krüger <[EMAIL PROTECTED]>
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs
===================================================================
---
trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs
2008-02-05 21:25:12 UTC (rev 94954)
+++
trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs
2008-02-05 21:26:18 UTC (rev 94955)
@@ -38,7 +38,7 @@
namespace MonoDevelop.SourceEditor
{
- public class SourceEditorView : AbstractViewContent, IPositionable,
IExtensibleTextEditor, IBookmarkBuffer, IClipboardHandler, ICompletionWidget,
IDocumentInformation, ICodeStyleOperations, ISplittable
+ public class SourceEditorView : AbstractViewContent, IPositionable,
IExtensibleTextEditor, IBookmarkBuffer, IClipboardHandler, ICompletionWidget,
IDocumentInformation, ICodeStyleOperations, ISplittable, IFoldable
{
SourceEditorWidget widget;
bool isDisposed = false;
@@ -369,6 +369,7 @@
column = location.Column + 1;
}
#endregion
+
#region IEditableTextFile
public void InsertText (int position, string text)
{
@@ -671,6 +672,7 @@
}
}
#endregion
+
#region ICodeStyleOperations
public void ToggleCodeComment ()
{
@@ -764,6 +766,7 @@
RemoveTab.RemoveIndentSelection (this.TextEditorData);
}
#endregion
+
#region ISplittable
public bool EnableSplitHorizontally {
get {
@@ -797,5 +800,42 @@
}
#endregion
+
+ #region IFoldable
+ void ToggleFoldings (ICollection<FoldSegment> segments)
+ {
+ bool doFold = true;
+ foreach (FoldSegment segment in segments) {
+ if (segment.IsFolded) {
+ doFold = false;
+ break;
+ }
+ }
+ foreach (FoldSegment segment in segments) {
+ segment.IsFolded = doFold;
+ }
+ Document.RequestUpdate (new UpdateAll ());
+ Document.CommitDocumentUpdate ();
+ }
+
+ public void ToggleAllFoldings ()
+ {
+ ToggleFoldings (Document.FoldSegments);
+ }
+
+ public void FoldDefinitions ()
+ {
+ foreach (FoldSegment segment in Document.FoldSegments) {
+ segment.IsFolded = segment.FoldingType ==
FoldingType.TypeMember;
+ }
+ Document.RequestUpdate (new UpdateAll ());
+ Document.CommitDocumentUpdate ();
+ }
+
+ public void ToggleFolding ()
+ {
+ ToggleFoldings (Document.GetStartFoldings
(Document.GetLine (TextEditorData.Caret.Line)));
+ }
+ #endregion
}
}
\ No newline at end of file
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorWidget.cs
===================================================================
---
trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorWidget.cs
2008-02-05 21:25:12 UTC (rev 94954)
+++
trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorWidget.cs
2008-02-05 21:26:18 UTC (rev 94955)
@@ -165,13 +165,13 @@
ICompilationUnit lastCu = null;
bool resetTimerStarted = false;
- FoldSegment AddMarker (List<FoldSegment> foldSegments, string
text, IRegion region)
+ FoldSegment AddMarker (List<FoldSegment> foldSegments, string
text, IRegion region, FoldingType type)
{
if (region == null || region.BeginLine <= 0 ||
region.EndLine <= 0 || region.BeginLine >=
this.TextEditor.Document.Splitter.LineCount || region.EndLine >=
this.TextEditor.Document.Splitter.LineCount)
return null;
int startOffset =
this.TextEditor.Document.LocationToOffset (region.BeginLine - 1,
region.BeginColumn - 1);
int endOffset =
this.TextEditor.Document.LocationToOffset (region.EndLine - 1,
region.EndColumn - 1);
- FoldSegment result = new FoldSegment (text,
startOffset, endOffset - startOffset);
+ FoldSegment result = new FoldSegment (text,
startOffset, endOffset - startOffset, type);
foldSegments.Add (result);
return result;
@@ -180,7 +180,7 @@
void AddClass (List<FoldSegment> foldSegments, IClass cl)
{
if (cl.BodyRegion != null)
- AddMarker (foldSegments, "...", cl.BodyRegion);
+ AddMarker (foldSegments, "...", cl.BodyRegion,
FoldingType.TypeDefinition);
foreach (IClass inner in cl.InnerClasses) {
AddClass (foldSegments, inner);
}
@@ -191,7 +191,7 @@
continue;
int startOffset =
this.TextEditor.Document.LocationToOffset (method.Region.EndLine - 1,
method.Region.EndColumn - 1);
int endOffset =
this.TextEditor.Document.LocationToOffset (method.BodyRegion.EndLine - 1,
method.BodyRegion.EndColumn - 1);
- foldSegments.Add (new FoldSegment ("...",
startOffset, endOffset - startOffset));
+ foldSegments.Add (new FoldSegment ("...",
startOffset, endOffset - startOffset, FoldingType.TypeMember));
}
foreach (IProperty property in cl.Properties) {
@@ -199,7 +199,7 @@
continue;
int startOffset =
this.TextEditor.Document.LocationToOffset (property.Region.EndLine - 1,
property.Region.EndColumn - 1);
int endOffset =
this.TextEditor.Document.LocationToOffset (property.BodyRegion.EndLine - 1,
property.BodyRegion.EndColumn - 1);
- foldSegments.Add (new FoldSegment ("...",
startOffset, endOffset - startOffset));
+ foldSegments.Add (new FoldSegment ("...",
startOffset, endOffset - startOffset, FoldingType.TypeMember));
}
}
@@ -211,7 +211,9 @@
if (lastCu != null) {
List<FoldSegment> foldSegments = new
List<FoldSegment> ();
foreach
(MonoDevelop.Projects.Parser.FoldingRegion region in lastCu.FoldingRegions) {
- AddMarker (foldSegments, region.Name,
region.Region).IsFolded = !this.TextEditor.Document.HasFoldSegments;
+ FoldSegment marker = AddMarker
(foldSegments, region.Name, region.Region, FoldingType.Region);
+ if (marker != null)
+ marker.IsFolded =
!this.TextEditor.Document.HasFoldSegments;
}
foreach (IClass cl in lastCu.Classes) {
AddClass (foldSegments, cl);
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches