Browse Source

dynamic help: sorting implemented, some other fixed

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@474 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Mathias Simmack 21 years ago
parent
commit
b67a0b9d33
  1. 192
      src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/DynamicHelpPad.cs
  2. 6
      src/AddIns/Misc/HtmlHelp2/Project/src/Service/HtmlHelp2Options.cs
  3. 4
      src/AddIns/Misc/HtmlHelp2/Project/src/Service/HtmlHelp2Service.cs

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

@ -11,14 +11,17 @@ namespace HtmlHelp2 @@ -11,14 +11,17 @@ namespace HtmlHelp2
using System.Collections;
using System.Collections.Specialized;
using System.Drawing;
using System.Drawing.Design;
using System.Windows.Forms;
using System.Reflection;
using System.IO;
using System.Xml;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.TextEditor;
using HtmlHelp2.Environment;
using HtmlHelp2.ResourcesHelperClass;
@ -39,8 +42,8 @@ namespace HtmlHelp2 @@ -39,8 +42,8 @@ namespace HtmlHelp2
protected HtmlHelp2DynamicHelpBrowserControl dynamicHelpBrowser;
private int internalIndex = 0;
private StringCollection dynamicHelpTerms = new StringCollection();
private ResolveResult lastResolveResult = null;
private string debugPreElement = String.Empty;
private bool enableDebugInfo = false;
public override Control Control
{
@ -67,6 +70,8 @@ namespace HtmlHelp2 @@ -67,6 +70,8 @@ namespace HtmlHelp2
ParserService.ParserUpdateStepFinished += UpdateTick;
PropertyPad.SelectedObjectChanged += new EventHandler(this.FormsDesignerSelectedObjectChanged);
PropertyPad.SelectedGridItemChanged += new SelectedGridItemChangedEventHandler(this.FormsDesignerSelectedGridItemChanged);
ProjectService.SolutionClosed += new EventHandler(this.SolutionClosed);
this.enableDebugInfo = this.EnableDebugInfo();
}
#region WebBrowser Scripting
@ -87,14 +92,14 @@ namespace HtmlHelp2 @@ -87,14 +92,14 @@ namespace HtmlHelp2
{
result = this.CallDynamicHelp(currentHelpTerm.Substring(1), expectedLanguage, false);
}
else
else if(!currentHelpTerm.StartsWith("!"))
{
this.CallDynamicHelp(currentHelpTerm, expectedLanguage, false);
}
}
Cursor.Current = Cursors.Default;
this.CreateDebugPre();
if(this.enableDebugInfo) this.CreateDebugPre();
}
catch {}
}
@ -110,28 +115,21 @@ namespace HtmlHelp2 @@ -110,28 +115,21 @@ namespace HtmlHelp2
if(keywordSearch) topics = HtmlHelp2Environment.GetMatchingTopicsForKeywordSearch(searchTerm);
else topics = HtmlHelp2Environment.GetMatchingTopicsForDynamicHelp(searchTerm);
this.debugPreElement += String.Format("{0} ({1}): {2} {3}<br>",
(searchTerm.StartsWith("!"))?searchTerm.Substring(1):searchTerm,
(keywordSearch)?"Kwd":"DH",
topics.Count.ToString(),
(topics.Count == 1)?"topic":"topics");
this.debugPreElement += String.Format("{0} ({1}): {2} {3}<br>",
searchTerm, (keywordSearch)?"Kwd":"DH",
topics.Count.ToString(), (topics.Count == 1)?"topic":"topics");
if(topics.Count > 0)
{
result = true;
foreach(IHxTopic topic in topics)
IHxTopic[] newTopics = this.SortTopics(topics);
foreach(IHxTopic topic in newTopics)
{
if(expectedLanguage == String.Empty ||
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.HxTopicGetTOCTitle,
HxTopicGetTitleDefVal.HxTopicGetTitleFileName),
topic.URL);
}
}
}
@ -286,24 +284,6 @@ namespace HtmlHelp2 @@ -286,24 +284,6 @@ namespace HtmlHelp2
return false;
}
private void CreateDebugPre()
{
if(this.debugPreElement == String.Empty) return;
try
{
dynamicHelpBrowser.Document.Body.InsertAdjacentElement(HtmlElementInsertionOrientation.BeforeEnd, this.CreateABreak());
dynamicHelpBrowser.Document.Body.InsertAdjacentElement(HtmlElementInsertionOrientation.BeforeEnd, this.CreateABreak());
HtmlElement pre = dynamicHelpBrowser.CreateHtmlElement("pre");
pre.InnerHtml = "--- Dynamic Help Debug ---<br>" + this.debugPreElement;
dynamicHelpBrowser.InsertHtmlElement(HtmlElementInsertionOrientation.BeforeEnd, pre);
}
catch {}
}
#endregion
private void OnMouseOver(object sender, HtmlElementEventArgs e)
@ -350,11 +330,11 @@ namespace HtmlHelp2 @@ -350,11 +330,11 @@ namespace HtmlHelp2
this.dynamicHelpTerms.Clear();
ResolveResult res = ResolveAtCaret(e);
if(res == null || res == this.lastResolveResult) return;
if(res == null) return;
if(res != null && res.ResolvedType != null)
{
this.dynamicHelpTerms.Add(res.ResolvedType.FullyQualifiedName);
this.AddToStringCollection(res.ResolvedType.FullyQualifiedName);
}
MemberResolveResult member = res as MemberResolveResult;
@ -364,24 +344,21 @@ namespace HtmlHelp2 @@ -364,24 +344,21 @@ namespace HtmlHelp2
if(member != null && member.ResolvedMember != null)
{
this.dynamicHelpTerms.Insert(0, member.ResolvedMember.FullyQualifiedName);
this.AddToStringCollection(0, member.ResolvedMember.FullyQualifiedName);
}
if(nspace != null)
{
this.dynamicHelpTerms.Insert(0, nspace.Name);
this.AddToStringCollection(0, nspace.Name);
}
if(method != null && method.ContainingType != null)
{
this.dynamicHelpTerms.Insert(0, method.ContainingType.FullyQualifiedName);
this.AddToStringCollection(0, method.ContainingType.FullyQualifiedName);
}
if(types != null && types.ResolvedClass != null)
{
this.dynamicHelpTerms.Insert(0, types.ResolvedClass.FullyQualifiedName);
this.AddToStringCollection(0, types.ResolvedClass.FullyQualifiedName);
}
// set "lastResolveResult" to block an endless browser update
this.lastResolveResult = res;
WorkbenchSingleton.SafeThreadAsyncCall(this, "BuildDynamicHelpList", "");
}
catch {}
@ -433,17 +410,21 @@ namespace HtmlHelp2 @@ -433,17 +410,21 @@ namespace HtmlHelp2
Type myObject = selectedObject.GetType();
if(selectedItem != null)
{
this.dynamicHelpTerms.Add(String.Format("!{0}.{1}", myObject.FullName, selectedItem.Label));
this.AddToStringCollection(String.Format("!{0}.{1}",
myObject.FullName,
selectedItem.Label));
while(myObject.BaseType != null)
{
myObject = myObject.BaseType;
this.dynamicHelpTerms.Add(String.Format("!{0}.{1}", myObject.FullName, selectedItem.Label));
this.AddToStringCollection(String.Format("!{0}.{1}",
myObject.FullName,
selectedItem.Label));
}
}
myObject = selectedObject.GetType();
this.dynamicHelpTerms.Add(myObject.FullName);
this.AddToStringCollection(myObject.FullName);
WorkbenchSingleton.SafeThreadAsyncCall(this,
"BuildDynamicHelpList",
@ -452,6 +433,119 @@ namespace HtmlHelp2 @@ -452,6 +433,119 @@ namespace HtmlHelp2
catch {}
}
#endregion
#region DebugInfo
private void CreateDebugPre()
{
if(this.debugPreElement == String.Empty) return;
try
{
dynamicHelpBrowser.Document.Body.InsertAdjacentElement(HtmlElementInsertionOrientation.BeforeEnd, this.CreateABreak());
dynamicHelpBrowser.Document.Body.InsertAdjacentElement(HtmlElementInsertionOrientation.BeforeEnd, this.CreateABreak());
HtmlElement pre = dynamicHelpBrowser.CreateHtmlElement("pre");
pre.InnerHtml = "--- Dynamic Help Debug ---<br>" + this.debugPreElement;
dynamicHelpBrowser.InsertHtmlElement(HtmlElementInsertionOrientation.BeforeEnd, pre);
}
catch {}
}
private bool EnableDebugInfo()
{
try
{
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(PropertyService.ConfigDirectory + "help2environment.xml");
XmlNode node = xmldoc.SelectSingleNode("/help2environment/dynamic_help/@enabledebuginfo");
return (node != null && node.InnerText == "yes");
}
catch {}
return false;
}
#endregion
private void SolutionClosed(object sender, EventArgs e)
{
this.RemoveAllChildren();
}
#region StringCollection & Sorting
private void AddToStringCollection(string searchTerm)
{
this.AddToStringCollection(-1, searchTerm);
}
private void AddToStringCollection(int insertWhere, string searchTerm)
{
if(this.dynamicHelpTerms.IndexOf(searchTerm) == -1)
{
if(insertWhere == -1) this.dynamicHelpTerms.Add(searchTerm);
else this.dynamicHelpTerms.Insert(insertWhere, searchTerm);
}
}
private IHxTopic[] SortTopics(IHxTopicList topics)
{
IHxTopic[] result = null;
try
{
result = new IHxTopic[topics.Count];
int counter = 0;
foreach(IHxTopic topic in topics)
{
result[counter] = topic;
counter++;
}
TopicComparer topicComparer = new TopicComparer();
Array.Sort(result, topicComparer);
}
catch {}
return result;
}
class TopicComparer : IComparer
{
private IHxTopic topicA = null;
private IHxTopic topicB = null;
public int Compare(object x, object y)
{
topicA = (IHxTopic)x;
topicB = (IHxTopic)y;
int result = 0;
result = CompareType("kbSyntax");
if(result == 0) result = CompareType("kbHowTo");
if(result == 0) result = CompareType("kbArticle");
return result;
}
private int CompareType(string topicType)
{
if(topicA.HasAttribute("TopicType", topicType) && !topicB.HasAttribute("TopicType", topicType))
{
return -1;
}
else if(topicB.HasAttribute("TopicType", topicType) && !topicA.HasAttribute("TopicType", topicType))
{
return 1;
}
else
{
return 0;
}
}
}
#endregion
}
public class HtmlHelp2DynamicHelpBrowserControl : UserControl

