将数据传递给新 workbench window
Passing data to new workbench window
我正在使用
打开一个新的 workbench window
WindowInput windowInput = new WindowInput();
PlatformUI.getWorkbench().openWorkbenchWindow(perspective_id, windowInput);
下面是我的WindowInput
class:
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);
我正在使用
打开一个新的 workbench windowWindowInput windowInput = new WindowInput();
PlatformUI.getWorkbench().openWorkbenchWindow(perspective_id, windowInput);
下面是我的WindowInput
class:
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);