Um die Applikation mit Swing zu starten, betrachten wir das
Modul org.jowidgets.helloworld.starter.swing
und dort zunächst das folgende pom.xml.
1 <project 2 xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 5 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 6 <modelVersion>4.0.0</modelVersion> 7 8 <artifactId>org.jowidgets.helloworld.starter.swing</artifactId> 9 10 <parent> 11 <groupId>org.jowidgets.helloworld</groupId> 12 <artifactId>org.jowidgets.helloworld.parent</artifactId> 13 <version>0.0.1-SNAPSHOT</version> 14 <relativePath>../parent/pom.xml</relativePath> 15 </parent> 16 17 <dependencies> 18 19 <!-- The ui technology independend hello world module --> 20 <dependency> 21 <groupId>org.jowidgets.helloworld</groupId> 22 <artifactId>org.jowidgets.helloworld.common</artifactId> 23 <version>0.0.1-SNAPSHOT</version> 24 </dependency> 25 26 <!-- The default implementation of the jowidgets api --> 27 <dependency> 28 <groupId>org.jowidgets</groupId> 29 <artifactId>org.jowidgets.impl</artifactId> 30 <version>${jowidgets.version}</version> 31 </dependency> 32 33 <!-- The Swing implementation of the jowidgets spi --> 34 <dependency> 35 <groupId>org.jowidgets</groupId> 36 <artifactId>org.jowidgets.spi.impl.swing</artifactId> 37 <version>${jowidgets.version}</version> 38 </dependency> 39 40 </dependencies> 41 42 </project>
Ab Zeile 20 wird das common Modul der HelloWorld Applikation hinzugefügt. Ab Zeile 27 folgt die Defaultimplementierung der jowidgtes API und ab Zeile 34 wird die SPI Implementierung für Swing hinzugefügt.
Dadurch ergeben sich die folgenden (jowidgets internen) transienten Modulabhängigkeiten:
Gemeinsamer Code der von allen SPI Implementierungen genutzt wird.
Die Swing SPI Implementierung.
Die Swing SPI Implementierung als ServiceLoader Plugin
Die Swing SPI Implementierung hat zudem eine externe Abhängigkeit auf MigLayout für Swing.
Die Klasse HelloWorldStarterSwing
ist für das
Starten der Applikation zuständig.
1 package org.jowidgets.helloworld.starter.swing;
2
3 import javax.swing.UIManager;
4
5 import org.jowidgets.api.toolkit.Toolkit;
6 import org.jowidgets.helloworld.common.HelloWorldApplication;
7
8 public final class HelloWorldStarterSwing {
9
10 private HelloWorldStarterSwing() {}
11
12 public static void main(final String[] args) throws Exception {
13 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
14 System.setProperty("apple.laf.useScreenMenuBar", "true");
15 Toolkit.getApplicationRunner().run(new HelloWorldApplication());
16 System.exit(0);
17 }
18 }
In Zeile 13 wird das System System Look and Feel für Swing
gesetzt, Zeile 14 enthält eine iOS spezifische Property um Menüs
Apple typisch anzuzeigen. Um die
HelloWorldApplication
, welche
IApplication
implementiert, zu starten, wird
ein IApplicationRunner benötigt. Dieser kann vom
Jowidgets Toolkit
geholt werden. In Zeile 15 wird so die Applikation gestartet.
Der Aufruf blockiert, bis die IApplication Implementierung auf
dem übergebenen IApplicationLifecycle
Object
die Methode finish()
aufruft. Anschließend
wird die VM beendet.
Die folgende Abbildung zeigt das Hello World Fenster für die Swing SPI Implementierung: