これを行う方法を見つけたと思います!多くの調査を行った後、このインターフェイスを見つけました: IExecutionListener。javadoc は次のように述べています。
コマンドの実行に対するリスナー。コマンドが実行されようとしている場合、およびその実行が完了すると、このリスナーに通知されます。リスナーが実行を防止することはできず、何らかの方法で応答することしかできません。
これはまさに私が望んでいることです: 既存のコマンドに干渉せず、実行時に通知を受けます。
したがって、実行リスナーをデフォルトのコピー コマンドに追加するコードは次のとおりです。
public void addListenerToCopyCommand() {
ICommandService commandService = (ICommandService) PlatformUI
.getWorkbench().getAdapter(ICommandService.class);
Command defaultCopyCommand = commandService
.getCommand(org.eclipse.ui.IWorkbenchCommandConstants.EDIT_COPY);
defaultCopyCommand.addExecutionListener(new MyCopyListener());
}
public class MyCopyListener implements IExecutionListener {
@Override
public void preExecute(String commandId, ExecutionEvent event) {
// do nothing
}
@Override
public void postExecuteSuccess(String commandId, Object returnValue) {
// !!! Do stuff with the copied things here !!!!
System.out.println("copy command has executed");
}
@Override
public void postExecuteFailure(String commandId,
ExecutionException exception) {
// do nothing
}
@Override
public void notHandled(String commandId, NotHandledException exception) {
// do nothing
}
}
あとは、プラグインの起動時に実行されるプラグインのアクティベーターを追加するだけです。ユーザーが何かをコピーするたびに、プラグインに通知されます。