2017-05-26 297 views
0

我想建立一个基于GEF5一句Visualiser的接口,这种接口将有2个部分:E4 RCP + GEF5应用实施

  1. 输入部分 - 在那里你可以把你的句子,
  2. 输出部分,这将展示GEF5图

组织这些部件的最简单的方法是使用E4 RCP,因为他们可以有单独的javafx..Panes

这里是交易,E4 RCP使用零件作为分离javafx..BorderPanes

public class DictionaryPart { 
    @PostConstruct 
    void initUI(BorderPane pane) { 
     try { 
      TextArea textbox = new TextArea(); 
      pane.setCenter(textbox); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 

然而,GEF5实例包括使用javafx..Stage和IViewer接口简单的应用程序实现。

public void start(final Stage primaryStage) throws Exception { 
     // create graph 
     graph = createGraph(); 

     // configure application 
     Injector injector = Guice.createInjector(createModule()); 
     domain = injector.getInstance(IDomain.class); 
     viewer = domain.getAdapter(
       AdapterKey.get(IViewer.class, IDomain.CONTENT_VIEWER_ROLE)); 
     primaryStage.setScene(createScene(viewer)); 

     primaryStage.setResizable(true); 
     primaryStage.setWidth(getStageWidth()); 
     primaryStage.setHeight(getStageHeight()); 
     primaryStage.setTitle(title); 
     primaryStage.show(); 

     // activate domain only after viewers have been hooked 
     domain.activate(); 

     // set contents in the JavaFX application thread because it alters the 
     // scene graph 
     Platform.runLater(new Runnable() { 
      @Override 
      public void run() { 
       viewer.getContents().setAll(Collections.singletonList(graph)); 
      } 
     }); 
    } 

    protected Scene createScene(IViewer viewer) { 
     return new Scene(((IViewer) viewer).getCanvas()); 
    } 

从我的第二类描述部分的这段代码在我的应用程序前面带来舞台,当我只需要一个窗格时。

我只是不明白我如何正确实施GEF5到E4?是否有任何教程免除GEF文档?

UPD:发现GEF4 MVC徽标示例转换为e4 RCP应用程序,但已过时。

回答

0

迫使它这样的工作:

@PostConstruct 
void initUIPane(BorderPane pane){ 
    graph = createGraph(); 
    // configure application 
    Injector injector = Guice.createInjector(createModule()); 
    domain = injector.getInstance(IDomain.class); 
    viewer = domain.getAdapter(AdapterKey.get(IViewer.class, IDomain.CONTENT_VIEWER_ROLE)); 
    InfiniteCanvas canvas = (InfiniteCanvas)viewer.getCanvas(); 
    pane.setCenter(canvas); 
    canvas.sceneProperty().addListener((observable, oldValue, newValue) -> { 
     if (canvas.getScene() != null) { 
     domain.activate(); 
     try { 
      viewer.getContents().setAll(Collections.singletonList(graph)); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     } 
    }); 
}