WebApp controlled Parrot AR Drone with Vaadin and Spring Boot

Click here to load reader

download WebApp controlled Parrot AR Drone with Vaadin and Spring Boot

of 54

  • date post

    01-Jul-2015
  • Category

    Software

  • view

    467
  • download

    3

Embed Size (px)

description

EclipseCon 2014 presentation about using Vaadin and SpringBoot to remote control Parrot AR Drone over a web application.

Transcript of WebApp controlled Parrot AR Drone with Vaadin and Spring Boot

  • 1. sloganWebApp controlledParrot AR Dronewith Vaadin and Spring BootJe zult maar letter wezen. Goed, ik ben nietontevredet. Maar het valt niet mee in deze zeventigerjaren tot het vaderlandse alfabet te behoren.Foto-zetterijen wringen je steeds in steedsingevikkelder. Je zult maar letter wezen. Goed, ik benJe zult maar letter wezen. Goed, ik ben nietontevredet. Maar het valt niet mee in deze zeventigerjaren tot het vaderlandse alfabet te behoren.Foto-zetterijen wringen je steeds in steedsingevikkelder. Je zult maar letter wezen. Goed, ik benJe zult maar letter wezen. Goed, ik ben nietontevredet. Maar het valt niet mee in deze zeventigerjaren tot het vaderlandse alfabet te behoren.Foto-zetterijen wringen je steeds in steedsiJneg ezvuilkt kmeladaerr .l eJtete zr uwlte mzeana.r Gleotteedr ,w ike bzeenn. nGieote d, ik benontevredet. Maar het valt niet mee in deze zeventigerjaren tot het vaderlandse alfabet te behoren.Foto-zetterijen wringen je steeds in steedsingevikkelder. Je zult maar letter wezen. Goed, ik ben@peter_lehtoVaadin Expert & Trainer

