Home › Forum › Allgemeines › Allgemeines zu Nuclos › Extension-Programmierung – Toolbar erweitern
- Dieses Thema hat 8 Antworten und 4 Teilnehmer, und wurde zuletzt aktualisiert vor 9 Jahren, 8 Monaten von
Frank Pavlic.
-
AutorBeiträge
-
31 März 2014 um 16:32 Uhr #7546
Frank Pavlic
TeilnehmerHallo zusammen,
ich befasse mich gerade mit Extension-Programmierung und steige fürs Erste auch soweit durch. Allerdings hänge ich gerade bei Erweitern der Toolbar für die Detailansicht.
Ist es überhaupt möglich , die Toolbar der Detailansicht um weitere Buttons und damit Aktionen zu erweitern?
Falls es geht, welche Klassen/Interfaces muss ich hier nutzen bzw. erweitern?Bin dankbar für jeden Tipp/Code-Beispiel/Antwort…
Gruß
Frank3 April 2014 um 13:39 Uhr #7553Maik Stüker
TeilnehmerHallo Frank,
da musst du über den CollectController gehen und dich am besten in die Methode setupDetailsToolBar einklinken.
Beispiel
@Override
protected void setupDetailsToolBar() {
super.setupDetailsToolBar();
getDetailsPanel().addToolBarComponent(btnOpenLevel);
}Viele Grüße,
slash3 April 2014 um 14:43 Uhr #7555Frank Pavlic
TeilnehmerHallo slash,
die abstrakte Klasse habe ich gefunden, mir ist nur noch nicht ganz klar, wie ich mich mit Hilfe einer extension dort einklinken kann. Ich finde nirgends eine Beans-Definition, die ich evtl. überschreiben könnte bzw. CollectController mit meiner Klasse belegen kann. Ich sehe im Quellcode, dass alle *CollectController-Klassen sich von der CollectController ableiten. Allerdings sehe ich gerade mit meinem Tunnelblick nicht, wie ich mich nun einklinken kann, ohne dass ich im nuclo-client-Code editieren muss. Kannst Du mir da noch einen Tipp geben?
Danke dir im Voraus und auch für deine Antwort.Gruß
Frank3 April 2014 um 19:15 Uhr #7559Ramin Goettlich
TeilnehmerVielleicht macht hier eher ein Workshop Sinn?
4 April 2014 um 11:37 Uhr #7560Matthias Haake
TeilnehmerIch hätte dazu auch eine kurze Frage: ist so eine Erweiterung automatisch auch im Webclient verfügbar und funktioniert dort identisch? Oder müsste man dafür weitere Anpassungen machen?
Vielen Dank für die Information und beste Grüße,
Matthias4 April 2014 um 11:39 Uhr #7561Ramin Goettlich
TeilnehmerEine serverseitige Extension ja, eine clientseitige Extension technologiebedingt nein. Ein Konzept für (web)clientseitige Extensions existiert zum heutigen Zeitpunkt noch nicht.
4 April 2014 um 17:59 Uhr #7562Frank Pavlic
TeilnehmerHallo nuclosian,
Workshop macht für mich nur Sinn, wenn ich ganz am Anfang stehe und auch die Zeit dazu habe. Allerdings habe ich ja eine konkrete Analyse bereits durchgeführt und hänge letztendlich an einem kleinen Puzzleteil, was mit ein paar Zeilen Beispiel sich sofort auflösen würde. Ein Hinweis auf Workshop steigert nicht gerade die Motivation an der Nutzung des Forums, wo ja eigentlich ein reger Austausch an Wissen stattfinden sollte. Und Extensions gehören nun mal zu nuclos dazu genauso wie die Controller-Überladung, usw…Dann gehe ich mal weitersuchen, bzw. folge dem ersten Hinweis nach.
Gruß
Frank9 April 2014 um 17:45 Uhr #7580Maik Stüker
TeilnehmerHallo Frank,
hier noch ein kurzer Tipp, hoffe das hilft dir weiter…
In unserer Test-Extension (https://bitbucket.org/nuclos/test-extension)
findet man unter test-extension / test-extension-client / src / main / resources /
die Datei „nuclos-app.properties_not_in_use“.
Das „_not_in_use“ entfernen und die auskommentierte Zeile
#collectcontrollerfactory=org.nuclos.client.common.NuclosCollectControllerFactory
einkommentieren und deine Implementierung der Factory eintragen.Noch ein Hinweis: Aus historischen Gründen unterscheidet der Client zwischen Entitäten mit Statusmodell (In der Factory newGenericObjectCollectController) und Entitäten ohne Statusmodell (In der Factory newMasterDataCollectController).
Entsprechend muss dein eigener CollectController von der GenericObject- oder MasterData Variante erben.Hier mal ein Beispiel für einen GenericObjectCollectController:
// STRUID aus T_MD_ENTITY der Entität Datenbedarf
private static final org.nuclos.common.UID BO_Datenbedarf = new org.nuclos.common.UID("c3poc3poc3poc3poc3poc3po");@Override
public GenericObjectCollectController newGenericObjectCollectController(UID module, MainFrameTab tabIfAny, String customUsage) {
final GenericObjectCollectController result;
if (module.equals(BO_Datenbedarf)) {
result = new DatenbedarfCollectController(module, false, tabIfAny, customUsage);
final CollectableEntityProvider cep = CollectableEOEntityClientProvider.getInstance();
final ISearchStrategy ss =
new GenericObjectViaEntityObjectSearchStrategy((CollectableEOEntity) cep.getCollectableEntity(module));
result.setSearchStrategy(ss);
ss.setCollectController(result);
ss.setCompleteCollectablesStrategy(new CompleteGenericObjectsStrategy());
result.init();
}
else {
result = super.newGenericObjectCollectController(module, tabIfAny, customUsage);
}
return result;
}
Jetzt ist der Tipp doch etwas länger geworden 😉
Gruß,
slash9 April 2014 um 18:56 Uhr #7581Frank Pavlic
TeilnehmerHallo Slash,
ich danke dir vielmals, das genau müsste es sein. Werde ich dann testen…Gruß
Frank -
AutorBeiträge