Eclipse Package Explorer CTRL-C и добавить в собственном представлении с CTRL-V? - PullRequest
0 голосов
/ 10 декабря 2011

Я хотел бы выполнить операцию вставки в моем собственном представлении, чтобы добавить некоторые файлы классов, которые были выбраны и скопированы в буфер обмена с помощью Ctrl + C в обозревателе пакетов Eclipse .

Моя (наиболее вероятная наивная) попытка состояла в том, чтобы добавить прослушиватель для моего представления, к сожалению, ничего не произойдет, если я нажму Ctrl + V с фокусом на моем виде. Я совершенно новичок в GUI, SWT и Eclipse, может быть, я упускаю что-то очень важное ...

Как получить доступ к буферу обмена исследователей пакетов? Или как мне сделать так, чтобы содержимое буфера обмена было «сброшено» на мой взгляд?

1 Ответ

0 голосов
/ 11 декабря 2011

Вам необходимо определить Обработчик расширение для команды org.eclipse.ui.edit.paste (за дополнительной информацией обращайтесь к Платформа командной платформы ):

  <handler
        class="com.example.PasteHandler"
        commandId="org.eclipse.ui.edit.paste">
     <activeWhen>
        <with variable="activePartId">
           <equals value="com.example.MyView"></equals>
        </with>
     </activeWhen>
  </handler>

Вы можете получить доступ к системебуфер обмена, используя Clipboard класс.Содержимое буфера обмена может быть разных типов, поэтому вам нужно проверить, поддерживается ли ожидаемый тип в данный момент времени.Подклассы ByteArrayTransfer используются для преобразования содержимого буфера обмена в подходящие объекты Java.В вашем случае, я думаю, лучший вариант - использовать ResourceTransfer и создавать элементы Java с использованием JavaCore :

Clipboard cb = new Clipboard(Display.getCurrent());
ResourceTransfer ft = ResourceTransfer.getInstance();
IResource[] classFiles = (IResource[]) cb.getContents(ft);
if (classFiles != null)
    for (IResource file : classFiles) {
        IJavaElement je = JavaCore.create(file);
        ...
    }
...