Alternative zu "ActionFactory.ABOUT.create()"

z-mon

Mitglied
Hallo zusammen,

wie die RCP Demos zeigen, ist das Einsetzen der About Action nicht so schwer. Hierzu muss lediglich in der "makeActions()" Funktion der "ApplicationActionBarAdvisor" Datei "aboutAction = ActionFactory.ABOUT.create(window);" mit der entsprechenden registrierung hinzugefügt werden.

Nun erstelle ich das Menü aber nicht über die "ApplicationActionBarAdvisor" Datei, sondern mit Hilfe der Extensions in der Manifest Datei. Hierzu wurd ein entsprechender Command angelegt indem letztendlich die gleiche Funktion ausgeführt werden soll wie die in der "makeActions()" Funktion.

Ich erstelle dazu also eine neue Klasse "About" und lasse diese durch den "AbstractHandler" erweitern. In der Methode "execute" muss also die AboutAction ausgeführt werden.

Kennt jemand dazu eine Lösung?
 
Hallo,

versuchs mal damit:
plugin.xml:
XML:
...
<extension point="org.eclipse.ui.commands">
       ...
        <command id="de.tutorials.rcp.training.openAboutCmd" name="OpenAbout" />
    </extension>

<extension point="org.eclipse.ui.menus">
        <menuContribution 
                    locationURI="menu:org.eclipse.ui.main.menu?after=file">
            <menu 
                id="de.tutorials.rcp.training.testMenu" 
                label="TestMenu">
                
                <command 
                    commandId="de.tutorials.rcp.training.openAboutCmd"
                    id="openAboutItem" 
                    mnemonic="openAbout" 
                    style="push">
                </command>

            </menu>
        </menuContribution>
    </extension>

    <extension point="org.eclipse.ui.handlers">
        <handler commandId="de.tutorials.rcp.training.openAboutCmd"
                 class="de.tutorials.rcp.training.commands.OpenAboutCommandHandler" />
    </extension>

Java:
package de.tutorials.rcp.training.commands;

import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;

public class OpenAboutCommandHandler extends AbstractHandler {
    @Override
    public Object execute(ExecutionEvent event) throws ExecutionException {
        IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
        IWorkbenchAction action = ActionFactory.ABOUT.create(window);
        action.run();
        return null;
    }
}

Gruß Tom
 
Zuletzt bearbeitet von einem Moderator:
Sehr schön Thomas,
genau das, was ich gesucht habe. :)

Wenn ich jetzt noch wüsste wie der Inhaltstext gesetzt werden kann ist für mich der Thread geschlossen.

Schöne Grüße
 
Zurück