WebApp controlled Parrot AR Drone with Vaadin and Spring Boot

Please download to get full document.

View again

All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
 13
 
  EclipseCon 2014 presentation about using Vaadin and SpringBoot to remote control Parrot AR Drone over a web application.
Related documents
Share
Transcript
  • 1. slogan WebApp controlled Parrot AR Drone with Vaadin and Spring Boot Je zult maar letter wezen. Goed, ik ben niet ontevredet. Maar het valt niet mee in deze zeventiger jaren tot het vaderlandse alfabet te behoren. Foto-zetterijen wringen je steeds in steeds ingevikkelder. Je zult maar letter wezen. Goed, ik ben Je zult maar letter wezen. Goed, ik ben niet ontevredet. Maar het valt niet mee in deze zeventiger jaren tot het vaderlandse alfabet te behoren. Foto-zetterijen wringen je steeds in steeds ingevikkelder. Je zult maar letter wezen. Goed, ik ben Je zult maar letter wezen. Goed, ik ben niet ontevredet. Maar het valt niet mee in deze zeventiger jaren tot het vaderlandse alfabet te behoren. Foto-zetterijen wringen je steeds in steeds iJneg ezvuilkt kmeladaerr .l eJtete zr uwlte mzeana.r Gleotteedr ,w ike bzeenn. nGieote d, ik ben ontevredet. Maar het valt niet mee in deze zeventiger jaren tot het vaderlandse alfabet te behoren. Foto-zetterijen wringen je steeds in steeds ingevikkelder. Je zult maar letter wezen. Goed, ik ben @peter_lehto Vaadin Expert & Trainer
  • 2. What is Vaadin? Integrating with Spring Boot
  • 3. QA How to get started? Drone
  • 4. User interface framework for rich web applications
  • 5. java html
  • 6. > [] + []; > > [] + {}; > [object Object] > {} + []; > 0 > {} + {}; > NaN > NaN == NaN; > false > typeof NaN; > number > var foo = [0]; > foo == !foo; > true
  • 7. Developer Productivity Rich UX
  • 8. User Interface Components
  • 9. How does Vaadin work, really?
  • 10. JogDial jogDial = new JogDial(Size.MEDIUM); ! TextField x = new TextField(); TextField y = new TextField();
  • 11. JogDial jogDial = new JogDial(Size.MEDIUM); ! TextField x = new TextField(); TextField y = new TextField(); ! jogDial.addMoveListener(e -> { x.setValue(e.getX()); y.setValue(e.getY()); });
  • 12. JogDial jogDial = new JogDial(Size.MEDIUM); ! TextField x = new TextField(); TextField y = new TextField(); ! jogDial.addMoveListener(e -> { x.setValue(e.getX()); y.setValue(e.getY()); }); ! layout.addComponents(x, y, jogDial);
  • 13. • Loader page • CSS Theme • Images • JavaScript 135k Compressed & reduced Thin client
  • 14. • x=-0.5, y=0.5 • jogDial moved ! 314 bytes
  • 15. JogDial jogDial = new JogDial(Size.MEDIUM); ! TextField x = new TextField(); TextField y = new TextField(); ! jogDial.addMoveListener(e -> { x.setValue(e.getX()); y.setValue(e.getY()); }); ! layout.addComponents(x, y, jogDial);
  • 16. • x=-0.5, y=0.5 • jogDial moved ! 314 • moveCap(-0.5,0.5) • x.value=-0.5 y.value=0.5 ! 351 bytes
  • 17. Integration with
  • 18. Single point of focus A tool for getting started quickly Non-functional requirements Easily customizable
  • 19. <parent>! <groupId>org.springframework.boot</groupId>! <artifactId>spring-boot-starter-parent</artifactId>! <version>1.1.8.RELEASE</version>! </parent>! ! <dependencies>! <dependency>! <groupId>org.springframework.boot</groupId>! <artifactId>spring-boot-starter-web</artifactId>! </dependency>! <dependency>! <groupId>org.vaadin.spring</groupId>! <artifactId>spring-boot-vaadin</artifactId>! </dependency>! </dependencies>
  • 20. Maven POM hierarchy Annotation based configuration Dependencies as @Bean Embedded web server
  • 21. @Configuration @ComponentScan @EnableAutoConfiguration @EnableTouchKitServlet public class Application { ! public static void main(String[] args) { SpringApplication.run(Application.class, args).start(); } ! @Bean DroneTemplate provideTemplate(TaskExecutor taskExecutor, DroneStateChangeCallback[] callbacks) throws UnknownHostException { return new DroneTemplate(taskExecutor, callbacks); } ! @Bean Drone provideDrone() { return new Drone(); } }
  • 22. @VaadinUI / @TouchkitUI @UIScope @EventBus for View/UI/App Spring managed beans
  • 23. @TouchKitUI @Theme("drone") public class DroneUI extends UI implements InitializingBean, DisposableBean { @Autowired private DroneTemplate service; ! @Autowired private ControlPanel controlPanel; ! @Autowired private GaugePanel gaugePanel; ! … }
  • 24. @Target({java.lang.annotation.ElementType.TYPE}) @Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @Documented @VaadinComponent @UIScope public @interface TouchKitUI { String path() default ""; }
  • 25. @Target({java.lang.annotation.ElementType.TYPE}) @Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @Documented @VaadinComponent @UIScope public @interface TouchKitUI { String path() default ""; } @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Import({TouchKitServletConfiguration.class, PingServletConfiguration.class}) public @interface EnableTouchKitServlet { }
  • 26. EventBus for loose coupling Scoped events Subscribe / Unsubscribe UI.access Runnable for threads
  • 27. @TouchKitUI @Theme("drone") public class DroneUI extends UI implements InitializingBean, DisposableBean { … @Autowired private DroneEmergencyDialog emergencyDialog; ! @Autowired private EventBus eventBus; ! @Override public void afterPropertiesSet() throws Exception { eventBus.subscribe(this); } ! @EventBusListenerMethod protected void onEmergencyEvent(DroneEmergencyEvent event) { this.access(() -> emergencyDialog.show(this)); } }
  • 28. slogan Je zult maar letter wezen. Goed, ik ben niet ontevredet. Maar het valt niet mee in deze zeventiger jaren tot het vaderlandse alfabet te behoren. Foto-zetterijen wringen je steeds in steeds ingevikkelder. Je zult maar letter wezen. Goed, ik ben Je zult maar letter wezen. Goed, ik ben niet ontevredet. Maar het valt niet mee in deze zeventiger jaren tot het vaderlandse alfabet te behoren. Foto-zetterijen wringen je steeds in steeds ingevikkelder. Je zult maar letter wezen. Goed, ik ben Je zult maar letter wezen. Goed, ik ben niet ontevredet. Maar het valt niet mee in deze zeventiger jaren tot het vaderlandse alfabet te behoren. Foto-zetterijen wringen je steeds in steeds iJneg ezvuilkt kmeladaerr .l eJtete zr uwlte mzeana.r Gleotteedr ,w ike bzeenn. nGieote d, ik ben ontevredet. Maar het valt niet mee in deze zeventiger jaren tot het vaderlandse alfabet te behoren. Foto-zetterijen wringen je steeds in steeds ingevikkelder. Je zult maar letter wezen. Goed, ik ben
  • 29. <<WIFI-HOTSPOT>> 192.168.1.1 AR Parrot Drone
  • 30. <<WIFI-HOTSPOT>> 192.168.1.1 AR Parrot Drone <<JVM>> <<Embedded-Jetty>> 192.168.1.2
  • 31. <<WIFI-HOTSPOT>> 192.168.1.1 AR Parrot Drone <<JVM>> <<Embedded-Jetty>> <<Embedded-Jetty>> 192.168.1.2 192.168.1.2 Vaadin UI SpringBoot
  • 32. <<WIFI-HOTSPOT>> 192.168.1.1 AR Parrot Drone <<JVM>> <<Embedded-Jetty>> <<Embedded-Jetty>> 192.168.1.2 192.168.1.2 Vaadin UI SpringBoot <<Browser>> (192.168.1.3) User
  • 33. <<VaadinUI>> DroneUI
  • 34. <<Widget>> JogDial <<Widget>> JogDial <<VaadinUI>> DroneUI
  • 35. <<Widget>> JogDial <<Widget>> JogDial <<VaadinUI>> DroneUI <<Widget>> Gauge <<Widget>> Gauge <<Widget>> Gauge
  • 36. <<Widget>> JogDial <<Widget>> JogDial <<Widget>> Gauge <<Widget>> Gauge <<Widget>> Gauge <<Bean>> Drone <<VaadinUI>> DroneUI
  • 37. <<Widget>> JogDial <<Widget>> JogDial <<Widget>> Gauge <<Widget>> Gauge <<Widget>> Gauge <<Bean>> DroneTemplate <<Bean>> Drone <<VaadinUI>> DroneUI
  • 38. <<Widget>> JogDial <<Widget>> JogDial <<Widget>> Gauge <<Widget>> Gauge <<Widget>> Gauge <<Bean>> DroneTemplate <<DroneStateCall…>> UIEventProducer <<Bean>> Drone <<VaadinUI>> DroneUI
  • 39. @Component class UIEventProducer implements DroneStateCallback { ! @Autowired @EventBusScope(EventScope.APPLICATION) private EventBus eventBus; ! @Override public void onDroneStateChanged(DroneState latestState) { if (latestState.isEmergency()) { eventBus.publish(this, new DroneEmergencyEvent()); } if (latestState.isBatteryTooLow()) { eventBus.publish(this, new DroneLowBatteryEvent()); } ! eventBus.publish(this, new DroneBatteryEvent(this, latestState.getBattery())); ! eventBus.publish(this, new DroneThetaEvent(this, latestState.getTheta())); ! eventBus.publish(this, new DroneAltitudeEvent(this, latestState.getAltitude())); } }
  • 40. Getting started
  • 41. github.com/vaadin/teleport Klikkaa otsikkoa kolmesti ja kirjoita vaadin.com/demo start.spring.io teksti github.com/peholmst/vaadin4spring
  • 42. Eclipse Download Vaadin plugin from Marketplace
  • 43. mvn archetype:generate -DarchetypeGroupId= com.vaadin -DarchetypeArtifactId= vaadin-archetype-application -DarchetypeVersion= 7.3.3 Maven
  • 44. Download for Free vaadin.com/book PDF, ePub, HTML ISBN 978-952-93-1970-1 9789529319701 ISBN 978-952-93-1970-1 9789529319701 Vol 1 288 pages Vol 2 434 pages
  • 45. Lessons learned today 1. Finns smile, always 2. Vaadin is good for web apps, brings you great productivity 3. Boot kickstarts development and helps you all the way 4. If I catch you building your home pages with Vaadin + Boot I’ll take you behind the sauna (a not-so-fun Finnish tradition)
  • 46. vaderlandse alfabet te behoren. wringen je steeds in steeds Je zult maar letter wezen. Goed, ik ben maar letter wezen. Goed, ik ben niet Questions, Comments? ontevredet. Maar het valt niet mee in deze zeventiger tot het vaderlandse alfabet te behoren. zetterijen wringen je steeds in steeds ingevikkelder. Je zult maar letter wezen. Goed, ik ben zult maar letter wezen. Goed, ik ben niet ontevredet. Maar het valt niet mee in deze zeventiger tot het vaderlandse alfabet te behoren. Foto-zetterijen wringen je steeds in steeds ezvuilkt kmeladaerr .l eJtete zr uwlte mzeana.r Gleotteedr ,w ike bzeenn. nGieote d, ik ben ontevredet. Maar het valt niet mee in deze zeventiger tot het vaderlandse alfabet te behoren. Foto-zetterijen wringen je steeds in steeds ingevikkelder. Je zult maar letter wezen. Goed, ik ben @peter_lehto peter@vaadin.com Vaadin Ltd
  • Related Search
    We Need Your Support
    Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

    Thanks to everyone for your continued support.

    No, Thanks