rolf_siebachmey
I'm new here

Icon eines ExecutableToolbarItem neu laden

Hallo zusammen,

Die Methode ExecutableToolbarItem.getIcon(...) gibt ein Icon zurück, welches ich abhängig von bestimmten Bedinungen während der Benutzung des Clients ändern möchte. Ist es möglich, das Icon in diesem Fall neu zu laden?

Die getIcon-Methode schaut dabei in etwa so aus:

public Icon getIcon(final ToolbarContext context) {

   final ServicesBroker servicesBroker = context.requireSpecialist(ServicesBroker.TYPE);
   final MyService myService = servicesBroker.getService(MyService.class);
   if(myService.isActive()) {

   return new ImageIcon(getClass().getResource("/myservice-active.png"));
   }

   return new ImageIcon(getClass().getResource("/myservice-inactive.png"));
}

0 Kudos
4 Replies
mikula
Crownpeak employee

Hallo Rolf,

ich möchte mich nicht zu weit aus dem Fenster lehnen, aber ich nehme ganz stark an, dass es nicht zuverlässig funktionieren wird. Ich denke der Site-Architekt wird Icons cachen, was schlussendlich dazu führen wird, dass bei der Benutzung ein falscher Zustand suggeriert wird. Aber, natürlich kannst du das gern versuchen und uns an deinen Ergebnissen teilhaben lassen.

Viele Grüße

Martin

0 Kudos

Hallo,

Grundsätzlich funktioniert es, dass das Icon neu geladen wird. Dies passiert jedoch nur, wenn eine Aktion im Kontextmenü ausgeführt wird. Danach wird das neue Icon angezeigt. Diese Aktion im Kontextmenü würde ich gerne irgendwie selber triggern.

Konkret ist der Usecase wie folgt.

1. Das ExecutableToolbarItem öffnet bei Klick ein Formular

2. In diesem Formular kann der Redakteur auswählen, ob er die Einstellungen für alle zukünftigen Aktionen übernehmen will oder immer wieder nachfragen soll

3a. Falls die Einstellung greifen soll (ohne nachfragen), soll das active Icon gezeigt werden

3b. Falls die Einstellung greifen soll (mit nachfragen), soll das inactive Icon gezeigt werden

0 Kudos

Hallo Rolf,

genau so ein Verhalten habe ich erwartet. Ich denke nicht, dass man den Refresh sinnvoll forcieren kann. Vielleicht hat aber irgendwer hierzu eine clevere Idee.

Viele Grüße

Martin

0 Kudos

Hi zusammen,

Ich habe mir die Klassendokumentationen angeschaut und ich kann nicht erkennen dass es einen offiziellen Weg gibt um einen Refresh zu bewirken. Ich denke dass dein Anwendungsfall total valide ist und eventuell macht es Sinn eine der Kontextklassen zu erweitern und ein refresh() zu implementieren.

@Rolf Ich würde dich bitten das ganze als Featurerequest einzustellen - das ist unser Weg wie solche Funktionalitäten ihren Weg ins Produkt finden Smiley Happy

Danke sehr!

Grüße,

Hannes

0 Kudos