# Actions bzw. Actionsets (de)aktivieren



## Hoon2006 (26. Aug 2008)

Hallo,
ich möchte nach einem Perspektivenwechsel in meiner Eclipse RCP Applikation einige Actions oder sogar ganze ActionSets de/aktivieren bzw un/sichtbar machen. In der Plugin XML kann ja nur angeben, ob die ActionSets initial angezeigt werden. Wie kann man auf Actions oder besser noch ActionSets setEnabled(true/false) oder Ähnliches aufrufen?
Google spuckt da leider nicht viel aus...

Vielen Dank schon mal!


----------



## Wildcard (26. Aug 2008)

in org.eclipse.ui.perspectiveExtensions fügst du ein ActionSet hinzu, oder eben nicht.


----------



## Hoon2006 (26. Aug 2008)

WOW Danke! Nach denau so einer schnellen und simplen Lösung hab ich gesucht. Eigentlich nimmt Eclipse RCP einem fast alles ab, man muss nur wissen wozu die ganzen Extensions da sind. Gibts da irgendwo ne nette Übersicht über alle Extensions?

Vielen Dank


----------



## Hoon2006 (26. Aug 2008)

Jetzt kannst du mir bestimmt noch sagen, wie ich das selbe mit einer IAction mache, wie zum Beispiel die SAVE Action, welche ich ja programmatisch im ApplicationActionBarAdvisor angelegt habe.


----------



## Guest (26. Aug 2008)

...ich meine natürlich IWorkbenchAction


----------



## Wildcard (26. Aug 2008)

Du willst die Save Action je nach _Perspektive_ an, oder abschalten? Macht das Sinn?  ???:L


----------



## Hoon2006 (27. Aug 2008)

Bei nem normalen Eclipse Plugin vielleicht nicht, aber meiner Applikation schon. Es geht dabei um ein Applikation bei der man sich 'ne Carrera-Bahn zusammenklicken kann und dann darauf fahren kann. D.h. ich habe eine DesignerPerspective und eine RacePerspective. Daher macht das schon Sinn...

Habe das Problem jetzt mehr oder eher weniger schön gelöst indem ich im ApplicationActionBarAdvisor nen IPerspectiveListener anmelde und dann folgendes mache:


```
@Override
    public void perspectiveActivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) {
        if(perspective.getId().equals(RacePerspective.ID)) {
            saveTrackAction.setEnabled(false);
            newTrackAction.setEnabled(false);
            trackMenu.setVisible(false);
        } else if(perspective.getId().equals(EditorPerspective.ID)) {
            saveTrackAction.setEnabled(true);
            newTrackAction.setEnabled(true);
            trackMenu.setVisible(true);
        }
    }
```

Funktioniert


----------



## Wildcard (27. Aug 2008)

Aber die Perspective ist doch Schall und Rauch und kann vom Anwender beliebig verändert werden (inkl. Actions).
Warum hast du nicht zwei verschiedene Editoren? Der eine erlaubt save, der andere nicht.


----------



## Hoon2006 (27. Aug 2008)

Gutes Argument! Stimmt so wäre es eleganter... Danke


----------

