Используйте org.eclipse вырезать / копировать / вставить в пользовательском приложении RCP - PullRequest
4 голосов
/ 21 мая 2011

Я разрабатываю приложение RCP, и мне нужно вырезать / скопировать / вставить в этом приложении. Поскольку уже есть команды, которые доставляются eclipse (org.eclipse.ui.edit.copy, ...), я хочу использовать их (я уже добавил их на панель инструментов, например) в редакторе. Я немного поиграл, но не понимаю, как я могу реагировать на команду копирования / вставки. Например. как мне получить информацию в редакторе, если что-то было скопировано или вставлено?

Есть ли простой способ использовать такие команды, как команда сохранения. Там мне просто нужно реализовать ISaveablePart, а затем вызывать методы doSave () или doSaveAs () ... Мне действительно это нравится, но я не нашел ICopyablePart, ... interfaces;)

1 Ответ

7 голосов
/ 23 мая 2011

Если вам нужно определенное поведение для копирования (или любой команды) в вашем редакторе или представлении, вы должны активировать для него обработчик.Обычно в вашем 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();
}
...