2017-05-26 10 views
0

私はGEF5ベースの文ビジュアライザ、2部がありますそれらのインタフェース構築したい:E4 RCP + GEF5アプリケーションの実装

  1. 入力部 - あなたの文を置くことができ、
  2. 出力部分を、契約、E4 RCPはGEF5グラフに

を表示していますが、これらの部品を整理するための最も簡単な方法は、彼らがここでは、個々の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文書をexeptするチュートリアルはありますか?

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(); 
     } 
     } 
    }); 
} 
関連する問題