Browse Source

dynamic help: Forms designer support added; some more improvements

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@470 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Mathias Simmack 20 years ago
parent
commit
310e1cc9b1
  1. 143
      src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/DynamicHelpPad.cs
  2. 16
      src/AddIns/Misc/HtmlHelp2/Project/src/Service/HtmlHelp2Service.cs

143
src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/DynamicHelpPad.cs

@ -35,9 +35,11 @@ namespace HtmlHelp2 @@ -35,9 +35,11 @@ namespace HtmlHelp2
public class HtmlHelp2DynamicHelpPad : AbstractPadContent
{
protected HtmlHelp2DynamicHelpBrowserControl dynamicHelpBrowser;
private int internalIndex = 0;
private int internalIndex = 0;
private string lastDynamicHelpWord = String.Empty;
private string lastSpecialHelpWord = String.Empty;
private string lastKeywordSearch = String.Empty;
private string debugPreElement = String.Empty;
public override Control Control
{
@ -62,6 +64,8 @@ namespace HtmlHelp2 @@ -62,6 +64,8 @@ namespace HtmlHelp2
{
dynamicHelpBrowser = new HtmlHelp2DynamicHelpBrowserControl();
ParserService.ParserUpdateStepFinished += UpdateTick;
PropertyPad.SelectedObjectChanged += new EventHandler(this.FormsDesignerSelectedObjectChanged);
PropertyPad.SelectedGridItemChanged += new SelectedGridItemChangedEventHandler(this.FormsDesignerSelectedGridItemChanged);
}
#region WebBrowser Scripting
@ -69,7 +73,8 @@ namespace HtmlHelp2 @@ -69,7 +73,8 @@ namespace HtmlHelp2
string specialDynamicHelpString,
string expectedLanguage)
{
if(!HtmlHelp2Environment.IsReady || HtmlHelp2Environment.DynamicHelpIsBusy) {
if(!HtmlHelp2Environment.IsReady || HtmlHelp2Environment.DynamicHelpIsBusy)
{
return;
}
@ -81,62 +86,64 @@ namespace HtmlHelp2 @@ -81,62 +86,64 @@ namespace HtmlHelp2
try
{
this.RemoveAllChildren();
this.debugPreElement = "--- Dynamic Help Debug ---<br>";
IHxTopicList topics = null;
IHxTopicList specialTopics = null;
Cursor.Current = Cursors.WaitCursor;
bool result1 = this.CallDynamicHelp(specialDynamicHelpString, expectedLanguage, false);
bool result2 = this.CallDynamicHelp(dynamicHelpString, expectedLanguage, false);
if(!result1 && !result2) this.CallDynamicHelp(this.lastKeywordSearch, expectedLanguage, true);
if(dynamicHelpString != "") topics = HtmlHelp2Environment.GetMatchingTopicsForDynamicHelp(dynamicHelpString);
if(specialDynamicHelpString != "") specialTopics = HtmlHelp2Environment.GetMatchingTopicsForDynamicHelp(specialDynamicHelpString);
this.lastDynamicHelpWord = dynamicHelpString;
this.lastSpecialHelpWord = specialDynamicHelpString;
Cursor.Current = Cursors.Default;
this.CreateDebugPre();
}
catch {}
}
try
{
if(specialTopics.Count > 0)
{
foreach(IHxTopic topic in specialTopics)
{
if(expectedLanguage == null ||
expectedLanguage == "" ||
topic.HasAttribute("DevLang", expectedLanguage))
{
this.BuildNewChild(topic.Location,
topic.get_Title(HxTopicGetTitleType.HxTopicGetRLTitle, HxTopicGetTitleDefVal.HxTopicGetTitleFileName),
topic.URL);
}
}
}
}
catch {}
private bool CallDynamicHelp(string searchTerm, string expectedLanguage, bool keywordSearch)
{
if(!HtmlHelp2Environment.IsReady || HtmlHelp2Environment.DynamicHelpIsBusy) return false;
bool result = false;
try
{
IHxTopicList topics = null;
Cursor.Current = Cursors.WaitCursor;
try
if(keywordSearch) topics = HtmlHelp2Environment.GetMatchingTopicsForKeywordSearch(searchTerm);
else topics = HtmlHelp2Environment.GetMatchingTopicsForDynamicHelp(searchTerm);
Cursor.Current = Cursors.Default;
if(topics.Count > 0)
{
if(topics.Count > 0)
this.debugPreElement += String.Format("{0} ({1}): {2} {3}<br>",
searchTerm,
(keywordSearch)?"Kwd":"DH",
topics.Count.ToString(),
(topics.Count == 1)?"topic":"topics");
result = true;
foreach(IHxTopic topic in topics)
{
foreach(IHxTopic topic in topics)
if(expectedLanguage == String.Empty ||
topic.HasAttribute("DevLang", expectedLanguage))
{
if(expectedLanguage == null ||
expectedLanguage == "" ||
topic.HasAttribute("DevLang", expectedLanguage))
{
this.BuildNewChild(topic.Location,
topic.get_Title(HxTopicGetTitleType.HxTopicGetRLTitle, HxTopicGetTitleDefVal.HxTopicGetTitleFileName),
topic.URL);
}
this.BuildNewChild(topic.Location,
topic.get_Title(HxTopicGetTitleType.HxTopicGetRLTitle,
HxTopicGetTitleDefVal.HxTopicGetTitleFileName),
topic.URL);
}
}
}
catch {}
this.CreateDebugPre(dynamicHelpString, specialDynamicHelpString);
this.lastDynamicHelpWord = dynamicHelpString;
this.lastSpecialHelpWord = specialDynamicHelpString;
}
catch {}
return result;
}
private void RemoveAllChildren()
{
this.internalIndex = 0;
@ -284,16 +291,15 @@ namespace HtmlHelp2 @@ -284,16 +291,15 @@ namespace HtmlHelp2
}
private void CreateDebugPre(string dynamicHelpString, string specialDynamicHelpString)
private void CreateDebugPre()
{
try
{
HtmlElement br = dynamicHelpBrowser.CreateHtmlElement("br");
dynamicHelpBrowser.Document.Body.InsertAdjacentElement(HtmlElementInsertionOrientation.BeforeEnd, br);
dynamicHelpBrowser.Document.Body.InsertAdjacentElement(HtmlElementInsertionOrientation.BeforeEnd, this.CreateABreak());
dynamicHelpBrowser.Document.Body.InsertAdjacentElement(HtmlElementInsertionOrientation.BeforeEnd, this.CreateABreak());
HtmlElement pre = dynamicHelpBrowser.CreateHtmlElement("pre");
pre.InnerHtml = String.Format("--- Dynamic Help Debug ---<br>" +
"{0}<br>{1}", dynamicHelpString, specialDynamicHelpString);
pre.InnerHtml = this.debugPreElement;
dynamicHelpBrowser.InsertHtmlElement(HtmlElementInsertionOrientation.BeforeEnd, pre);
}
@ -410,9 +416,50 @@ namespace HtmlHelp2 @@ -410,9 +416,50 @@ namespace HtmlHelp2
ExpressionResult expr = expressionFinder.FindFullExpression(content, caret.Offset);
if (expr.Expression == null) return null;
this.lastKeywordSearch = expr.Expression;
return ParserService.Resolve(expr, caret.Line, caret.Column, fileName, content);
}
#endregion
#region Dynamic Help for Forms Designer
private void FormsDesignerSelectedObjectChanged(object sender, EventArgs e)
{
this.CallDynamicHelpForFormsDesigner(PropertyPad.Grid.SelectedObject,
PropertyPad.Grid.SelectedGridItem);
}
private void FormsDesignerSelectedGridItemChanged(object sender, SelectedGridItemChangedEventArgs e)
{
this.CallDynamicHelpForFormsDesigner(PropertyPad.Grid.SelectedObject,
e.NewSelection);
}
private void CallDynamicHelpForFormsDesigner(object selectedObject, GridItem selectedItem)
{
if(selectedObject == null) return;
try
{
string selectedObjectString = selectedObject.GetType().FullName;
string selectedItemString = String.Empty;
if(selectedItem != null)
{
selectedItemString = String.Format("{0}.{1}",
selectedObjectString,
selectedItem.Label);
}
WorkbenchSingleton.SafeThreadAsyncCall(this,
"BuildDynamicHelpList",
selectedObjectString,
selectedItemString,
"");
}
catch {}
}
#endregion
}
public class HtmlHelp2DynamicHelpBrowserControl : UserControl

16
src/AddIns/Misc/HtmlHelp2/Project/src/Service/HtmlHelp2Service.cs

@ -293,6 +293,22 @@ namespace HtmlHelp2.Environment @@ -293,6 +293,22 @@ namespace HtmlHelp2.Environment
dynamicHelpIsBusy = false;
}
}
public static IHxTopicList GetMatchingTopicsForKeywordSearch(string searchTerm)
{
if(dynamicHelpIsBusy) return null;
try
{
dynamicHelpIsBusy = true;
IHxTopicList topics = GetIndex(currentSelectedFilterQuery).GetTopicsFromString(searchTerm, 0);
return topics;
}
finally
{
dynamicHelpIsBusy = false;
}
}
#endregion
#region Event Handling

Loading…
Cancel
Save