Eclipse RCP: Файловая ассоциация (--launcher.openFile) - PullRequest
3 голосов
/ 19 октября 2011

Я разрабатываю продукт eclipse, и мне нужно связать расширение файла с моим редактором. Я следовал нескольким примерам (например, this и это ) но похоже, что редактор когда-либо получает событие SWT OpenDocument.

Как описано в примере с fileAssociation, я создал класс eventListener для обработки событий SWT.OpenDocument и добавил его в свой класс Application на экран до того, как метод PlatformUI.createAndRunWorkbench() будет вызван

public Object start(IApplicationContext context) throws Exception {
Object args = context.getArguments().get(IApplicationContext.APPLICATION_ARGS); 
OpenDocumentEventProcessor eProc = new OpenDocumentEventProcessor();
Display display = PlatformUI.createDisplay();
display.addListener(SWT.OpenDocument, eProc);
try{
    if(!handleWorkspace(display)){
        System.exit(0);
        return IApplication.EXIT_OK;
    }
int returnCode = PlatformUI.createAndRunWorkbench(display, new XVRWorkbenchAdvisor(args, eProc));

В файле продукта я добавил следующие аргументы программы:

--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-name
XVR Studio Developer

Если я использую тот же код в новом пустом проекте RCP, он работает как шарм.

Я не могу понять, в чем может быть проблема ..

Вы можете мне помочь?

Большое спасибо !!

Ответы [ 2 ]

2 голосов
/ 26 февраля 2012

Этот подход мне неизвестен, но, поскольку в вашем вставленном коде нет явного вызова редактора, я полагаю, что вы все еще полагаетесь на eclipse, чтобы решить, какой редактор нужно открыть. Так что, я думаю, вам все равно придется декларативно определять типы контента и ассоциации файлов. Чтобы внести это в расширение org.eclipse.core.contenttype.contentTypes, добавьте ассоциацию файлов (расширение файла ...). Получите объявление редактора в вашем плагине xml и добавьте ранее созданный id «contentTypeBinding».

1 голос
/ 06 января 2014

Поскольку я только что выполнил эту работу для приложения RCP, я подумал, что было бы полезно документировать, как я это сделал здесь, и предоставить ссылки.

  1. Я не использовал контекст.getArguments () .. ',' OpenDocumentEventProcessor 'обрабатывает все.
  2. Я хотел бы предположить, что причина, по которой это не сработало, заключалась в том, что значение -name не совпадало со значением свойства appName вТочка расширения 'org.eclipse.core.runtime.products'.Просто чтобы быть уверенным, я удалил пробелы из свойства appName и в -name.Тогда это сработало.

Очень полезные ссылки:

Для основного кодирования: http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fproduct_open_file.htm

Для объяснения того, как это работает: http://aniefer.blogspot.co.uk/2010/05/opening-files-in-eclipse-from-command.html

Одна небольшая точка, которая некоторое время ускользала от меня, заключалась в получении пути к файлу несколькими кусками в том месте, где в имени было место.В конце концов я понял (в момент «дух!»), Что мне нужно заключить в кавычки параметр % 1 в определении установщика (InstallAware) для ассоциации файлов - т.е. он стал "% 1«

...