如何从Eclipse RCP项目中的FXViewPart获取场景

时间:2014-02-03 15:56:42

标签: eclipse eclipse-plugin javafx-2 eclipse-rcp

我目前有一个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。

1 个答案:

答案 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并处理命令的结果。