Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main/src/addins/AspNetAddIn/ChangeLog5
-rw-r--r--main/src/addins/AspNetAddIn/MonoDevelop.AspNet.Gui/AspNetEditorExtension.cs63
2 files changed, 59 insertions, 9 deletions
diff --git a/main/src/addins/AspNetAddIn/ChangeLog b/main/src/addins/AspNetAddIn/ChangeLog
index 57dfd10fcf..d14e8c9fa5 100644
--- a/main/src/addins/AspNetAddIn/ChangeLog
+++ b/main/src/addins/AspNetAddIn/ChangeLog
@@ -1,5 +1,10 @@
2008-10-16 Michael Hutchinson <mhutchinson@novell.com>
+ * MonoDevelop.AspNet.Gui/AspNetEditorExtension.cs: Add simple
+ field/property completions in render and databinding expressions.
+
+2008-10-16 Michael Hutchinson <mhutchinson@novell.com>
+
* MonoDevelop.AspNet.Gui/AspNetEditorExtension.cs: Finally fix event
handler completion with the new MD Code DOM.
diff --git a/main/src/addins/AspNetAddIn/MonoDevelop.AspNet.Gui/AspNetEditorExtension.cs b/main/src/addins/AspNetAddIn/MonoDevelop.AspNet.Gui/AspNetEditorExtension.cs
index fb469aa8dc..60249a4959 100644
--- a/main/src/addins/AspNetAddIn/MonoDevelop.AspNet.Gui/AspNetEditorExtension.cs
+++ b/main/src/addins/AspNetAddIn/MonoDevelop.AspNet.Gui/AspNetEditorExtension.cs
@@ -109,6 +109,17 @@ namespace MonoDevelop.AspNet.Gui
return list;
}
+ //simple completion for ASP.NET expressions
+ if (Tracker.Engine.CurrentState is AspNetExpressionState
+ && previousChar == ' ' && char.IsLetter (currentChar))
+ {
+ AspNetExpression expr = Tracker.Engine.Nodes.Peek () as AspNetExpression;
+ CompletionDataList list = HandleExpressionCompletion (expr);
+ if (list != null && !forced)
+ triggerWordLength = 1;
+ return list;
+ }
+
DocType = AspCU != null ? AspCU.PageInfo.DocType : null;
return base.HandleCodeCompletion (completionContext, forced, ref triggerWordLength);
@@ -168,6 +179,46 @@ namespace MonoDevelop.AspNet.Gui
}
}
+ CompletionDataList HandleExpressionCompletion (AspNetExpression expr)
+ {
+ if (!(expr is AspNetDataBindingExpression || expr is AspNetRenderExpression))
+ return null;
+
+ MonoDevelop.Projects.Dom.IType codeBehindClass;
+ MonoDevelop.Projects.Dom.Parser.ProjectDom projectDatabase;
+ GetCodeBehind (AspCU, out codeBehindClass, out projectDatabase);
+
+ if (codeBehindClass == null)
+ return null;
+
+ //list just the class's properties, not properties on base types
+ CompletionDataList list = new CompletionDataList ();
+ list.AddRange (from p in codeBehindClass.Properties
+ where p.IsProtected || p.IsPublic
+ select new CompletionData (p.Name, "md-property"));
+ list.AddRange (from p in codeBehindClass.Fields
+ where p.IsProtected || p.IsPublic
+ select new CompletionData (p.Name, "md-property"));
+
+ return list.Count > 0? list : null;
+ }
+
+ static void GetCodeBehind (AspNetParsedDocument cu,
+ out MonoDevelop.Projects.Dom.IType codeBehindClass,
+ out MonoDevelop.Projects.Dom.Parser.ProjectDom projectDatabase)
+ {
+ codeBehindClass = null;
+ projectDatabase = null;
+
+ if (cu != null && cu.Document.Project != null) {
+ projectDatabase = MonoDevelop.Projects.Dom.Parser.ProjectDomService.GetProjectDom
+ (cu.Document.Project);
+
+ if (projectDatabase != null && !string.IsNullOrEmpty (cu.PageInfo.InheritedClass))
+ codeBehindClass = projectDatabase.GetType (cu.PageInfo.InheritedClass, false, false);
+ }
+ }
+
#region ASP.NET data
static void AddAspBeginExpressions (CompletionDataList list, Document doc)
@@ -263,15 +314,9 @@ namespace MonoDevelop.AspNet.Gui
}
//find the codebehind class
- MonoDevelop.Projects.Dom.IType codeBehindClass = null;
- MonoDevelop.Projects.Dom.Parser.ProjectDom projectDatabase = null;
- if (cu != null && cu.Document.Project != null) {
- projectDatabase = MonoDevelop.Projects.Dom.Parser.ProjectDomService.GetProjectDom
- (cu.Document.Project);
-
- if (projectDatabase != null && !string.IsNullOrEmpty (cu.PageInfo.InheritedClass))
- codeBehindClass = projectDatabase.GetType (cu.PageInfo.InheritedClass, false, false);
- }
+ MonoDevelop.Projects.Dom.IType codeBehindClass;
+ MonoDevelop.Projects.Dom.Parser.ProjectDom projectDatabase;
+ GetCodeBehind (cu, out codeBehindClass, out projectDatabase);
//if it's an event, suggest compatible methods
if (codeBehindClass != null && attName.Name.StartsWith ("On")) {