将数据传递到新工作台窗口

时间:2016-08-12 08:05:21

标签: eclipse eclipse-plugin eclipse-rcp

我正在使用

打开一个新的工作台窗口
WindowInput windowInput = new WindowInput();
PlatformUI.getWorkbench().openWorkbenchWindow(perspective_id, windowInput);

以下是我的WindowInput课程:

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;
     }
}

现在,当我尝试使用

在新打开的工作台窗口中获取Map时
HashMap<String,List<String>> fieldsMap = PlatformUI.getWorkbench().getAdapter(HashMap.class);

fieldsMap仍然为null。我甚至看不到“System.err.println(”在getAdapter里面);“在控制台上打印一些内容,得出结论“getAdapter”没有被调用。

有人可以帮我这个。

基本上,我试图在两个工作台窗口之间传递数据。

提前致谢!

1 个答案:

答案 0 :(得分:0)

您的代码正在向IWorkbench对象询问HashMap,但这不是传递给openWorkbenchWindow的对象的最终位置。

openWorkbenchWindow的输入传递给新IWorkbenchWindow。这又将输入传递给窗口中的IWorkbenchPage对象。

如果您的代码位于新工作台窗口的工作台页面的视图部分中,则可以通过以下方式获取输入:

IWorkbenchPage page = getPage();

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

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