6
src/AddIns/Misc/HtmlHelp2/Project/src/Service/HtmlHelp2Options.cs

@ -76,12 +76,10 @@ namespace HtmlHelp2.OptionsPanel @@ -76,12 +76,10 @@ namespace HtmlHelp2.OptionsPanel
try
{
XmlDocument xmldoc = new XmlDocument();
XmlNode node = null;
XmlCDataSection cdata = null;
xmldoc.LoadXml("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><help2environment/>");
node = xmldoc.CreateElement("collection");
cdata = xmldoc.CreateCDataSection(selectedHelp2Collection);
XmlNode node = xmldoc.CreateElement("collection");
XmlCDataSection cdata = xmldoc.CreateCDataSection(selectedHelp2Collection);
node.AppendChild(cdata);
xmldoc.DocumentElement.AppendChild(node);

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

@ -25,7 +25,7 @@ namespace HtmlHelp2.Environment @@ -25,7 +25,7 @@ namespace HtmlHelp2.Environment
static HxSession session = null;
static IHxRegFilterList namespaceFilters = null;
static IHxQuery fulltextSearch = null;
static IHxQuery dynamicHelp = null;
static IHxIndex dynamicHelp = null;
public static string DefaultNamespaceName = "MS.NETFramework.v20*";
static string currentSelectedFilterQuery = "";
static string currentSelectedFilterName = "";
@ -154,7 +154,7 @@ namespace HtmlHelp2.Environment @@ -154,7 +154,7 @@ namespace HtmlHelp2.Environment
{
try
{
dynamicHelp = (IHxQuery)session.GetNavigationInterface("!DefaultContextWindowIndex", currentSelectedFilterQuery, ref QueryGuid);
dynamicHelp = (IHxIndex)session.GetNavigationInterface("!DefaultContextWindowIndex", currentSelectedFilterQuery, ref IndexGuid);
}
catch
{

Loading…
Cancel
Save