Home Forum Allgemeines Allgemeines zu Nuclos Extension-Programmierung – Toolbar erweitern

Ansicht von 9 Beiträgen - 1 bis 9 (von insgesamt 9)
  • Autor
    Beiträge
  • #7546
    Frank Pavlic
    Teilnehmer

    Hallo 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ß
    Frank

    #7553
    Maik Stüker
    Teilnehmer

    Hallo 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,
    slash

    #7555
    Frank Pavlic
    Teilnehmer

    Hallo 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ß
    Frank

    #7559
    Ramin Goettlich
    Teilnehmer

    Vielleicht macht hier eher ein Workshop Sinn?

    #7560
    Matthias Haake
    Teilnehmer

    Ich 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,
    Matthias

    #7561
    Ramin Goettlich
    Teilnehmer

    Eine serverseitige Extension ja, eine clientseitige Extension technologiebedingt nein. Ein Konzept für (web)clientseitige Extensions existiert zum heutigen Zeitpunkt noch nicht.

    #7562
    Frank Pavlic
    Teilnehmer

    Hallo 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ß
    Frank

    #7580
    Maik Stüker
    Teilnehmer

    Hallo 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ß,
    slash

    #7581
    Frank Pavlic
    Teilnehmer

    Hallo Slash,
    ich danke dir vielmals, das genau müsste es sein. Werde ich dann testen…

    Gruß
    Frank

Ansicht von 9 Beiträgen - 1 bis 9 (von insgesamt 9)