private void _browser1_OnBrowserClick(object sender, EventArgs e)
{
var ge = e as DomEventArgs;
if(ge == null || ge.Target == null)
return; //I've seen this happen
var target = (GeckoHtmlElement) ge.Target.CastToGeckoElement();
if(target.ClassName.Contains("sourceTextTab"))
{
RememberSourceTabChoice(target);
return;
}
if(target.ClassName.Contains("changeImageButton"))
OnChangeImage(ge);
if(target.ClassName.Contains("pasteImageButton"))
OnPasteImage(ge);
if(target.ClassName.Contains("cutImageButton"))
OnCutImage(ge);
if(target.ClassName.Contains("copyImageButton"))
OnCopyImage(ge);
if(target.ClassName.Contains("editMetadataButton"))
OnEditImageMetdata(ge);
var anchor = target as Gecko.DOM.GeckoAnchorElement;
if(anchor != null && anchor.Href != "" && anchor.Href != "#")
{
if(anchor.Href.Contains("bookMetadataEditor"))
{
OnShowBookMetadataEditor();
ge.Handled = true;
return;
}
// Let Gecko handle hrefs that are explicitly tagged "javascript"
if(anchor.Href.StartsWith("javascript")) //tied to, for example, data-functionOnHintClick="ShowTopicChooser()"
{
ge.Handled = false; // let gecko handle it
return;
}
if(anchor.Href.ToLowerInvariant().StartsWith("http")) //will cover https also
{
// do not open in external browser if localhost...except for some links in the toolbox
if(anchor.Href.ToLowerInvariant().StartsWith(ServerBase.ServerUrlWithBloomPrefixEndingInSlash))
{
ge.Handled = false; // let gecko handle it
return;
}
Process.Start(anchor.Href);
ge.Handled = true;
return;
}
if(anchor.Href.ToLowerInvariant().StartsWith("file")) //source bubble tabs
{
ge.Handled = false; //let gecko handle it
return;
}
ErrorReport.NotifyUserOfProblem("Bloom did not understand this link: " + anchor.Href);
ge.Handled = true;
}
}