SWT FileDialog 浏览位置

SWT FileDialog Browse Location

我的 RCP 应用程序中有一个简单的文件对话框,它允许用户根据下面的代码片段 select 一个文件

Label filePathLabel = new Label(composite, SWT.NULL);
filePathLabel.setText("File Path");
Text filePathText = new Text(composite, SWT.BORDER);
filePathText.setText("");
Button browseButton = new Button(composite, SWT.PUSH);
FileDialog fileDialog = new FileDialog(getShell(), SWT.SAVE);
fileDialog.setFilterExtensions(new String[] {"*.txt"});
fileDialog.setFilterNames(new String[] {"Textfiles(*.txt)"});

browseButton.addSelectionListener(new SelectionAdapter() 
 {
  @override
   public void widgetSelected(final SelectionEvent e)
   {
    String path = fileDialog.open();
    if(path != null && !path.isEmpty()) 
    {
     filePathText.setText(path);
    }
   }
 });

我面临的问题是,在关闭我的 RCP 应用程序并再次启动它后,我无法获取文件的先前浏览位置,因为所有控件(文本、文件对话框)都将被重新创建。我保存 fileDialog.open 的结果,其中 returns 路径并在我的 WizardPage 重新打开时设置 filePathText 文本控件的 setText(Text text) 方法以显示以前的浏览位置 selected 但我在关闭 RCP 应用程序后失去了对浏览位置的访问权限,所以下次我重新打开我的应用程序时,我无法将 filePathText 文本设置为以前浏览的位置 即使 Eclipse 在我单击浏览按钮后确实指向以前浏览过的位置,但我什至在单击浏览按钮之前就需要知道以前浏览过的位置,以便它可以显示在 Text控制。

我在这个网站上找到了一些建议 - https://dzone.com/articles/remember-state 但我认为这不会帮助我记住关于 FileDialog

的浏览位置的状态

如有遗漏请指正。

您使用link中提到的IDialogSettings来保存和恢复信息的精灵。向导提供了一些方法来提供帮助。

在主 Wizard class 的构造函数中设置向导应使用的对话框设置。这可能是:

public MyWizard()
{ 
  setDialogSettings(Activator.getDefault().getDialogSettings());
}

其中 Activator 是您插件的激活器(这仅在激活器扩展 AbstractUIPlugin 时有效)。

完成此操作后,您的 WizardPage 可以访问设置:

IDialogSettings settings = getDialogSettings()

当文件对话框 returns 您可以在设置中保存的位置:

settings.put("path", path);

创建文件路径时Text您可以检查是否有保存的值:

String savedPath = settings.get("path");
if (savedPath != null) {
  filePathText.setText(savedPath);
}