2010-08-30 11 views
6

Je veux appeler une commande RCP dans le code, comme ceci:Commande RCP avec l'argument objet

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

Avec le code beaucoup plus, je peux appeler la commande avec un argument de chaîne par l'assemblage d'un objet Paramétrisation puis la construction d'une ParameterizedCommand et ainsi de suite, mais la paramétrisation n'autorise que les valeurs de chaîne et ne peut pas être sous-classée.

Ce que je veux vraiment faire, c'est appeler la commande avec un objet en paramètre. Comment puis-je faire ceci?

Répondre

2

Utilisez ParameterizedCommand.generateCommand(). Vous pouvez passer l'objet de commande (obtenu à partir de ICommandService) et les paramètres dans une carte.

+2

Cela ne fonctionne pas. J'obtiens seulement une exception "ne peut pas être jeté à java.lang.String" si j'essaye d'ajouter un objet au lieu d'un String. – Chris

+0

J'ai regardé cela, il semble que vous ayez aussi besoin de définir un ParemeterValueConverter pour convertir vos objets en Strings et en retour. Je trouve cela très peu pratique, tbh. Vous pourrez peut-être vous en sortir en utilisant HandlerUtil.getCurrentSelection (event) pour certains paramètres. –