将数据传递给新 workbench window

Passing data to new workbench window

我正在使用

打开一个新的 workbench window
WindowInput windowInput = new WindowInput();
PlatformUI.getWorkbench().openWorkbenchWindow(perspective_id, windowInput);

下面是我的WindowInputclass:

public class WindowInput implements IAdaptable {

    @Override
    public Object getAdapter(Class adapter) {
        System.err.println("inside getAdapter");
        if (adapter == java.util.HashMap.class) {
            HashMap<String, List<String>> fieldsMap = new HashMap<>();
            fieldsMap.put("key1",getRecordsString());
            fieldsMap.put("key2",getRecordsString());
            return fieldsMap;
        }
        return null;
     }
}

现在,当我尝试使用

在新打开的 workbench window 中获取地图时
HashMap<String,List<String>> fieldsMap = PlatformUI.getWorkbench().getAdapter(HashMap.class);

fieldsMap 仍然为空。我什至看不到 "System.err.println("inside getAdapter");"在控制台上打印一些东西,结论是 "getAdapter" 没有被调用。

有人可以帮我解决这个问题吗?

基本上,我试图在两个 workbench windows 之间传递数据。

提前致谢!

您的代码向 IWorkbench 对象请求 HashMap 但这不是传递给 openWorkbenchWindow 的对象的最终位置。

openWorkbenchWindow 的输入被传递给新的 IWorkbenchWindow。这又将输入传递给 window.

中的 IWorkbenchPage 对象

如果您的代码位于新 workbench window 中 workbench 页面的视图部分,您可以通过以下方式获取输入:

IWorkbenchPage page = getPage();

// The page input should be your WindowInput
IAdaptable adaptable = page.getInput();

HashMap<String,List<String>> fieldsMap = adaptable.getAdapter(HashMap.class);