Ich habe ein TopComponent die in einer Init-Methode welche aus dem Konstruktor aufgerufen wird mittels getActionMap().put() Actions in einer Toolbar hinterlegt. Ich habe z.B. in der Toolbar eine "Edit" Action hinterlegt, die je nach geöffneter TopComponent etwas anderes macht.
Nun habe ich 2 Probleme:
1.) Wenn ich die Applikation öffne sind die Toolbar-Buttons bereits "enabled" obwohl noch gar keine Action mit getActionMap().put(...) hinterlegt ist. Die Wirkung ist dann folgende: Wenn man den Button drückt in der Toolbar wird er einfach grau. Wie kann ich die von Anfang an "ausgeschaltet" machen?
2.) Wenn ich eine TopComponent öffne, mache ich wie gesagt quasi eine "Registrierung" der Implementation mittels getActionMap().put(...) und füge diese Edit-Action hinzu:
- Code: Alles auswählen
editAction = new AbstractAction()
{
@Override
public void actionPerformed(ActionEvent e)
{
editAction(e);
}
};
getActionMap().put(EditAction.get(EditAction.class).getActionMapKey(), editAction);
Jetzt kommt es aber vor, dass ich die Action aufgrund von diversen Bedingungen in der TopComponent ausschalten will. Das klappt nicht: Ich habe wieder einen ähnlichen Effekt wie beim starten. Der Button in der Toolbar bleibt aktiviert und wenn man ihn klickt wird er einfach grau und es passiert nichts. Das wär ja okay, aber es wäre schöner, wenn sich der Button quasi "grau" machen würde, wenn ich die Action disable.
Wenn man nämlich die TopComponent wieder zumacht, dann macht er den Button schön grau, damit man ihn nicht mehr klicken kann. Genau dieses Verhalten hätte ich gerne. Ich gehe mal davon aus, dass er ja nicht "richen" kann, wenn ich eine Action disable (ich habe übrigens beides versucht... editAction.setEnabled(false); und getActionMap.remove(editAction); ... hat beides nichts gebracht bezgl. ausgrauen des Toolbar-Buttons).
Aber wen und wie muss ich informieren?
Für jeden Hinweis bin ich dankbar!
Viele Grüsse
Mike

