4

RCPアプリケーションを開発していますが、このアプリで切り取り/コピー/貼り付けが必要です。eclipse(org.eclipse.ui.edit.copy、...)によって提供されるコマンドがすでにあるので、エディターでそれらを使用したいと思います(たとえば、ツールバーに既に追加しました)。少し遊んだのですが、コピー/貼り付けコマンドにどう反応するかわかりません。たとえば、何かがコピーまたは貼り付けられた場合、エディターでどのように通知されますか?

保存コマンドのようなコマンドを使用する簡単な方法はありますか?そこで、ISaveablePartを実装するだけで、doSave()またはdoSaveAs()メソッドが呼び出されます...私はこれが本当に好きですが、ICopyablePart、...インターフェイスが見つかりませんでした;)

4

1 に答える 1

7

エディターまたはビュー内でコピー(または任意のコマンド)するための特定の動作が必要な場合は、そのハンドラーをアクティブにします。通常、あなたのcreatePartControl(Composite)方法では:

IHandlerService serv = (IHandlerService) getSite().getService(IHandlerService.class);
MyCopyHandler cp = new MyCopyHandler(this);
serv.activateHandler(org.eclipse.ui.IWorkbenchCommandConstants.EDIT_COPY, cp);

他の一般的な方法は、plugin.xmlを介してハンドラーを提供することです。

<handler commandId="org.eclipse.ui.edit.copy"
         handler="com.example.app.MyCopyHandler">
   <activeWhen>
      <with variable="activePartId">
         <equals value="com.example.app.MyEditorId"/>
      </with>
   </activeWhen>
</handler>

次に、ハンドラーでアクティブな部分を取得し、その上でコピー実装を呼び出します。元:

IWorkbenchPart part = HandlerUtil.getActivePart(event);
if (part instanceof MyEditor) {
    ((MyEditor)part).copy();
}
于 2011-05-23T01:41:31.980 に答える