2010-08-30 4 views
6

ich einen RCP-Befehl in Code aufgerufen werden soll, wie folgt aus:RCP-Befehl mit dem Objekt Argument

IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); 
    IHandlerService handlerService = (IHandlerService)window.getService(IHandlerService.class); 
    handlerService.executeCommand(cmdID, null); 

Mit wesentlich mehr Code, kann ich den Befehl mit einem String-Argument aufrufen, indem Sie eine Parametrisierung Objekt dann eine Montage Aufbau ParameterizedCommand usw. aber Paramaterisierung ermöglicht nur String-Werte und kann nicht unterklassifiziert werden.

Was ich wirklich tun möchte, ist den Befehl mit einem Objekt als Parameter aufzurufen. Wie kann ich das machen?

Antwort

2

Verwenden Sie ParameterizedCommand.generateCommand(). Sie können das Befehlsobjekt (erhalten von ICommandService) und die Parameter in einer Karte übergeben.

+2

Das funktioniert nicht. Ich bekomme nur eine Ausnahme "kann nicht in java.lang.String umgewandelt werden", wenn ich versuche, ein Objekt anstelle einer Zeichenfolge hinzuzufügen. – Chris

+0

Ich habe mir das angesehen, es sieht so aus, als ob Sie auch einen ParemeterValueConverter definieren müssen, um Ihre Objekte in Strings und zurück zu konvertieren. Ich finde das sehr unpraktisch, tbh. Sie können vielleicht mit HandlerUtil.getCurrentSelection (event) für einige Parameter kommen. –