2014-02-03 2 views
0

В настоящее время у меня есть проект eclipse rcp, где основной viewpart использует JavaFx через FXViewPart. Я хочу иметь доступ к содержимому сцены из команды eclipse rcp. Я могу получить доступ к части представления по ее идентификатору, но не уверен, как захватить его сцену.Как получить сцену из FXViewPart в проекте RCP Eclipse

Фрагмент кода Командования:

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

Необходимо опубликовать его где-нибудь самостоятельно, например.

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 и обработать результат команды.

Смежные вопросы