Eclipse 4 RCP (Luna), файловая ассоциация Windows

Я пытаюсь заставить работать Файловую ассоциацию с моим приложением RCP на основе Eclipse 4.4 Luna.

Я следовал этому руководству http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fproduct_open_file.htm.

У меня это работает на Linux и Mac OS, но в Windows я не могу загрузить файл при первом запуске приложения. Если приложение не запущено и я открываю его с помощью входного файла, запускается новый экземпляр приложения, но файл не загружается. После запуска экземпляра приложения я могу загрузить файл через командную строку с аргументом --launcher.openFile без проблем, но это раздражает. Похоже, событие SWT.OpenDocument не обрабатывается правильно при первом запуске приложения.

Я нашел эту ветку ( http://www.eclipse.org/forums/index.php/t/460936/) на форуме сообщества Eclipse, которая выглядит примерно так же, как и я, но пользователь никогда не публикует решение, поэтому любая помощь по этому вопросу будет принята с благодарностью.

Заранее спасибо.

Извините за мой английский.

РЕДАКТИРОВАТЬ:

Вот код для открытия файлов:

public class OpenDocumentEventProcessor implements Listener {

private ArrayList<String> filesToOpen = new ArrayList<String>(1);

public static final OpenDocumentEventProcessor INSTANCE = new OpenDocumentEventProcessor();

public OpenDocumentEventProcessor() {
    System.out.println("OpenDocumentEventProcessor instantiated.");
}


public void handleEvent(Event event) {
    System.out.println("Handle Event called \n");
    if (event.text != null){
        System.out.println("Files to Open " + event.text);
        filesToOpen.add(event.text);
    }else{
        System.out.println("event text null");
    }
}

public void openFiles(IEclipseContext ctx) {
    if (filesToOpen.isEmpty()){
        return;
    }

    String[] filePaths = filesToOpen.toArray(
        new String[filesToOpen.size()]);
    filesToOpen.clear();

    for (String path : filePaths) {
        // open the file path
        System.out.println(">> Open file : "+ path);
        FileManager.open(path, ctx);
    }
}

}

Этот прослушиватель добавляется в событие приложения SWT.OpenDocument. Когда событие инициируется, обработчик сохраняет путь к файлу. Затем вызывается метод openFiles в IEventLoopAdvisor, который я определил в контексте приложения.

0 ответов

Другие вопросы по тегам