SWT FileDialog отсутствует панель навигации в Windows 10 - PullRequest
0 голосов
/ 02 октября 2018

У меня есть небольшое приложение RCP Eclipse.

Я заметил, что в Windows 10 FileDialog нет доступной части пути.

Я пробовал разные комбинации Style флаги во время инициализации диалога, но он не работал.

Стоит отметить, что в Windows 7 все в порядке.

В Windows 10 нет панели навигации: SWT FileDialog with no navigation bar

Ожидается: Expected file dialog with navigation bar

Дальнейшее изучение этого вопроса я получил к следующему:

Правильно отображается диалоговое окно с панелью навигации, если я запускаю его из WorkbenchAdvisor.

Код в основном такой:

@Override 
public Object start(IApplicationContext context) throws Exception {       
    try {
        int returnCode = PlatformUI.createAndRunWorkbench(display, new WorkbenchAdvisor() {

            @Override
            public void postStartup() {
                // THIS MAKES THE DIALOG APPEAR WITHOUT NAVIGATION BAR
                Display display = new Display();
                Shell shell = new Shell(display);
                FileDialog dialog = new FileDialog (shell, SWT.OPEN | SWT.MULTI);
                dialog.open();
                shell.close();
                while (!shell.isDisposed ()) {
                    if (!display.readAndDispatch ()) {
                        display.sleep ();
                    }
                }
            }

        });
        if (returnCode == PlatformUI.RETURN_RESTART) {
            return IApplication.EXIT_RESTART;
        }
        return IApplication.EXIT_OK;
    } finally {
        Display.getDefault().dispose();
    }
    return IApplication.EXIT_OK;
}

Мне нужночтобы можно было правильно запустить FileDialog после запуска моего рабочего места.

Если я сделаю следующее, диалоговое окно с навигационной панелью будет отображаться правильно, но это нежелательно:

@Override 
public Object start(IApplicationContext context) throws Exception {
    // THIS MAKES THE DIALOG APPEAR WITH THE NAVIGATION BAR CORRECTLY
    Display display = new Display();
    Shell shell = new Shell(display);
    FileDialog dialog = new FileDialog (shell, SWT.OPEN | SWT.MULTI);
    dialog.open();
    shell.close();
    while (!shell.isDisposed ()) {
        if (!display.readAndDispatch ()) {
            display.sleep ();
        }
    }
    Display.getDefault().dispose();
    return IApplication.EXIT_OK;
}

Я до сих пор не могу понять, как это исправить или что на самом деле происходит.

ДругойИнформация о том, что если я запускаю свой RCP из Eclipse, используя конфигурацию запуска, он работает просто отлично, появляется диалоговое окно файла с панелью навигации, даже если я запускаю его внутри WorkbenchAdvisor.

1 Ответ

0 голосов
/ 02 октября 2018

Я бы посоветовал вам использовать расширение org.eclipse.ui.startup.Вы объявляете это в своем plugin.xml.

Это расширение требует, чтобы вы предоставили класс, который реализует интерфейс IStartup.Этот метод класса * earlyStartup запускается после WorkbenchAdvisor.postStartup.

Возможно, к этому времени появится панель навигации.

...