我正在使用
打开一个新的工作台窗口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”没有被调用。
有人可以帮我这个。
基本上,我试图在两个工作台窗口之间传递数据。
提前致谢!
答案 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);