Skip to content

Citavi Tutorial (Teil 2)

Daniel Lutz edited this page Aug 19, 2020 · 1 revision

using-Statements einfügen und von der CitaviAddOn-Klasse erben

  1. Fügen Sie using-Statements für SwissAcademic.Citavi und SwissAcademic.Citavi.Shell hinzu.
  2. Lassen Sie die Klasse ShortTitleFilterDemo von CitaviAddOn erben.

HostingForm festlegen

  1. Überschreiben Sie die Eigenschaft HostingForm und geben Sie den Enum-Wert AddOnHostingForm.MainForm zurück wie auf dem Bild sichtbar.

Klasse hinzufügen

  1. Fügen Sie Ihrem Projekt eine Klasse hinzu.

Klasse benennen und hinzufügen

  1. Benenennen Sie die Klasse Filter.cs.
  2. Klicken Sie auf Hinzufügen.

using-Statement hinzufügen, von IReferenceStringPropertyFilter erben

  1. Fügen Sie ein using-Statement für SwissAcademic.Citavi hinzu.
  2. Lassen Sie die Klasse Filter das Interface IReferenceStringPropertyFilter implementieren.

Interface implementieren

  1. Klicken Sie mit der rechten Maustaste auf den Interface-Text und wählen Sie aus dem Kontextmenü den Befehl Interface implementieren.

GetFilterResult implementieren

  1. Ü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)) + "...)";
}

Zu ShortTitleDemo.cs wechseln

  1. Wechseln Sie zur Registerkarte ShortTitleFilterDemo.

OnHostingFormLoaded überschreiben

  1. Ü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);
}

Debugging starten

  1. Drücken Sie F5 oder klicken Sie auf Debugging starten.

Durchsuchen

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.

  1. Klicken Sie auf Auswählen.

Citavi Benutzerdateien-Ordner auswählen

  1. Wählen Sie den bisher verwendeten Ordner für Benutzerdateien (in der Regel Eigene Dateien\Citavi 3).
  2. Klicken Sie auf OK.

OK

  1. Klicken Sie auf OK.

Ein Projekt öffnen

  1. Öffnen Sie in Citavi ein beliebiges Projekt.

Einen neuen Titel anlegen

  1. Legen Sie einen neuen Titel an.

Einen beliebigen Dokumententyp wählen

  1. Wählen Sie einen beliebigen Dokumententyp und klicken Sie auf OK.

Titel eingeben, in das nächste Feld klicken und die Kurztitel-Bildung kontrollieren

  1. Geben Sie im Feld Titel einen beliebigen Text ein.
  2. Wechseln in das Feld Untertitel.
  3. Prüfen Sie, ob der Kurztitel gemäss der Logik erstellt wurde, die Sie im Add-On programmiert haben.

Citavi beenden

  1. Beenden Sie Citavi.

OnHostingFormLoaded erweitern

  1. 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");

OnBeforePerformingCommand überschreiben

  1. Ü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);
}

Debugging starten und Projekt öffnen

  1. Drücken Sie F5 oder klicken Sie auf Debugging starten.

Neuen Befehl im Extras-Menü aufrufen

  1. 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.

Alle bestehenden Kurztitel wurden mit unserem Filter neu erstellt

Prüfen Sie, ob für alle vorhandenen Titel ein neuer Kurztitel gemäss der Logik gebildet wurde, die Sie programmiert haben.

Citavi beenden

  1. Beenden Sie Citavi.

Klasse hinzufügen

  1. Fügen Sie eine neue Klasse hinzu.

Klasse benennen

  1. Benennen Sie diese Klasse PersonListApplyRelatedRefererncesAsSelection.cs.
  2. Klicken Sie auf Hinzufügen.

Code einfü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);
}

Test

  1. Starten Sie Citavi.
  2. Öffnen Sie Listen>Personen und Instititutionen.
  3. Prüfen Sie, ob der Befehl Apply related references as selection im Menü Personen vorhanden ist und ob er korrekt funktioniert.

zurück zum Inhaltsverzeichnis