Browse Source

fixed some flaws in the TOC and Index control

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1496 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Mathias Simmack 19 years ago
parent
commit
f03fbe2c1c
  1. 204
      src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/IndexPad.cs
  2. 252
      src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/TocPad.cs

204
src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/IndexPad.cs

@ -51,7 +51,6 @@ namespace HtmlHelp2
public HtmlHelp2IndexPad() public HtmlHelp2IndexPad()
{ {
help2IndexControl = new MsHelp2IndexControl(); help2IndexControl = new MsHelp2IndexControl();
if (help2IndexControl.IsEnabled) help2IndexControl.LoadIndex();
} }
} }
@ -63,46 +62,36 @@ namespace HtmlHelp2
Label label1 = new Label(); Label label1 = new Label();
Label label2 = new Label(); Label label2 = new Label();
bool itemClicked = false; bool itemClicked = false;
bool controlIsEnabled = false; bool isEnabled = false;
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing)
{ {
base.Dispose(disposing); base.Dispose(disposing);
if (disposing && indexControl != null) { indexControl.Dispose(); } if (disposing && indexControl != null)
}
public bool IsEnabled
{ {
get { return this.controlIsEnabled; } indexControl.Dispose();
} }
public void RedrawContent()
{
label1.Text = StringParser.Parse("${res:AddIns.HtmlHelp2.FilteredBy}");
label2.Text = StringParser.Parse("${res:AddIns.HtmlHelp2.LookFor}");
} }
public MsHelp2IndexControl() public MsHelp2IndexControl()
{ {
this.controlIsEnabled = (HtmlHelp2Environment.IsReady && this.isEnabled = (HtmlHelp2Environment.IsReady &&
Help2ControlsValidation.IsIndexControlRegistered); Help2ControlsValidation.IsIndexControlRegistered);
if (this.controlIsEnabled) if (this.isEnabled)
{ {
try try
{ {
indexControl = new AxHxIndexCtrl(); indexControl = new AxHxIndexCtrl();
indexControl.BeginInit(); indexControl.BeginInit();
indexControl.Dock = DockStyle.Fill; indexControl.Dock = DockStyle.Fill;
indexControl.ItemClick += new AxMSHelpControls.IHxIndexViewEvents_ItemClickEventHandler(this.IndexItemClicked); indexControl.ItemClick +=
new AxMSHelpControls.IHxIndexViewEvents_ItemClickEventHandler(this.IndexItemClick);
indexControl.EndInit(); indexControl.EndInit();
Controls.Add(indexControl); Controls.Add(indexControl);
indexControl.CreateControl(); indexControl.CreateControl();
indexControl.BorderStyle = HxBorderStyle.HxBorderStyle_FixedSingle; indexControl.BorderStyle = HxBorderStyle.HxBorderStyle_FixedSingle;
indexControl.FontSource = HxFontSourceConstant.HxFontExternal; indexControl.FontSource = HxFontSourceConstant.HxFontExternal;
HtmlHelp2Environment.FilterQueryChanged += new EventHandler(FilterQueryChanged);
HtmlHelp2Environment.NamespaceReloaded += new EventHandler(NamespaceReloaded);
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -115,146 +104,151 @@ namespace HtmlHelp2
this.FakeHelpControl(); this.FakeHelpControl();
} }
// Filter Combobox
Panel panel1 = new Panel(); Panel panel1 = new Panel();
Controls.Add(panel1); Controls.Add(panel1);
panel1.Dock = DockStyle.Top; panel1.Dock = DockStyle.Top;
panel1.Height = filterCombobox.Height + 7; panel1.Height = filterCombobox.Height + 7;
panel1.Controls.Add(filterCombobox); panel1.Controls.Add(filterCombobox);
filterCombobox.Dock = DockStyle.Top; filterCombobox.Dock = DockStyle.Top;
filterCombobox.DropDownStyle = ComboBoxStyle.DropDownList; filterCombobox.DropDownStyle = ComboBoxStyle.DropDownList;
filterCombobox.Sorted = true; filterCombobox.Sorted = true;
filterCombobox.Enabled = this.controlIsEnabled; filterCombobox.Enabled = this.isEnabled;
filterCombobox.SelectedIndexChanged += new EventHandler(FilterChanged); filterCombobox.SelectedIndexChanged += new EventHandler(this.FilterChanged);
// Filter label
Controls.Add(label1); Controls.Add(label1);
label1.Text = StringParser.Parse("${res:AddIns.HtmlHelp2.FilteredBy}");
label1.Dock = DockStyle.Top; label1.Dock = DockStyle.Top;
label1.TextAlign = ContentAlignment.MiddleLeft; label1.TextAlign = ContentAlignment.MiddleLeft;
label1.Enabled = this.controlIsEnabled; label1.Enabled = this.isEnabled;
// SearchTerm Combobox
Panel panel2 = new Panel(); Panel panel2 = new Panel();
Controls.Add(panel2); Controls.Add(panel2);
panel2.Dock = DockStyle.Top; panel2.Dock = DockStyle.Top;
panel2.Height = searchTerm.Height + 7; panel2.Height = searchTerm.Height + 7;
panel2.Controls.Add(searchTerm); panel2.Controls.Add(searchTerm);
searchTerm.Dock = DockStyle.Top; searchTerm.Dock = DockStyle.Top;
searchTerm.Enabled = this.controlIsEnabled; searchTerm.Enabled = this.isEnabled;
searchTerm.TextChanged += new EventHandler(SearchTextChanged); searchTerm.TextChanged += new EventHandler(this.SearchTextChanged);
searchTerm.KeyPress += new KeyPressEventHandler(KeyPressed); searchTerm.KeyPress += new KeyPressEventHandler(this.SearchKeyPress);
// SearchTerm Label
Controls.Add(label2); Controls.Add(label2);
label2.Text = StringParser.Parse("${res:AddIns.HtmlHelp2.LookFor}");
label2.Dock = DockStyle.Top; label2.Dock = DockStyle.Top;
label2.TextAlign = ContentAlignment.MiddleLeft; label2.TextAlign = ContentAlignment.MiddleLeft;
label2.Enabled = this.controlIsEnabled; label2.Enabled = this.isEnabled;
this.RedrawContent();
if (this.isEnabled)
{
HtmlHelp2Environment.FilterQueryChanged += new EventHandler(this.FilterQueryChanged);
HtmlHelp2Environment.NamespaceReloaded += new EventHandler(this.NamespaceReloaded);
this.LoadIndex();
}
} }
private void FakeHelpControl() private void FakeHelpControl()
{ {
if (indexControl != null) indexControl.Dispose(); if (indexControl != null) indexControl.Dispose();
indexControl = null; indexControl = null;
Controls.Clear(); Controls.Clear();
Panel nohelpPanel = new Panel(); Panel nohelpPanel = new Panel();
Controls.Add(nohelpPanel);
nohelpPanel.Dock = DockStyle.Fill; nohelpPanel.Dock = DockStyle.Fill;
nohelpPanel.BorderStyle = BorderStyle.Fixed3D; nohelpPanel.BorderStyle = BorderStyle.Fixed3D;
Controls.Add(nohelpPanel);
} }
public void LoadIndex() public void RedrawContent()
{
if (!this.controlIsEnabled) return;
try
{ {
searchTerm.Text = ""; label1.Text = StringParser.Parse("${res:AddIns.HtmlHelp2.FilteredBy}");
searchTerm.Items.Clear(); label2.Text = StringParser.Parse("${res:AddIns.HtmlHelp2.LookFor}");
indexControl.IndexData = HtmlHelp2Environment.GetIndex(HtmlHelp2Environment.CurrentFilterQuery);
filterCombobox.SelectedIndexChanged -= new EventHandler(FilterChanged);
HtmlHelp2Environment.BuildFilterList(filterCombobox);
filterCombobox.SelectedIndexChanged += new EventHandler(FilterChanged);
} }
catch
private void IndexItemClick(object sender, IHxIndexViewEvents_ItemClickEvent e)
{ {
LoggingService.Error("Help 2.0: cannot connect to IHxIndex interface (Index)"); string indexTerm = indexControl.IndexData.GetFullStringFromSlot(e.iItem, ",");
indexControl.Enabled = false; int indexSlot = e.iItem;
indexControl.BackColor = SystemColors.ButtonFace;
filterCombobox.Enabled = false; itemClicked = true;
searchTerm.Enabled = false; searchTerm.Items.Insert(0, indexTerm);
} searchTerm.SelectedIndex = 0;
itemClicked = false;
this.ShowSelectedItemEntry(indexTerm, indexSlot);
} }
private void FilterChanged(object sender, EventArgs e) private void FilterChanged(object sender, EventArgs e)
{ {
string selectedString = filterCombobox.SelectedItem.ToString(); string selectedFilterName = filterCombobox.SelectedItem.ToString();
if (selectedFilterName != null && selectedFilterName.Length > 0)
if (selectedString != "")
{ {
Cursor.Current = Cursors.WaitCursor; Cursor.Current = Cursors.WaitCursor;
indexControl.IndexData = HtmlHelp2Environment.GetIndex(HtmlHelp2Environment.FindFilterQuery(selectedString)); this.SetIndex(selectedFilterName);
Cursor.Current = Cursors.Default; Cursor.Current = Cursors.Default;
} }
} }
#region Help 2.0 Environment Events
private void FilterQueryChanged(object sender, EventArgs e)
{
Application.DoEvents();
string currentFilterName = filterCombobox.SelectedItem.ToString();
if (String.Compare(currentFilterName, HtmlHelp2Environment.CurrentFilterName) != 0)
{
filterCombobox.SelectedIndexChanged -= new EventHandler(FilterChanged);
filterCombobox.SelectedIndex = filterCombobox.Items.IndexOf(HtmlHelp2Environment.CurrentFilterName);
indexControl.IndexData = HtmlHelp2Environment.GetIndex(HtmlHelp2Environment.CurrentFilterQuery);
filterCombobox.SelectedIndexChanged += new EventHandler(FilterChanged);
}
}
private void NamespaceReloaded(object sender, EventArgs e)
{
this.LoadIndex();
}
#endregion
private void SearchTextChanged(object sender, EventArgs e) private void SearchTextChanged(object sender, EventArgs e)
{ {
if (!itemClicked && searchTerm.Text != "") if (!this.itemClicked && searchTerm.Text.Length > 0)
{ {
indexControl.Selection = indexControl.IndexData.GetSlotFromString(searchTerm.Text); indexControl.Selection =
indexControl.IndexData.GetSlotFromString(searchTerm.Text);
} }
} }
private void KeyPressed(object sender, KeyPressEventArgs e) private void SearchKeyPress(object sender, KeyPressEventArgs e)
{ {
if (e.KeyChar == (char)13) if (e.KeyChar == (char)13)
{ {
int indexSlot = indexControl.IndexData.GetSlotFromString(searchTerm.Text); int indexSlot = indexControl.IndexData.GetSlotFromString(searchTerm.Text);
string indexTerm = indexControl.IndexData.GetFullStringFromSlot(indexSlot, ","); string indexTerm = indexControl.IndexData.GetFullStringFromSlot(indexSlot, ",");
searchTerm.Items.Insert(0,indexTerm); searchTerm.Items.Insert(0, indexTerm);
searchTerm.SelectedIndex = 0; searchTerm.SelectedIndex = 0;
if (searchTerm.Items.Count > 10) searchTerm.Items.RemoveAt(10); if (searchTerm.Items.Count > 10)
{
searchTerm.Items.RemoveAt(10);
}
this.ShowSelectedItemEntry(indexTerm, indexSlot); this.ShowSelectedItemEntry(indexTerm, indexSlot);
} }
} }
private void IndexItemClicked(object sender, IHxIndexViewEvents_ItemClickEvent e) private void LoadIndex()
{ {
string indexTerm = indexControl.IndexData.GetFullStringFromSlot(e.iItem, ","); this.SetIndex(HtmlHelp2Environment.CurrentFilterName);
int indexSlot = e.iItem; if (this.isEnabled)
{
itemClicked = true; searchTerm.Text = string.Empty;
searchTerm.Items.Insert(0,indexTerm); searchTerm.Items.Clear();
searchTerm.SelectedIndex = 0; filterCombobox.SelectedIndexChanged -= new EventHandler(this.FilterChanged);
itemClicked = false; HtmlHelp2Environment.BuildFilterList(filterCombobox);
filterCombobox.SelectedIndexChanged += new EventHandler(this.FilterChanged);
}
}
this.ShowSelectedItemEntry(indexTerm, indexSlot); private void SetIndex(string filterName)
{
if (!this.isEnabled) return;
try
{
indexControl.IndexData =
HtmlHelp2Environment.GetIndex(HtmlHelp2Environment.FindFilterQuery(filterName));
}
catch
{
this.isEnabled = false;
indexControl.Enabled = false;
indexControl.BackColor = SystemColors.ButtonFace;
filterCombobox.Enabled = false;
searchTerm.Enabled = false;
label1.Enabled = false;
label2.Enabled = false;
LoggingService.Error("Help 2.0: cannot connect to IHxIndex interface (Index)");
}
} }
private void ShowSelectedItemEntry(string indexTerm, int indexSlot) private void ShowSelectedItemEntry(string indexTerm, int indexSlot)
@ -275,7 +269,8 @@ namespace HtmlHelp2
foreach (IHxTopic topic in matchingTopics) foreach (IHxTopic topic in matchingTopics)
{ {
ListViewItem lvi = new ListViewItem(); ListViewItem lvi = new ListViewItem();
lvi.Text = topic.get_Title(HxTopicGetTitleType.HxTopicGetRLTitle, lvi.Text =
topic.get_Title(HxTopicGetTitleType.HxTopicGetRLTitle,
HxTopicGetTitleDefVal.HxTopicGetTitleFileName); HxTopicGetTitleDefVal.HxTopicGetTitleFileName);
lvi.Tag = topic; lvi.Tag = topic;
lvi.SubItems.Add(topic.Location); lvi.SubItems.Add(topic.Location);
@ -307,5 +302,32 @@ namespace HtmlHelp2
LoggingService.Error("Help 2.0: cannot get matching index entries; " + ex.ToString()); LoggingService.Error("Help 2.0: cannot get matching index entries; " + ex.ToString());
} }
} }
#region Help 2.0 Environment Events
private void FilterQueryChanged(object sender, EventArgs e)
{
Application.DoEvents();
string currentFilterName = filterCombobox.SelectedItem.ToString();
if (string.Compare(currentFilterName, HtmlHelp2Environment.CurrentFilterName) != 0)
{
filterCombobox.SelectedIndexChanged -= new EventHandler(this.FilterChanged);
filterCombobox.SelectedIndex =
filterCombobox.Items.IndexOf(HtmlHelp2Environment.CurrentFilterName);
this.SetIndex(HtmlHelp2Environment.CurrentFilterName);
filterCombobox.SelectedIndexChanged += new EventHandler(this.FilterChanged);
}
}
private void NamespaceReloaded(object sender, EventArgs e)
{
this.LoadIndex();
}
#endregion
public bool IsEnabled
{
get { return this.isEnabled; }
}
} }
} }

