E(Fx)Clipse - Javafx Runtime Tom Schindl - Bestsolution Systemhaus Gmbh

E(Fx)Clipse - Javafx Runtime Tom Schindl - Bestsolution Systemhaus Gmbh

e(fx)clipse - JavaFX Runtime Tom Schindl - BestSolution Systemhaus GmbH EclipseCon October 2012 (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 About Tom ✤ CTO BestSolution Systemhaus GmbH ✤ Eclipse Committer ✤ e4 ✤ Platform UI ✤ EMF ✤ Main developer of e(fx)clipse ✤ Twitter: @tomsontom (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 About e(fx)clipse (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 About e(fx)clipse ✤ Opensource project lead by BestSolution.at (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 About e(fx)clipse ✤ Opensource project lead by BestSolution.at ✤ All sources provided under EPL (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 About e(fx)clipse ✤ Opensource project lead by BestSolution.at ✤ All sources provided under EPL ✤ Started in Summer 2011 (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 About e(fx)clipse ✤ Opensource project lead by BestSolution.at ✤ All sources provided under EPL ✤ Started in Summer 2011 ✤ Releases every 6-8 weeks (~2500 Downloads/ release) (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 About e(fx)clipse ✤ Opensource project lead by BestSolution.at ✤ All sources provided under EPL ✤ Started in Summer 2011 ✤ Releases every 6-8 weeks (~2500 Downloads/ release) ✤ Community Support: www.efxclipse.org (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 About e(fx)clipse ✤ Opensource project lead by BestSolution.at ✤ All sources provided under EPL ✤ Started in Summer 2011 ✤ Releases every 6-8 weeks (~2500 Downloads/ release) ✤ Community Support: www.efxclipse.org ✤ Commercial Support: www.bestsolution.at (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - Anatomy public class MyApp extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { BorderPane p = new BorderPane(); p.setCenter(new Button("Hello World!")); Scene s = new Scene(p,300,300); primaryStage.setScene(s); primaryStge.show(); } } (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - Runtime Basic-Runtime (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - Runtime Basic-Runtime ✤ Java ✤ Additional Layout-Panels (known from SWT) ✤ Dialogs similar those of SWT/JFace ✤ FXML/Guice-Injector (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - Runtime Basic-Runtime ✤ Java ✤ Additional Layout-Panels (known from SWT) ✤ Dialogs similar those of SWT/JFace ✤ FXML/Guice-Injector ✤ OSGi ✤ Equinox-Extension (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - FX+OSGi my.app.bundle import java.lang import javafx.scene JRE rt.jar .... javafx javafxrt.jar (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - FX+OSGi system.bundle my.app.bundle export java.lang import java.lang import javafx.scene JRE rt.jar .... javafx javafxrt.jar (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - FX+OSGi system.bundle my.app.bundle export java.lang import java.lang import javafx.scene JRE rt.jar .... fake.javafx Adaptor Hooks javafx export javafx.scene javafxrt.jar (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - Adapter Hooks ✤ Defined in a fragment with org.eclipse.osgi as their Host ✤ Configured through hookconfigurators.properties public class FXClassLoader implements ClassLoadingHook, AdaptorHook { public BaseClassLoader createClassLoader(ClassLoader parent, ClassLoaderDelegate delegate, BundleProtectionDomain domain, BaseData data, String[] bundleclasspath) { if (data.getBundle().getSymbolicName().equals("at.bestsolution.efxclipse.runtime.javafx")) { // create javafx enabled classloader } return null; } } (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - Application (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - Application FX-App public class MyApp extends Application { @Override public void start(Stage primaryStage) { } } (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - Application FX-App OSGi-App public class MyApp implements IApplication { public class MyApp extends Application { @Override @Override public final Object start(IApplicationContext public void start(Stage primaryStage) { context) throws Exception { } } } } (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - Application FX-App OSGi-App public class MyApp implements IApplication { public class MyApp extends Application { @Override @Override public final Object start(IApplicationContext public void start(Stage primaryStage) { context) throws Exception { } } } } public class MyApp extends AbstractJFXApplication { @Override protected void jfxStart(IApplicationContext applicationContext, Application jfxApplication, Stage primaryStage) { } (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - Runtime Advanced-Runtime (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - Runtime Advanced-Runtime ✤ Eclipse 3.x/4.x ✤ Specialized ViewPart (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - Runtime Advanced-Runtime ✤ Eclipse 3.x/4.x ✤ Specialized ViewPart ✤ EMF-Edit integration (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - Runtime Advanced-Runtime ✤ Eclipse 3.x/4.x ✤ Specialized ViewPart ✤ EMF-Edit integration ✤ OSGi + FXML ✤ DI support for loading (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - Runtime Advanced-Runtime ✤ Eclipse 3.x/4.x ✤ Specialized ViewPart ✤ EMF-Edit integration ✤ OSGi + FXML ✤ DI support for loading ✤ e4 ✤ renderers for e4 ✤ jemmy test support (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - FXML <BorderPane xmlns:fx="http://javafx.com/fxml" fx:controller="MyController"> <center> <Button text="Hello World" onAction="#clicked" /> </center> </BorderPane> final MyController c = new MyController(); BorderPane p = new BorderPane(); Button b = new Button("Hello World"); b.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { c.clicked(event); } }); (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - OSGI & FXML System.bundle - Object.class, String.class (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - OSGI & FXML System.bundle - Object.class, String.class MyApp-Bundle (requires FX-Bundle) MyController.class MyControl.class MyApp.class myscreen.fxml (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - OSGI & FXML System.bundle - Object.class, String.class MyApp-Bundle FX-Bundle (requires FX-Bundle) FXMLLoader.class MyController.class Node.class MyControl.class ... MyApp.class myscreen.fxml (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - OSGI & FXML System.bundle - Object.class, String.class can see can see MyApp-Bundle FX-Bundle can see (requires FX-Bundle) FXMLLoader.class MyController.class Node.class MyControl.class ... MyApp.class myscreen.fxml (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - OSGI & FXML System.bundle - Object.class, String.class can see can see MyApp-Bundle FX-Bundle can see (requires FX-Bundle) FXMLLoader.class MyController.class Node.class MyControl.class can NOT see ... MyApp.class myscreen.fxml (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - OSGi+FXML public class MyApp { @Inject @FXMLLoader FXMLLoaderFactory factory; @PostConstruct void launch(IApplicationContext applicationContext, Application jfxApplication, Stage primaryStage) { Parent p = (Parent) factory.loadBundleRelative("Sample.fxml").load(); } } (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - EAP (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - EAP EMF Eclipse 4 Application Platform OSGi (Equinox) Framework JRE (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - EAP Services DI-Container EMF Workbench Model Eclipse 4 Application Platform OSGi (Equinox) Framework JRE (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - EAP SWT-UI Core-Business-Logic App Services DI-Container EMF EAP-SWT Workbench Model Eclipse 4 Application Platform OSGi (Equinox) Framework JRE (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - EAP SWT-UIJFX-UI Core-Business-Logic App Services DI-Container EMF EAP-SWT EAP-JFX Workbench Model Eclipse 4 Application Platform OSGi (Equinox) Framework JRE (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - OSGi+FXML e4 Runtime Demo (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - OSGi+FXML e4 Runtime Demo ✤ EMF-Edit (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - OSGi+FXML e4 Runtime Demo ✤ EMF-Edit ✤ e4 Demo (c) Tom Schindl - BestSolution Systemhaus GmbH Freitag, 26. Oktober 12 e(fx)clipse - Real Apps TESIS Dynaware TESIS DYNAware simulation software in use at Audi, BMW, Ford, MAGNA, MAN, VW and others. (c) TESIS

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    61 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us