Eclipse コマンド フレームワークを使用すると、汎用コマンドとハンドラを作成できます。ただし、「コピー」をターゲットとする拡張ポイントを作成すると、ランタイムは不平を言います:
<extension point="org.eclipse.ui.handlers">
<handler class="example.Handler" commandId="org.eclipse.ui.edit.copy"/>
</extension>
!MESSAGE Conflicting handlers for org.eclipse.ui.edit.copy: {org.eclipse.ui.internal.handlers.WidgetMethodHandler:copy} vs {example.Handler}
activeWhen
特定のタイプのオブジェクトがビューアーで選択されたときにのみ特別なハンドラーが呼び出されるように句を追加すると、コピーしようとすると例外が発生します。
<extension point="org.eclipse.ui.handlers">
<handler class="example.Handler" commandId="org.eclipse.ui.edit.copy">
<activeWhen>
<with
variable="selection">
<iterate
ifEmpty="false"
operator="or">
<instanceof
value="sample.Class">
</instanceof>
</iterate>
</with>
</activeWhen>
</handler>
</extension>
Caused by: org.eclipse.core.commands.NotHandledException: There is no handler to execute for command org.eclipse.ui.edit.copy
特定のタイプのオブジェクトに特定のコピー操作を提供するためにコマンド フレームワークを使用する正しい方法は何ですか?