252
src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/TocPad.cs

@ -55,32 +55,31 @@ namespace HtmlHelp2
public HtmlHelp2TocPad() public HtmlHelp2TocPad()
{ {
help2TocControl = new MsHelp2TocControl(); help2TocControl = new MsHelp2TocControl();
if (help2TocControl.IsEnabled) help2TocControl.LoadToc();
} }
public void SyncToc(string topicUrl) public void SyncToc(string topicUrl)
{ {
if (help2TocControl.IsEnabled) help2TocControl.SynchronizeToc(topicUrl); help2TocControl.SynchronizeToc(topicUrl);
} }
public void GetPrevFromNode() public void GetPrevFromNode()
{ {
if (help2TocControl.IsEnabled) help2TocControl.GetPrevFromNode(); help2TocControl.GetPrevFromNode();
} }
public void GetPrevFromUrl(string topicUrl) public void GetPrevFromUrl(string topicUrl)
{ {
if (help2TocControl.IsEnabled) help2TocControl.GetPrevFromUrl(topicUrl); help2TocControl.GetPrevFromUrl(topicUrl);
} }
public void GetNextFromNode() public void GetNextFromNode()
{ {
if (help2TocControl.IsEnabled) help2TocControl.GetNextFromNode(); help2TocControl.GetNextFromNode();
} }
public void GetNextFromUrl(string topicUrl) public void GetNextFromUrl(string topicUrl)
{ {
if (help2TocControl.IsEnabled) help2TocControl.GetNextFromUrl(topicUrl); help2TocControl.GetNextFromUrl(topicUrl);
} }
public bool IsNotFirstNode public bool IsNotFirstNode
@ -99,33 +98,25 @@ namespace HtmlHelp2
AxHxTocCtrl tocControl = null; AxHxTocCtrl tocControl = null;
ComboBox filterCombobox = new ComboBox(); ComboBox filterCombobox = new ComboBox();
Label label1 = new Label(); Label label1 = new Label();
ContextMenuStrip printPopup = new ContextMenuStrip(); ContextMenuStrip printContextMenu = new ContextMenuStrip();
ToolStripMenuItem printTopic = new ToolStripMenuItem(); ToolStripMenuItem printTopic = new ToolStripMenuItem();
ToolStripMenuItem printChildTopics = new ToolStripMenuItem(); ToolStripMenuItem printTopicAndSubTopics = new ToolStripMenuItem();
bool controlIsEnabled = false; bool isEnabled = false;
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing)
{ {
base.Dispose(disposing); base.Dispose(disposing);
if (disposing && tocControl != null) { tocControl.Dispose(); } if (disposing && tocControl != null)
}
public bool IsEnabled
{ {
get { return this.controlIsEnabled; } tocControl.Dispose();
} }
public void RedrawContent()
{
label1.Text = StringParser.Parse("${res:AddIns.HtmlHelp2.FilteredBy}");
} }
public MsHelp2TocControl() public MsHelp2TocControl()
{ {
this.controlIsEnabled = (HtmlHelp2Environment.IsReady && this.isEnabled = (HtmlHelp2Environment.IsReady && Help2ControlsValidation.IsTocControlRegistered);
Help2ControlsValidation.IsTocControlRegistered);
if (this.controlIsEnabled) if (this.isEnabled)
{ {
try try
{ {
@ -133,30 +124,33 @@ namespace HtmlHelp2
tocControl.BeginInit(); tocControl.BeginInit();
tocControl.Dock = DockStyle.Fill; tocControl.Dock = DockStyle.Fill;
tocControl.NodeClick += tocControl.NodeClick +=
new AxMSHelpControls.IHxTreeViewEvents_NodeClickEventHandler(this.TocNodeClicked); new AxMSHelpControls.IHxTreeViewEvents_NodeClickEventHandler(this.TocNodeClick);
tocControl.NodeRightClick += tocControl.NodeRightClick +=
new AxMSHelpControls.IHxTreeViewEvents_NodeRightClickEventHandler(this.TocNodeRightClicked); new AxMSHelpControls.IHxTreeViewEvents_NodeRightClickEventHandler(TocNodeRightClick);
tocControl.EndInit(); tocControl.EndInit();
Controls.Add(tocControl); Controls.Add(tocControl);
tocControl.CreateControl(); tocControl.CreateControl();
tocControl.BorderStyle = HxBorderStyle.HxBorderStyle_FixedSingle; tocControl.BorderStyle = HxBorderStyle.HxBorderStyle_FixedSingle;
tocControl.FontSource = HxFontSourceConstant.HxFontExternal; tocControl.FontSource = HxFontSourceConstant.HxFontExternal;
#if DExplore8Style_NoTOCPictures #if DExplore8StyleWithNoTocPictures
tocControl.TreeStyle = HxTreeStyleConstant.HxTreeStyle_TreelinesPlusMinusText; tocControl.TreeStyle = HxTreeStyleConstant.HxTreeStyle_TreelinesPlusMinusText;
#endif #endif
printTopic.Image = ResourcesHelper.GetBitmap("HtmlHelp2.16x16.Print.bmp"); printTopic.Image = ResourcesHelper.GetBitmap("HtmlHelp2.16x16.Print.bmp");
printTopic.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText; printTopic.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;
printTopic.Text = StringParser.Parse("${res:AddIns.HtmlHelp2.PrintTopic}"); printTopic.Text = StringParser.Parse("${res:AddIns.HtmlHelp2.PrintTopic}");
printChildTopics.Text = StringParser.Parse("${res:AddIns.HtmlHelp2.PrintSubtopics}");
printPopup.Items.Add(printTopic);
printTopic.Click += new EventHandler(this.PrintTopic); printTopic.Click += new EventHandler(this.PrintTopic);
printPopup.Items.Add(printChildTopics); printContextMenu.Items.Add(printTopic);
printChildTopics.Click += new EventHandler(this.PrintTopicAndSubtopics);
printTopicAndSubTopics.Text = StringParser.Parse("${res:AddIns.HtmlHelp2.PrintSubtopics}");
printTopicAndSubTopics.Click += new EventHandler(this.PrintTopicAndSubTopics);
printContextMenu.Items.Add(printTopicAndSubTopics);
} }
catch (Exception ex) catch(Exception ex)
{ {
LoggingService.Error("Help 2.0: TOC control failed; " + ex.ToString()); LoggingService.Error("Help 2.0: TOC control failed; " + ex.ToString());
this.isEnabled = false;
this.FakeHelpControl(); this.FakeHelpControl();
} }
} }
@ -165,35 +159,38 @@ namespace HtmlHelp2
this.FakeHelpControl(); this.FakeHelpControl();
} }
// Combobox panel
Panel panel1 = new Panel(); Panel panel1 = new Panel();
Controls.Add(panel1); Controls.Add(panel1);
panel1.Dock = DockStyle.Top; panel1.Dock = DockStyle.Top;
panel1.Height = filterCombobox.Height + 7; panel1.Height = filterCombobox.Height + 7;
panel1.Controls.Add(filterCombobox); panel1.Controls.Add(filterCombobox);
filterCombobox.Dock = DockStyle.Top; filterCombobox.Dock = DockStyle.Top;
filterCombobox.DropDownStyle = ComboBoxStyle.DropDownList; filterCombobox.DropDownStyle = ComboBoxStyle.DropDownList;
filterCombobox.Sorted = true; filterCombobox.Sorted = true;
filterCombobox.Enabled = this.controlIsEnabled; filterCombobox.Enabled = this.isEnabled;
filterCombobox.SelectedIndexChanged += new EventHandler(this.FilterChanged); filterCombobox.SelectedIndexChanged += new EventHandler(this.FilterChanged);
// Filter label
Controls.Add(label1); Controls.Add(label1);
label1.Text = StringParser.Parse("${res:AddIns.HtmlHelp2.FilteredBy}");
label1.Dock = DockStyle.Top; label1.Dock = DockStyle.Top;
label1.TextAlign = ContentAlignment.MiddleLeft; label1.TextAlign = ContentAlignment.MiddleLeft;
label1.Enabled = this.controlIsEnabled; label1.Enabled = this.isEnabled;
this.RedrawContent();
if (this.controlIsEnabled) if (this.isEnabled)
{ {
HtmlHelp2Environment.FilterQueryChanged += new EventHandler(this.FilterQueryChanged); HtmlHelp2Environment.FilterQueryChanged += new EventHandler(this.FilterQueryChanged);
HtmlHelp2Environment.NamespaceReloaded += new EventHandler(this.NamespaceReloaded); HtmlHelp2Environment.NamespaceReloaded += new EventHandler(this.NamespaceReloaded);
this.LoadToc();
} }
} }
private void FakeHelpControl() private void FakeHelpControl()
{ {
if (tocControl != null) tocControl.Dispose();
tocControl = null; tocControl = null;
Controls.Clear();
Label nohelpLabel = new Label(); Label nohelpLabel = new Label();
nohelpLabel.Dock = DockStyle.Fill; nohelpLabel.Dock = DockStyle.Fill;
nohelpLabel.Text = StringParser.Parse("${res:AddIns.HtmlHelp2.HelpSystemNotAvailable}"); nohelpLabel.Text = StringParser.Parse("${res:AddIns.HtmlHelp2.HelpSystemNotAvailable}");
@ -201,124 +198,149 @@ namespace HtmlHelp2
Controls.Add(nohelpLabel); Controls.Add(nohelpLabel);
} }
public void LoadToc() public void RedrawContent()
{ {
if (!this.controlIsEnabled) return; label1.Text = StringParser.Parse("${res:AddIns.HtmlHelp2.FilteredBy}");
}
try private void TocNodeClick(object sender, IHxTreeViewEvents_NodeClickEvent e)
{ {
tocControl.Hierarchy = HtmlHelp2Environment.GetTocHierarchy(HtmlHelp2Environment.CurrentFilterQuery); string topicUrl = tocControl.Hierarchy.GetURL(e.hNode);
filterCombobox.SelectedIndexChanged -= new EventHandler(this.FilterChanged); this.CallHelp(topicUrl);
HtmlHelp2Environment.BuildFilterList(filterCombobox);
filterCombobox.SelectedIndexChanged += new EventHandler(this.FilterChanged);
} }
catch
private void TocNodeRightClick(object sender, IHxTreeViewEvents_NodeRightClickEvent e)
{ {
LoggingService.Error("Help 2.0: cannot connect to IHxHierarchy interface (Contents)"); if (e.hNode != 0)
tocControl.Enabled = false; {
tocControl.BackColor = SystemColors.ButtonFace; printTopic.Enabled = tocControl.Hierarchy.GetURL(e.hNode) != "";
filterCombobox.Enabled = false; printTopicAndSubTopics.Enabled = tocControl.Hierarchy.GetFirstChild(e.hNode) != 0;
bool selectTextFlag = (tocControl.Hierarchy.GetFirstChild(e.hNode) == 0 ||
tocControl.Hierarchy.GetURL(e.hNode) == "");
printTopicAndSubTopics.Text =
StringParser.Parse((selectTextFlag)?
"${res:AddIns.HtmlHelp2.PrintSubtopics}":
"${res:AddIns.HtmlHelp2.PrintTopicAndSubtopics}");
Point p = new Point(e.x, e.y);
p = this.PointToClient(p);
printContextMenu.Show(this, p);
} }
} }
private void FilterChanged(object sender, EventArgs e) #region Printing
private void PrintTopic(object sender, EventArgs e)
{ {
string selectedString = filterCombobox.SelectedItem.ToString(); if (tocControl.Selection != 0)
{
tocControl.Hierarchy.PrintNode(0, tocControl.Selection, PrintOptions.HxHierarchy_PrintNode_Option_Node);
}
}
if (selectedString != null && selectedString != "") private void PrintTopicAndSubTopics(object sender, EventArgs e)
{
if (tocControl.Selection != 0)
{
tocControl.Hierarchy.PrintNode(0, tocControl.Selection, PrintOptions.HxHierarchy_PrintNode_Option_Children);
}
}
#endregion
private void FilterChanged(object sender, EventArgs e)
{
string selectedFilterName = filterCombobox.SelectedItem.ToString();
if (selectedFilterName != null && selectedFilterName.Length > 0)
{ {
Cursor.Current = Cursors.WaitCursor; Cursor.Current = Cursors.WaitCursor;
tocControl.Hierarchy = HtmlHelp2Environment.GetTocHierarchy(HtmlHelp2Environment.FindFilterQuery(selectedString)); this.SetToc(selectedFilterName);
Cursor.Current = Cursors.Default; Cursor.Current = Cursors.Default;
} }
} }
#region Help 2.0 Environment Events private void LoadToc()
private void FilterQueryChanged(object sender, EventArgs e)
{ {
Application.DoEvents(); this.SetToc(HtmlHelp2Environment.CurrentFilterName);
if (this.isEnabled)
string currentFilterName = filterCombobox.SelectedItem.ToString();
if (String.Compare(currentFilterName, HtmlHelp2Environment.CurrentFilterName) != 0)
{ {
filterCombobox.SelectedIndexChanged -= new EventHandler(this.FilterChanged); filterCombobox.SelectedIndexChanged -= new EventHandler(this.FilterChanged);
filterCombobox.SelectedIndex = filterCombobox.Items.IndexOf(HtmlHelp2Environment.CurrentFilterName); HtmlHelp2Environment.BuildFilterList(filterCombobox);
tocControl.Hierarchy = HtmlHelp2Environment.GetTocHierarchy(HtmlHelp2Environment.CurrentFilterQuery);
filterCombobox.SelectedIndexChanged += new EventHandler(this.FilterChanged); filterCombobox.SelectedIndexChanged += new EventHandler(this.FilterChanged);
} }
} }
private void NamespaceReloaded(object sender, EventArgs e) private void SetToc(string filterName)
{ {
this.LoadToc(); if (!this.isEnabled) return;
} try
#endregion
private void CallHelp(string topicUrl, bool syncToc)
{ {
if (topicUrl != null && topicUrl != "") tocControl.Hierarchy =
HtmlHelp2Environment.GetTocHierarchy(HtmlHelp2Environment.FindFilterQuery(filterName));
}
catch
{ {
if (syncToc) this.SynchronizeToc(topicUrl); this.isEnabled = false;
ShowHelpBrowser.OpenHelpView(topicUrl); tocControl.Enabled = false;
tocControl.BackColor = SystemColors.ButtonFace;
filterCombobox.Enabled = false;
label1.Enabled = false;
LoggingService.Error("Help 2.0: cannot connect to IHxHierarchy interface (Contents)");
} }
} }
private void TocNodeClicked(object sender, IHxTreeViewEvents_NodeClickEvent e) private void CallHelp(string topicUrl)
{ {
string TopicUrl = tocControl.Hierarchy.GetURL(e.hNode); this.CallHelp(topicUrl, true);
this.CallHelp(TopicUrl,false);
} }
#region Printing private void CallHelp(string topicUrl, bool syncToc)
private void TocNodeRightClicked(object sender, IHxTreeViewEvents_NodeRightClickEvent e)
{ {
if (e.hNode != 0) if (topicUrl.Length > 0)
{ {
printTopic.Enabled = tocControl.Hierarchy.GetURL(e.hNode) != ""; if (syncToc) this.SynchronizeToc(topicUrl);
printChildTopics.Enabled = tocControl.Hierarchy.GetFirstChild(e.hNode) != 0; ShowHelpBrowser.OpenHelpView(topicUrl);
printChildTopics.Text = StringParser.Parse((tocControl.Hierarchy.GetFirstChild(e.hNode) == 0 || tocControl.Hierarchy.GetURL(e.hNode) == "")?
"${res:AddIns.HtmlHelp2.PrintSubtopics}":
"${res:AddIns.HtmlHelp2.PrintTopicAndSubtopics}");
Point p = new Point(e.x, e.y);
p = this.PointToClient(p);
printPopup.Show(this, p);
} }
} }
private void PrintTopic(object sender, EventArgs e) #region Help 2.0 Environment Events
private void FilterQueryChanged(object sender, EventArgs e)
{ {
if (tocControl.Selection != 0) Application.DoEvents();
string currentFilterName = filterCombobox.SelectedItem.ToString();
if (string.Compare(currentFilterName, HtmlHelp2Environment.CurrentFilterName) != 0)
{ {
tocControl.Hierarchy.PrintNode(0, filterCombobox.SelectedIndexChanged -= new EventHandler(this.FilterChanged);
tocControl.Selection, filterCombobox.SelectedIndex =
PrintOptions.HxHierarchy_PrintNode_Option_Node); filterCombobox.Items.IndexOf(HtmlHelp2Environment.CurrentFilterName);
this.SetToc(HtmlHelp2Environment.CurrentFilterName);
filterCombobox.SelectedIndexChanged += new EventHandler(this.FilterChanged);
} }
} }
private void PrintTopicAndSubtopics(object sender, EventArgs e) private void NamespaceReloaded(object sender, EventArgs e)
{
if (tocControl.Selection != 0)
{ {
tocControl.Hierarchy.PrintNode(0, this.LoadToc();
tocControl.Selection,
PrintOptions.HxHierarchy_PrintNode_Option_Children);
}
} }
#endregion #endregion
#region published Help2 TOC Commands #region Published Help 2.0 Commands
public void SynchronizeToc(string topicUrl) public void SynchronizeToc(string topicUrl)
{ {
try { if (!this.isEnabled) return;
try
{
tocControl.Synchronize(topicUrl); tocControl.Synchronize(topicUrl);
} catch (System.Runtime.InteropServices.COMException) { }
catch (System.Runtime.InteropServices.COMException)
{
// SD2-812: ignore exception when trying to synchronize non-existing URL // SD2-812: ignore exception when trying to synchronize non-existing URL
} }
} }
public void GetNextFromNode() public void GetNextFromNode()
{ {
if (!this.isEnabled) return;
int currentNode = tocControl.Hierarchy.GetNextFromNode(tocControl.Selection); int currentNode = tocControl.Hierarchy.GetNextFromNode(tocControl.Selection);
string topicUrl = tocControl.Hierarchy.GetURL(currentNode); string topicUrl = tocControl.Hierarchy.GetURL(currentNode);
this.CallHelp(topicUrl, true); this.CallHelp(topicUrl, true);
@ -326,18 +348,25 @@ namespace HtmlHelp2
public void GetNextFromUrl(string url) public void GetNextFromUrl(string url)
{ {
try { if (!this.isEnabled || url == null || url.Length == 0) return;
try
{
int currentNode = tocControl.Hierarchy.GetNextFromUrl(url); int currentNode = tocControl.Hierarchy.GetNextFromUrl(url);
string topicUrl = tocControl.Hierarchy.GetURL(currentNode); string topicUrl = tocControl.Hierarchy.GetURL(currentNode);
this.CallHelp(topicUrl, true); this.CallHelp(topicUrl, true);
} catch (System.Runtime.InteropServices.COMException) { }
} catch (ArgumentException) { catch (System.Runtime.InteropServices.COMException)
{
// SD2-812: ignore exception when trying to synchronize non-existing URL // SD2-812: ignore exception when trying to synchronize non-existing URL
} }
catch (ArgumentException)
{
}
} }
public void GetPrevFromNode() public void GetPrevFromNode()
{ {
if (!this.isEnabled) return;
int currentNode = tocControl.Hierarchy.GetPrevFromNode(tocControl.Selection); int currentNode = tocControl.Hierarchy.GetPrevFromNode(tocControl.Selection);
string topicUrl = tocControl.Hierarchy.GetURL(currentNode); string topicUrl = tocControl.Hierarchy.GetURL(currentNode);
this.CallHelp(topicUrl, true); this.CallHelp(topicUrl, true);
@ -345,14 +374,20 @@ namespace HtmlHelp2
public void GetPrevFromUrl(string url) public void GetPrevFromUrl(string url)
{ {
try { if (!this.isEnabled || url == null || url.Length == 0) return;
try
{
int currentNode = tocControl.Hierarchy.GetPrevFromUrl(url); int currentNode = tocControl.Hierarchy.GetPrevFromUrl(url);
string topicUrl = tocControl.Hierarchy.GetURL(currentNode); string topicUrl = tocControl.Hierarchy.GetURL(currentNode);
this.CallHelp(topicUrl, true); this.CallHelp(topicUrl, true);
} catch (ArgumentException) { }
} catch (System.Runtime.InteropServices.COMException) { catch (System.Runtime.InteropServices.COMException)
{
// SD2-812: ignore exception when trying to synchronize non-existing URL // SD2-812: ignore exception when trying to synchronize non-existing URL
} }
catch (ArgumentException)
{
}
} }
public bool IsNotFirstNode public bool IsNotFirstNode
@ -362,7 +397,7 @@ namespace HtmlHelp2
try try
{ {
int currentNode = tocControl.Hierarchy.GetPrevFromNode(tocControl.Selection); int currentNode = tocControl.Hierarchy.GetPrevFromNode(tocControl.Selection);
return currentNode != 0; return (currentNode != 0);
} }
catch catch
{ {
@ -378,7 +413,7 @@ namespace HtmlHelp2
try try
{ {
int currentNode = tocControl.Hierarchy.GetNextFromNode(tocControl.Selection); int currentNode = tocControl.Hierarchy.GetNextFromNode(tocControl.Selection);
return currentNode != 0; return (currentNode != 0);
} }
catch catch
{ {
@ -386,6 +421,11 @@ namespace HtmlHelp2
} }
} }
} }
public bool IsEnabled
{
get { return this.isEnabled; }
}
#endregion #endregion
} }
} }

Loading…
Cancel
Save