SWT FileDialog缺少Windows 10上的导航栏

时间:2018-10-02 12:07:43

标签: windows-10 swt eclipse-rcp

我有一个小的Eclipse RCP应用程序。

我注意到在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;
}

我仍然不知道如何解决此问题或实际发生的事情。

另一条信息是,如果我使用启动配置从eclipse启动我的RCP可以正常工作,即使我在WorkbenchAdvisor中启动它,文件对话框也会显示带有导航栏。

1 个答案:

答案 0 :(得分:2)

我建议您使用org.eclipse.ui.startup扩展名。您可以在plugin.xml中声明它。

此扩展要求您提供一个实现IStartup接口的类。此类的earlyStartup方法在之后 WorkbenchAdvisor.postStartup之后运行。

也许这时候出现导航栏。