ich wollte dem Kontextmenü der EntityLinks eines Titels einen Befehl hinzufügen, welcher die erste verknüpfte Location des EntityLinks aufruft. Der Befehl als solches ist kein Problem, das kriege ich hin, aber ich sehe noch nicht ganz, wie ich dem Kontextmenü was hinzufügen kann. Das Ganze wird auf dem Screenshot ersichtlich. Statt des schicken roten Xs in der Toolbar (also das ganz rechts, nicht das, was eh schon da ist) würde ich gerne einen Befehl in das Kontextmenü einfügen (am liebsten an dritter Stelle, am allerliebsten mit eigenem Keyboard-Combo Strg+Shift+Enter), weiß aber nicht wie.
Hier ist mein Versuch, der damit endet, dass der Befehl in der Toolbar landet:
- Code: Select all
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SwissAcademic.Citavi;
using SwissAcademic.Citavi.Shell;
namespace BornheimsToolbox
{
class CrossReferenceOpen
:
CitaviAddOn
{
public override AddOnHostingForm HostingForm
{
get { return AddOnHostingForm.MainForm; }
}
protected override void OnHostingFormLoaded(System.Windows.Forms.Form hostingForm)
{
MainForm mainForm = (MainForm)hostingForm;
if (mainForm.ActiveWorkspace == MainFormWorkspace.ReferenceEditor)
{
var buttonOne = mainForm.GetReferenceEditorSourceEntityLinksCommandbarManager().GetCommandbar(MainFormReferenceEditorSourceEntityLinksCommandbarId.Toolbar).AddCommandbarButton("CrossReferenceOpen", "Open the First Location Attached to this Reference");
var buttonTwo = mainForm.GetReferenceEditorTargetEntityLinksCommandbarManager().GetCommandbar(MainFormReferenceEditorTargetEntityLinksCommandbarId.Toolbar).AddCommandbarButton("CrossReferenceOpen", "Open the First Location Attached to this Reference");
base.OnHostingFormLoaded(hostingForm);
}
}
protected override void OnBeforePerformingCommand(SwissAcademic.Controls.BeforePerformingCommandEventArgs e)
{
switch (e.Key)
{
case "CrossReferenceOpen":
{
e.Handled = true;
var crossReferenceOpener = new CrossReferenceOpener();
bool handled;
var mainForm = (MainForm)e.Form;
crossReferenceOpener.CrossReferenceOpen();
}
break;
}
base.OnBeforePerformingCommand(e);
}
}
}
Beste Grüße und vielen Dank
JJ