Icons-Fonts

TopLogic unterstützt Symbolschriften, die für Schaltflächen-, Menü- und Objektsymbole verwendet werden können. Um Ihre eigene Symbolschriftart einzubinden, müssen Sie die folgenden Schritte ausführen. Das Modul ext.com.fontawesome bietet die kostenlose Variante der Symbolschrift "FontAwesome" (​https://fontawesome.com/). Dieses Modul dient als detailliertes Beispiel, wie Sie Ihrer Anwendung eine eigene benutzerdefinierte Symbolschrift hinzufügen können.

Fontressourcen der Anwendung zur Verfügung stellen

Legen Sie Ihre Schriftartendateien (*.eot, *.svg, *.ttf, *.woff, *.woff2) in den Webapp-Ordner der Anwendung. So ist beispielsweise die Symbolschrift "FontAwesome" in der Distribution unter /ext.com.fontawesome/webapp/webfonts/... enthalten.

Begleitendes CSS einbinden

Legen Sie die CSS-Datei (*.css) der Schriftart in den Webapp-Ordner der Anwendung. Die CSS-Datei für "FontAwesome" befindet sich als Beispiel unter /ext.com.fontawesome/webapp/style/fontawesome/all.min.css.

Hinweis: Da die CSS-Datei der Schriftart auf die Fontressourcen verweist, stellen Sie sicher, dass beide Dateien (die CSS- und die Fontdateien) an einem Ort gespeichert sind, an dem die internen Verweise im CSS gültig sind. Z.B. "FontAwesome" hat die folgende Stilregel:

@font-face {
  font-family: 'Font Awesome 5 Free';
  font-style: normal;
  font-weight: 900;
  src: url("../webfonts/fa-solid-900.eot");
}

Daher müssen die Fontressourcen (z.B. fa-solid-900.eot) in einem Verzeichnis mit dem Namen ../webfonts relativ zum Style-Ordner der Anwendung (webapp/style) vorhanden sein. Alle CSS werden zur Laufzeit in eine einzige Ressource eingebunden, die dem Client über die URL https://your.server/your-app/style/top-logic.css angeboten wird, unabhängig davon, wo die tatsächlichen CSS-Dateien, die dem Theme hinzugefügt wurden, in der Anwendung gespeichert sind. Daher müssen die Referenzen im CSS relativ zu dieser URL sein.

CSS in das Standard-Theme einfügen

Fügen Sie einen Konfigurationseintrag hinzu, der die CSS-Datei der Schriftart in das Standardtheme core einfügt (oder Ihr benutzerdefiniertes Design, wenn Sie die Schriftart nur in einem einzigen Design verwenden möchten).

Legen sie hierfür in ihrem Projekt ein Verzeichnis src/main/webapp/WEB-INF/themes/core an und erstellen Sie darin eine Datei theme.xml mit folgendem Inhalt:

<theme>
    <styles>
        <style name="/style/fontawesome/all.css"/>
    </styles>
</theme>

Hinweis: Die CSS-Datei (hier das CSS des Fontawesome-Iconfonts) wird mit einem Namen in Bezug auf den Stammordner der Webapplikationsressource referenziert.

Verwendung von CSS-Symbolreferenzen

Eine Symbolschrift kühlt Symbole mit CSS-Klassen, die zu einem Inline-HTML-Element hinzugefügt wurden. Z.B. "FontAwesome" verweist auf das Symbol "Ambulanz" mit den CSS-Klassen <i class="fas fa-ambulance"></i> (siehe ​https://fontawesome.com/icons/ambulance?style=solid).

In TopLogic können Sie in allen Konfigurationseigenschaften vom Typ ThemeImage mit dem Präfix css: mit den CSS-Klassen, die durch Ihre angehängte Symbolschrift definiert sind, auf Symbolfontsymbole verweisen. Sie können z.B. das Symbol "Krankenwagen" von "FontAwesome" mit dem Symbolbezug "css:fas fa-ambulance" referenzieren.

Beispiele

Symbolreferenzen im Layout

Sie können eine Schaltfläche mit einer solchen Symbolschriftreferenz definieren (z.B. /com.top_logic.demo/webapp/WEB-INF/layouts/demo/table/tree_grid.xml):

<button id="..."
  class="..."
  image="css:fas fa-globe"
  resourceKey="..."
/>

Symbolreferenzen im Modell

Icon-Fontreferenzen können verwendet werden, um Icons zu solchen Modellelementen zu kommentieren (z.B. /com.top_logic.demo/webapp/WEB-INF/model/DemoTypes.model.xml):

<interface name="DemoTypes.X">
  <annotations>
    <instance-presentation icon="css:fas fa-handshake demo-blue"/>
  </annotations>
  ...
</interface>

Im obigen Beispiel sehen Sie, dass Sie unsere eigenen benutzerdefinierten CSS-Klassen zu denjenigen hinzufügen können, die durch Ihre Symbolschrift definiert sind, um die Anzeige des Symbols an dieser konkreten Stelle anzupassen. Im obigen Beispiel färbt die CSS-Klasse demo-blue das Symbol blau.