-
Notifications
You must be signed in to change notification settings - Fork 3
Citavi Tutorial (Teil 2)
Daniel Lutz edited this page Aug 19, 2020
·
1 revision
- Fügen Sie using-Statements für SwissAcademic.Citavi und SwissAcademic.Citavi.Shell hinzu.
- Lassen Sie die Klasse ShortTitleFilterDemo von CitaviAddOn erben.
- Überschreiben Sie die Eigenschaft HostingForm und geben Sie den Enum-Wert AddOnHostingForm.MainForm zurück wie auf dem Bild sichtbar.
- Fügen Sie Ihrem Projekt eine Klasse hinzu.
- Benenennen Sie die Klasse Filter.cs.
- Klicken Sie auf Hinzufügen.
- Fügen Sie ein using-Statement für SwissAcademic.Citavi hinzu.
- Lassen Sie die Klasse Filter das Interface IReferenceStringPropertyFilter implementieren.
- Klicken Sie mit der rechten Maustaste auf den Interface-Text und wählen Sie aus dem Kontextmenü den Befehl Interface implementieren.
- Überschreiben Sie den Methodenrumpf GetFilterResult wie auf dem Bild sichtbar
public string GetFilterResult(Reference reference, out bool handled)
{
handled = true;
return "Hello World (" + reference.Title.Substring(0, Math.Min(15, reference.Title.Length)) + "...)";
}
- Wechseln Sie zur Registerkarte ShortTitleFilterDemo.
- Überschreiben Sie die Methode OnHostingFormLoaded wie auf dem Bild sichtbar
protected override void OnHostingFormLoaded(System.Windows.Forms.Form hostingForm)
{
if (Reference.ShortTitleFilter == null)
{
Reference.ShortTitleFilter = new Filter();
}
base.OnHostingFormLoaded(hostingForm);
}
- Drücken Sie F5 oder klicken Sie auf Debugging starten.
Citavi kann für jede Programminstallation einen separaten Benutzerdateien-Ordner verwalten. Beim Programmstart von einem Pfad aus, der zuvor nie benutzt wurde, fragt Citavi deshalb nach dem gewünschten Ordner für Benutzerdateien. Da Sie zu Beginn mit der Kopie des Programmordners eine neue "Installation" erstellt haben, müssen Sie einmalig angeben, welcher Benutzerdateien-Ordner dafür verwendet werden soll.
- Klicken Sie auf Auswählen.
- Wählen Sie den bisher verwendeten Ordner für Benutzerdateien (in der Regel Eigene Dateien\Citavi 3).
- Klicken Sie auf OK.
- Klicken Sie auf OK.
- Öffnen Sie in Citavi ein beliebiges Projekt.
- Legen Sie einen neuen Titel an.
- Wählen Sie einen beliebigen Dokumententyp und klicken Sie auf OK.
- Geben Sie im Feld Titel einen beliebigen Text ein.
- Wechseln in das Feld Untertitel.
- Prüfen Sie, ob der Kurztitel gemäss der Logik erstellt wurde, die Sie im Add-On programmiert haben.
- Beenden Sie Citavi.
- Ergänzen Sie die Methode OnHostingFormLoaded wie auf dem Bild sichtbar
MainForm mainForm = (MainForm)hostingForm;
mainForm.GetMainCommandbarManager().GetReferenceEditorCommandbar(MainFormReferenceEditorCommandbarId.Menu).GetCommandbarMenu(MainFormReferenceEditorCommandbarMenuId.Tools).AddCommandbarButton("GenerateShortTitle", "Re-build all short titles");
- Überschreiben Sie die Methode OnBeforePerformingCommand wie auf dem Bild sichtbar
protected override void OnBeforePerformingCommand(SwissAcademic.Controls.BeforePerformingCommandEventArgs e)
{
switch (e.Key)
{
case "GenerateShortTitle":
{
e.Handled = true;
var filter = new Filter();
bool handled;
var mainForm = (MainForm)e.Form;
foreach (var reference in mainForm.Project.References.ToList())
{
reference.ShortTitle = filter.GetFilterResult(reference, out handled);
reference.ShortTitleUpdateType = UpdateType.Manual;
}
System.Windows.Forms.MessageBox.Show("Fertig");
}
break;
}
base.OnBeforePerformingCommand(e);
}
- Drücken Sie F5 oder klicken Sie auf Debugging starten.
- Prüfen Sie im Menü Extras, ob der gewünschte Eintrag Generate new short title for all references vorhanden ist. Klicken Sie auf diesen Befehl.
Prüfen Sie, ob für alle vorhandenen Titel ein neuer Kurztitel gemäss der Logik gebildet wurde, die Sie programmiert haben.
- Beenden Sie Citavi.
- Fügen Sie eine neue Klasse hinzu.
- Benennen Sie diese Klasse PersonListApplyRelatedRefererncesAsSelection.cs.
- Klicken Sie auf Hinzufügen.
Fügen Sie den Code hinzu wie auf dem Bild sichtbar
public override AddOnHostingForm HostingForm
{
get { return AddOnHostingForm.PersonList; }
}
protected override void OnHostingFormLoaded(System.Windows.Forms.Form hostingForm)
{
var personList = (PersonList)hostingForm;
var menuEntry = personList.GetCommandbar(PersonListCommandbarId.Menu).GetCommandbarMenu(PersonListCommandbarMenuId.Persons).AddCommandbarButton("ApplyRelatedReferencesAsSelection", "Apply related references as selection");
menuEntry.HasSeparator = true;
menuEntry.Image = SwissAcademic.Citavi.Shell.Properties.Resources.Filter;
base.OnHostingFormLoaded(hostingForm);
}
protected override void OnBeforePerformingCommand(SwissAcademic.Controls.BeforePerformingCommandEventArgs e)
{
switch (e.Key)
{
case "ApplyRelatedReferencesAsSelection":
{
e.Handled = true;
var personList = (PersonList)e.Form;
var references = new List<Reference>();
foreach (var person in personList.GetSelectedPersons())
{
foreach (var reference in person.References)
{
if (!references.Contains(reference))
{
references.Add(reference);
}
}
}
var mainForm = personList.ProjectShell.PrimaryMainForm;
var referenceFilter = new ReferenceFilter(references, "List of persons");
var filters = new List<ReferenceFilter> { referenceFilter };
mainForm.ReferenceEditorFilterSet.Filters.ReplaceBy(filters);
Program.ActivateForm(mainForm);
}
break;
}
base.OnBeforePerformingCommand(e);
}
- Starten Sie Citavi.
- Öffnen Sie Listen>Personen und Instititutionen.
- Prüfen Sie, ob der Befehl Apply related references as selection im Menü Personen vorhanden ist und ob er korrekt funktioniert.