Wiki-Quellcode von IPluginClientDashboard


Zeige letzte Bearbeiter
1 {{content/}}
2
3 == Schnittstelle IPluginClientDashboard ==
4
5 {{figure image="plugin_client_dashboard_demo.png"}}
6 Das Ergebnis des Demo-Client-Dashboard-Plugins. Zeigt ein einfaches benutzerdefiniertes Dashboard mit einem benutzerdefinierten Feldsatz.
7 {{/figure}}
8
9 Die Schnittstelle für Client-Dashboard-Plugins. Mit dieser Art von Plugin können Sie dem System eine benutzerdefinierte Dashboard-Seite hinzufügen. Es ist möglich, mehrere Dashboard-Plugins gleichzeitig zu installieren. Für jede {{jpath path="de.xima.fc.entities.Rolle"/}} kann ein Administrator entweder das Standard-Dashboard oder eines der installierten Plugin-Dashboards auswählen. Jeder Benutzer mit dieser Rolle sieht dann dieses Dashboard.
10
11 Ein Client-Dashboard-Plugin besteht aus einer XHTML-Seite und einer verwalteten Bean für diese XHTML-Seite, siehe {{jpath path="de.xima.fc.plugin.interfaces.backend.IPluginClientDashboardCustomGUIBean"/}} für weitere Informationen. Wenn ein Plugin-Dashboard eingestellt ist, wird die XHTML-Seite anstelle des normalen Dashboards angezeigt. Bitte beachten Sie, dass Sie den Layout-Rahmen (die Menüleiste links und die obere Leiste) nicht ändern können, sondern nur den Hauptinhalt der Dashboard-Seite.
12
13 == Schnittstelle IPluginGenericCustomGUI ==
14
15 Diese Schnittstelle wird automatisch von einem Client-Dashboard-Plugin implementiert und enthält die folgenden zusätzlichen Methoden.
16
17 === Methodensignaturen ===
18
19 {{panel title="{{code language='java'~}~}Iterable<Class> getUnmanagedBeans(){{/code~}~}" triggerable="true" fullwidth="true" styleClass="xm-code-panel"}}
20 (((
21 Dies muss eine Liste der unterstützenden Bean-Klassen zurückgeben, die die Benutzeroberfläche steuern und vom //getXhtmlView// benötigt werden. Eine neue Instanz der Bean wird automatisch erstellt, wenn die Ansicht geöffnet wird. Stellen Sie sicher, dass jede Bean einen No-Argument-Konstruktor hat, sonst kann sie nicht instanziiert werden.
22 )))
23
24 {{html}}<br>{{/html}}
25
26 (((
27 Bitte beachten Sie, dass die Beans **unmanaged** sind - die für managed Beans spezifische Funktionalität ist nicht verfügbar. Das bedeutet zum Beispiel, dass Annotationen wie {{jpath path="javax.annotation.PostConstruct"}} und {{jpath path="javax.faces.bean.ManagedProperty"/}}s nicht unterstützt werden und nicht funktionieren werden:
28
29 * Anstelle von //PostConstruct// können Sie //IPluginGenericCustomGUIBean.initialize(de.xima.fc.interfaces.plugin.lifecycle.IPluginInitializeBeanData)// verwenden.
30 * Anstelle von //ManagedProperty// können Sie auf benötigte Beans über den aktuellen FacesContext zugreifen usw.
31 )))
32
33 (((
34 Jede Bean sollte mit {{jpath path="javax.faces.bean.ManagedBean"/}} annotiert werden und einen //ManagedBean.name()// angeben. Wenn diese Annotation nicht vorhanden ist oder kein Name angegeben wird, wird der Name standardmäßig auf den einfachen Namen der Bean-Klasse gesetzt.
35 )))
36
37 {{html}}<br>{{/html}}
38
39 (((
40 Außerdem muss jede Bean mit einem der folgenden Scopes annotiert werden: {{jpath path="javax.faces.bean.RequestScoped"/}}, {{jpath path="javax.faces.bean.ViewScoped"/}}, {{jpath path="javax.faces.bean.SessionScoped"/}} oder {{jpath path="javax.faces.bean.ApplicationScoped"/}}. Beachten Sie, dass es vom Typ des Plugins abhängt, welche Scopes tatsächlich unterstützt werden. Falls Sie keinen Scope angeben, wird automatisch ein passender Scope ermittelt.
41 )))
42
43 {{html}}<br>{{/html}}
44
45 (((
46 Bestimmte Funktionen von Managed Beans werden je nach Art des Plugins teilweise unterstützt, können aber auch anders funktionieren. Dies beinhaltet, ist aber nicht beschränkt auf:
47
48 * Der genaue Zeitpunkt, zu dem {{jpath path="javax.annotation.PostConstruct"}} und {{jpath path="javax.annotation.PreDestroy"}} aufgerufen werden, kann sich unterscheiden.
49 * Ein {{jpath path="javax.faces.bean.ManagedProperty"/}} arbeitet möglicherweise nicht mit allen Werten, die von der Java Beans-Spezifikation erlaubt sind, und führt möglicherweise keine Prüfungen wie die Prüfung auf zirkuläre Abhängigkeiten durch. Außerdem werden keine neuen Beans erstellt, wenn diese Beans noch nicht als Teil der aktuellen Seite erstellt worden sind.
50 )))
51
52 {{html}}<br>{{/html}}
53
54 ; Rückgabewert
55 : Ein Iterable über die nicht verwalteten Bean-Klassen, die von der Ansicht benötigt werden
56 {{/panel}}
57
58 {{panel title="{{code language='java'~}~}URL getXhtmlView(){{/code~}~}" triggerable="true" fullwidth="true" styleClass="xm-code-panel"}}
59 Diese Methode muss den Pfad zu der XHTML-Seite für die benutzerdefinierte Benutzeroberfläche zurückgeben. Normalerweise ist die XHTML-Datei Teil der JAR-Ressourcen des Plugins. In diesem Fall sollten Sie eine URL zu einer JAR-Datei-Ressource (//jar:file:/...//) zurückgeben, etwa so:
60
61 {{code language="java"}}
62 @Override
63 public URL getXhtmlView() {
64 return getClass().getResource("/path/to/view.xhtml");
65 }
66 {{/code}}
67
68 {{/panel}}
69
70 == Schnittstelle IPluginClientDashboardCustomGUIBean ==
71
72 Die Schnittstelle für die unmanaged Bean, die vom Client-Dashboard verwendet wird. Sie bietet einige allgemeine Funktionen. Eine eigene Bean-Klasse sollte die abstrakte Klasse {{jpath path="de.xima.fc.plugins.DemoClientDashboard"/}} erweitern, sie implementiert die meisten der benötigten Methoden und reduziert den Overhead beim Erstellen neuer Beans.