我目前有一个eclipse rcp项目,其中主视图部分通过FXViewPart使用JavaFx。我希望能够从eclipse rcp命令访问场景的内容。我可以通过它的id访问视图部分,但不知道如何抓住它的场景。
命令的代码片段:
FXViewPart view = (FXViewPart) page.findView("com.interpro.emmeclipse.views.PageBuilderPart");
ViewPart:
public class PageBuilderPart extends FXViewPart {
@Override
protected Scene createFxScene() {
final WebView webView = new WebView();
final WebEngine engine = webView.getEngine();
final AnchorPane root = new AnchorPane();
engine.load("file:///Development/EMM/EMMEclipse/src/com/interpro/emmeclipse/html/PageCreator.html");
final IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
if (activeEditor != null) {
final IDocument doc = (IDocument) activeEditor.getAdapter(IDocument.class);
if(doc != null)
System.out.println(doc.get());
}
AnchorPane.setBottomAnchor(webView, 0.0);
AnchorPane.setLeftAnchor(webView, 0.0);
AnchorPane.setTopAnchor(webView, 0.0);
AnchorPane.setRightAnchor(webView, 0.0);
root.getChildren().addAll(webView);
Scene scene = new Scene(root);
return scene;
}
@Override
protected void setFxFocus() {
}
}
最终我想从命令类中获取webview。
答案 0 :(得分:1)
你需要自己在某个地方发布它,例如
public PageBuilderPart extends FXViewPart implements FXSceneProvider {
private Scene s;
public Scene getScene() {
return s;
}
}
public interface FXSceneProvider {
public Scene getScene();
}
并使用它
FXSceneProvider view = (FXSceneProvider) page.findView("com.interpro.emmeclipse.views.PageBuilderPart");
无论如何我不确定这是Eclipse中正确的哲学你应该执行命令,你的部分应该将自己注册为CommandListener并处理命令的结果。