2012-03-12 6 views
3

RCPアプリケーションには、プログラムでパースペクティブにパースペクティブを切り替えるための既存のコマンドとハンドラーがあります。また、既存のRCPアプリケーションによって消費された新しいプラグインもあります。私は、この新しいプラグインが私のRCPアプリケーションのコマンド/ハンドラを実行するようにしたい、これに対して可能な解決策は何か?別のプラグインから既存のプラグインのコマンド/ハンドラーを実行する

答えて

4

あなたは(わからない)そのコマンドのハンドラを定義する必要がありますが、プログラムでコマンドを実行すると、このようになりますことがあります。

Command command = ((ICommandService) getSite().getService(ICommandService.class)).getCommand(commandId); 
... 
final Event trigger = new Event(); 
ExecutionEvent executionEvent = ((IHandlerService) getSite().getService(IHandlerService.class)).createExecutionEvent(command, trigger); 
command.executeWithChecks(executionEvent); 
3

コマンドを実行する多くの方法があります。 @Belaは1提示 - 私は通常、次のコードを使用します。

ICommandService commandService = (ICommandService) locationService.getService(ICommandService.class); 
IHandlerService hs = (IHandlerService) locationService.getService(IHandlerService.class); 

ParameterizedCommand pc = commandService.deserialize("<cmd-id>(<p-id>=<value>)"); 

hs.executeCommand(pc, null); 

この方法の利点は、それはあなたがコマンドにパラメータを追加することを可能にすることを主である - 例えばorg.eclipse.ui.newWizardnewWizardId

関連する問題