2. What isVaadin?IntegratingwithSpring Boot 3. QAHow togetstarted?Drone 4. User interfaceframework for richweb applications 5. java html 6. > [] + [];>> [] + {};> [object Object]> {} + [];> 0> {} + {};> NaN> NaN == NaN;> false> typeof NaN;> number> var foo = [0];> foo == !foo;> true 7. DeveloperProductivityRichUX 8. User InterfaceComponents 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 JavaScript135kCompressed &reducedThin 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.5y.value=0.5!351 bytes 17. Integration with 18. Single point of focusA tool for getting started quicklyNon-functional requirementsEasily customizable 19. !org.springframework.boot!spring-boot-starter-parent!1.1.8.RELEASE!!!!!org.springframework.boot!spring-boot-starter-web!!!org.vaadin.spring!spring-boot-vaadin!! 20. Maven POM hierarchyAnnotation based configurationDependencies as @BeanEmbedded web server 21. @Configuration@ComponentScan@EnableAutoConfiguration@EnableTouchKitServletpublic class Application {!public static void main(String[] args) {SpringApplication.run(Application.class, args).start();}!@BeanDroneTemplate provideTemplate(TaskExecutor taskExecutor,DroneStateChangeCallback[] callbacks) throws UnknownHostException {return new DroneTemplate(taskExecutor, callbacks);}!@BeanDrone provideDrone() {return new Drone();}} 22. @VaadinUI / @TouchkitUI@UIScope@EventBus for View/UI/AppSpring managed beans 23. @TouchKitUI@Theme("drone")public class DroneUI extends UI implements InitializingBean, DisposableBean {@Autowiredprivate DroneTemplate service;!@Autowiredprivate ControlPanel controlPanel;!@Autowiredprivate GaugePanel gaugePanel;!} 24. @Target({java.lang.annotation.ElementType.TYPE})@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)@Documented@VaadinComponent@UIScopepublic @interface TouchKitUI {String path() default "";} 25. @Target({java.lang.annotation.ElementType.TYPE})@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)@Documented@VaadinComponent@UIScopepublic @interface TouchKitUI {String path() default "";}@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Import({TouchKitServletConfiguration.class, PingServletConfiguration.class})public @interface EnableTouchKitServlet {} 26. EventBus for loose couplingScoped eventsSubscribe / UnsubscribeUI.access Runnable for threads 27. @TouchKitUI@Theme("drone")public class DroneUI extends UI implements InitializingBean, DisposableBean {@Autowiredprivate DroneEmergencyDialog emergencyDialog;!@Autowiredprivate EventBus eventBus;!@Overridepublic void afterPropertiesSet() throws Exception {eventBus.subscribe(this);}!@EventBusListenerMethodprotected void onEmergencyEvent(DroneEmergencyEvent event) {this.access(() -> emergencyDialog.show(this));}} 28. sloganJe zult maar letter wezen. Goed, ik ben nietontevredet. Maar het valt niet mee in deze zeventigerjaren tot het vaderlandse alfabet te behoren.Foto-zetterijen wringen je steeds in steedsingevikkelder. Je zult maar letter wezen. Goed, ik benJe zult maar letter wezen. Goed, ik ben nietontevredet. Maar het valt niet mee in deze zeventigerjaren tot het vaderlandse alfabet te behoren.Foto-zetterijen wringen je steeds in steedsingevikkelder. Je zult maar letter wezen. Goed, ik benJe zult maar letter wezen. Goed, ik ben nietontevredet. Maar het valt niet mee in deze zeventigerjaren tot het vaderlandse alfabet te behoren.Foto-zetterijen wringen je steeds in steedsiJneg ezvuilkt kmeladaerr .l eJtete zr uwlte mzeana.r Gleotteedr ,w ike bzeenn. nGieote d, ik benontevredet. Maar het valt niet mee in deze zeventigerjaren tot het vaderlandse alfabet te behoren.Foto-zetterijen wringen je steeds in steedsingevikkelder. Je zult maar letter wezen. Goed, ik ben 29. 192.168.1.1AR ParrotDrone 30. 192.168.1.1AR ParrotDrone192.168.1.2 31. 192.168.1.1AR ParrotDrone192.168.1.2192.168.1.2Vaadin UISpringBoot 32. 192.168.1.1AR ParrotDrone192.168.1.2192.168.1.2Vaadin UISpringBoot(192.168.1.3)User 33. DroneUI 34. JogDial JogDialDroneUI 35. JogDial JogDialDroneUIGauge Gauge Gauge 36. JogDial JogDialGauge Gauge GaugeDroneDroneUI 37. JogDial JogDialGauge Gauge GaugeDroneTemplateDroneDroneUI 38. JogDial JogDialGauge Gauge GaugeDroneTemplateUIEventProducerDroneDroneUI 39. @Componentclass UIEventProducer implements DroneStateCallback {!@Autowired@EventBusScope(EventScope.APPLICATION)private EventBus eventBus;!@Overridepublic 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. Gettingstarted 41. github.com/vaadin/teleportKlikkaa otsikkoakolmesti ja kirjoitavaadin.com/demostart.spring.iotekstigithub.com/peholmst/vaadin4spring 42. EclipseDownload Vaadinplugin fromMarketplace 43. mvnarchetype:generate-DarchetypeGroupId=com.vaadin-DarchetypeArtifactId=vaadin-archetype-application-DarchetypeVersion=7.3.3Maven 44. Download for Freevaadin.com/bookPDF, ePub, HTMLISBN 978-952-93-1970-19789529319701ISBN 978-952-93-1970-19789529319701Vol 1288 pagesVol 2434 pages 45. Lessons learned today1. Finns smile, always2. Vaadin is good for web apps, brings you great productivity3. Boot kickstarts development and helps you all the way4. If I catch you building your home pages with Vaadin + BootIll take you behind the sauna (a not-so-fun Finnish tradition) 46. vaderlandse alfabet te behoren.wringen je steeds in steedsJe zult maar letter wezen. Goed, ik benmaar letter wezen. Goed, ik ben nietQuestions,Comments?ontevredet. Maar het valt niet mee in deze zeventigertot het vaderlandse alfabet te behoren.zetterijen wringen je steeds in steedsingevikkelder. Je zult maar letter wezen. Goed, ik benzult maar letter wezen. Goed, ik ben nietontevredet. Maar het valt niet mee in deze zeventigertot het vaderlandse alfabet te behoren.Foto-zetterijen wringen je steeds in steedsezvuilkt kmeladaerr .l eJtete zr uwlte mzeana.r Gleotteedr ,w ike bzeenn. nGieote d, ik benontevredet. Maar het valt niet mee in deze zeventigertot het vaderlandse alfabet te behoren.Foto-zetterijen wringen je steeds in steedsingevikkelder. Je zult maar letter wezen. Goed, ik ben@peter_lehtopeter@vaadin.comVaadin Ltd