public class MyDefaultPartnerUI implements PartnerUI {
// Use default implementation
}
Konfigurations- und Erweiterungsmöglichkeiten
Modul partner-select-ui
Das Modul partner-select-ui
stellt konfigurierbare Dialoge bereit, mit denen ein Partner ausgewählt oder angelegt werden kann. Die Auswahl oder die Erfassung eines Versicherungsnehmers sind beispielhafte Einsatzmöglichkeiten.
Zur Anzeige und Bearbeitung eines Partners sollte die UI eines Partnersystems (z.B. IBP) verwendet werden, oder alternativ das Modul partner-view-ui.
Anzeigen eines Standard-Dialogs zur Suche eines Partners
Es wird eine leere Implementierung von PartnerUI
benötigt. Auf dieser kann dann einfach eine der beiden showSelectPartnerDialog()
Methoden aufgerufen werden.
defaultPartnerUI.showSelectPartnerDialog("Partner Auswahl", new DefaultPartnerCache(partnerRepository),
consumer,
config);
Konfiguration des Standard-Dialogs zur Suche eines Partners
Um den Dialog zur Suche eines Partners zu konfigurieren, kann über ein EnumSet
eine Kombination an Enums
aus PartnerDialogConfig
an de.faktorzehn.partnerinterface.ui.PartnerUI.showSelectPartnerDialog(String, PartnerCache, Consumer<Partner>, Function<Partner, MessageList>, PartnerDialogConfig)
übergeben werden.
Konfiguration |
Suche nach |
Suche nach |
Erstellung von |
Erstellung von |
|
ja |
nein |
nein |
nein |
|
ja |
nein |
nein |
ja |
|
nein |
ja |
nein |
nein |
|
nein |
ja |
ja |
nein |
|
ja |
ja |
nein |
nein |
|
ja |
ja |
ja |
ja |
Customizing des Dialoges zur Suche eines Partners
Um den Dialog zur Suche eines Partners zu verändern, genügt es de.faktorzehn.partnerinterface.ui.PartnerUI.showSelectPartnerDialog(String, PartnerCache, Consumer<Partner>, Function<Partner, MessageList>, PartnerDialogConfig)
in der Implementierung von PartnerUI
zu überschreiben und eine eigene Implementierung von SearchPartnerLayoutConfig
und/oder CreatePartnerLayoutConfig
bei der Erstellung des SelectPartnerDialog
zu übergeben. Hierfür können natürlich auch Ableitungen der Standardimplementierungen DefaultPartnerSearchConfig
und DefaultPartnerTableRowPmo
verwendet werden.
Damit auch das korrekte PMO für die Spalten der Tabelle verwendet wird, muss der Rückgabewert von de.faktorzehn.partnerinterface.ui.DefaultPartnerSearchConfig.createSearchResultRowPmo(Partner) auf die konkrete Implementierung gesetzt sein!
|
Konfiguration der Suche
Die Suche kann über das Interface SearchPartnerLayoutConfig
im Wesentlichen in zwei Punkten verändert werden:
-
Die Eingabe der Suchparameter
-
Die Anzeige der Ergebnisse in der Tabelle
Das Interface SearchPartnerLayoutConfig
bietet für diese beiden Aspekte Methoden an. Die Methode createSearchParameterPmo(Supplier<PartnerSearchParameters>, PartnerRepository)
erzeugt das PMO für die Suchparameter, die Methode createSearchResultRowPmo(Partner)
wird für jeden gefundenen Partner aufgerufen und definiert die Spalten in der Tabelle und die default
Methode createSearchParameters()
, die standardmäßig ein neues Objekt vom Typ PartnerSearchParameters
zurückgibt.
Annotationen werden nicht vererbt! Daher müssen in einer Ableitung von DefaultPartnerTableRowPmo die Annotationen auf den überschriebenen Methoden wiederholt werden, wenn diese weiterhin gewünscht sind!
|
Die Labels bzw. Spaltennamen der Tabelle werden zur Übersetzung aus Property Dateien geladen. Wenn eine Subklasse verwendet wird, müssen entsprechend neue Property Dateien mit dem Namen der Subklasse erstellt werden. |
Hier ein Beispiel in dem:
-
in der Spalte zur Partnernummer ein Prefix C hinzugefügt wird
-
die beiden Spalten Geschlecht und Geburtsdatum ausgeblendet werden
-
zu den Suchergebnissen noch "Custom Actions" hinzugefügt werden
-
und das Label für die Spalte zur Partnernummer verändert wird
public class MyCustomizedPartnerUI implements PartnerUI {
@Override
public OkCancelDialog showSelectPartnerDialog(String caption,
PartnerCache cache,
Consumer<Partner> showPartner,
Function<Partner, MessageList> partnerValidator,
EnumSet<PartnerDialogConfig> config) {
return new SelectPartnerDialog(new MyCustomizedPartnerSearchConfig(), new DefaultCreatePartnerLayoutConfig(),
cache,
showPartner, p -> MessageConverter.convert(partnerValidator.apply(p)),
config).open();
}
}
public class MyCustomizedPartnerSearchConfig extends DefaultPartnerSearchConfig {
@Override
public MyCustomizedPartnerTableRowPmo createSearchResultRowPmo(Partner partner) {
return new MyCustomizedPartnerTableRowPmo(partner);
}
}
public class MyCustomizedPartnerTableRowPmo extends DefaultPartnerTableRowPmo {
public MyCustomizedPartnerTableRowPmo(Partner partner) {
super(partner);
}
@UITableColumn(flexGrow = 1)
@UILabel(position = 10)
@Override
public String getNumber() {
return "C" + super.getNumber();
}
@Override
public String getDateOfBirth() {
return "";
}
@Override
public String getGender() {
return "";
}
@UITableColumn(flexGrow = 0)
@UISearchResultAction
public List<MenuItemDefinition> getActions() {
return Arrays.asList(new MenuItemDefinition("Show Partner Name", null,
() -> Notification.show(getPartnerName()), "show-partner-name"));
}
}
... MyCustomizedPartnerTableRowPmo_number_label = # ...
Anpassung der Partnerneuanlage
Zum Erstellen eines Partners im Auswahldialog bietet das Interface CreatePartnerLayoutConfig
entsprechende Methoden für natürliche und juristische Personen. Die Methoden geben jeweils ein PMO zurück das wiederum mit @UINestedComponent
weitere PMOs enthält. Die Klassen CreateNaturalPersonPmo
(natürliche Person) und CreateLegalEntityPmo
(juristische Person) können als Basis verwendet werden.
Anzeigen eines Standard-Dialogs zur Suche eines Vermittlers
Es wird eine leere Implementierung von BrokerUI
benötigt. Auf diese kann dann einfach die Methode showSelectBrokerDialog()
aufgerufen werden.
public class MyDefaultBrokerUI implements BrokerUI {
// Use default implementation
}
brokerUI.showSelectBrokerDialog("Vermittlerauswahl", brokerRepository, Consumers.nopConsumer(),
brokerValidator)
Customizing des Dialoges zur Suche eines Vermittlers
Das Customizing des Dialogs zur Suche eines Vermittlers funktioniert analog zum Customizing des Dialogs für Partner mit DefaultBrokerSearchConfig
.