RCP ActionBar Icon nur aktiv, wenn Selection in bestimmter View

Stelufl

Mitglied
Hi,

ich habe eine Frage, sorry für den blöden Topic Titel, aber es ist etwas schwierig kurz zu formulieren.

Ich habe 2 Views A und B, die das gleiche Icon C und D mit dem gleichen Command enthalten sollen.
Nun soll jedoch das Icon C nur dann enabled sein, wenn in View A selektiert wurde und Icon D nur dann, wenn in B selektiert wurde. Den Handler zu bauen ist kein Problem, nur will ich das ganze möglichst mit nur einem Command realisieren (Denn die Icons implementieren die selbe Funktion).

Derzeit habe ich das so gelöst:
Die zwei Icons verweisen jeweils auf verschiedene Commands (mit selber Klasse), die jeweils einen eigenen Handler besitzen. Das finde ich aber unschön und ist auch so nicht gewollt. Geht es auch mit einem Command und wenn ja, wie?

Auch ein "Nein, geht nicht." ist willkommen (Weil ich nämlich vermute, dass es mit 1 Command nicht geht) ;)
 
Zuletzt bearbeitet:

Stelufl

Mitglied
Ja richtig, löst aber das Problem nicht, überleg mal:

Icon C ist in A, Icon D ist in B.

Wenn der Handler jetzt active When activePartId == C hat und enabled when selection activePartId == C, dann ist diese Expression für beide Views true, wenn die Selektion in C getan wird. Ergo beide Icons werden enabled.

Auch wenn ich zwei Handler habe besteht das Problem.
Ich müsste den Handler irgendwie auf das Icon beziehen.
 
G

Gast2

Gast
He? Versteh ich nicht...
Du musst doch ein ganze normales if mit "oder" verbinden.

Active When (id == c && selektion == d) || (condition2)
 

Stelufl

Mitglied
Hi,

also jetzt weiß ich was Du meinst mit selektion == d.
Du meinst, man kann die selektion auf das ICON D beziehen? Selbst wenn das ginge, dann wäre das der verkehrte Ansatz, denn das Icon soll ja gar nicht erst enabled (=> ausgegraut) sein, wenn in der View nicht etwas selektiert worden ist.

Im Anhang habe ich mal eine Skizze erstellt, die veranschaulicht, wie es im Moment gelöst ist:
C soll nur enabled sein, sprich ausgegraut wenn nicht, wenn eine Selektion in View A auf Element nodeInA getan wurde.

Bei Icon D halt genauso, nur mit der anderen View.

Das Problem aber ist, dass einer der beiden Handler immer true ist undzwar für beide Icons, weil die Handler nicht auf ein Icon typisiert sind.

Ich weiß jedenfalls nicht, ob und wie das geht.


Gruß und danke für die Hilfe
 

Anhänge

  • pic.jpg
    pic.jpg
    29,6 KB · Aufrufe: 27
Zuletzt bearbeitet:
G

Gast2

Gast
Du hast 2 Möglichkeiten...
2 Handler und dann eben enabledWhen benutzen, dann ist immer nur einer sichtbar!!!
1 Handler benutzen und das aktivWhen eben richtig setzen!!!

denk daran deine TableViewer als SelectionProvider zu setzen sonst klappt das gar nicht...
Ich würde dir raten erst einmal einfach anzufangen und einen Handler mit nur einer View und der richtigen Selektion zu aktivieren.
 

Ähnliche Java Themen


Oben