2010-08-30 17 views
6

voglio chiamare un comando RCP nel codice, in questo modo:comando RCP con l'argomento oggetto

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

Con molto più codice, mi può chiamare il comando con un argomento stringa con l'assemblaggio di un oggetto di parametrizzazione poi la costruzione di una ParameterizedCommand e così via ma la parametrizzazione consente solo valori stringa e non può essere sottoclassata.

Quello che voglio veramente fare è chiamare il comando con un oggetto come parametro. Come posso fare questo?

risposta

2

Utilizzare ParameterizedCommand.generateCommand(). È possibile passare l'oggetto comando (ottenuto da ICommandService) ei parametri in una mappa.

+2

Questo non funziona. Ricevo solo un'eccezione "non può essere inoltrata a java.lang.String" se provo ad aggiungere un oggetto invece di una stringa. – Chris

+0

Ho esaminato questo aspetto, sembra che sia necessario definire un ParemeterValueConverter per convertire gli oggetti in stringhe e viceversa. Trovo che molto poco pratico, tbh. Potresti riuscire a farla franca usando HandlerUtil.getCurrentSelection (evento) per alcuni parametri. –