PARROT COUNTER CHAIR - マスターウォール...Designer : MASTERWAL ※本シートの表示価格は全て税抜き価格です。2020.07 色ムラ キズ跡 キズ跡 キズ跡
WebApp controlled Parrot AR Drone with Vaadin and Spring Boot
-
Upload
peter-lehto -
Category
Software
-
view
470 -
download
3
description
Transcript of WebApp controlled Parrot AR Drone with Vaadin and Spring Boot
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 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 ingevikkelder. Je zult maar letter wezen. Goed, ik ben
WebApp controlled Parrot AR Drone with Vaadin and Spring Boot
@peter_lehto Vaadin Expert & Trainer
What is Vaadin?
Integrating with
Spring Boot
QA
How to get
started?
Drone
User interface framework for rich
web applications
htmljava
> [] + [];>
> [] + {};> [object Object]
> {} + [];> 0
> {} + {};> NaN
> NaN == NaN;> false
> typeof NaN;> number
> var foo = [0];> foo == !foo;> true
Developer
Productivity
Rich
UX
User Interface Components
How does Vaadin work, really?
JogDial jogDial = new JogDial(Size.MEDIUM);!TextField x = new TextField();TextField y = new TextField();
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());});
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);
• Loader page • CSS Theme • Images • JavaScript
135k
Compressed & reduced Thin client
• x=-0.5, y=0.5 • jogDial moved !314 bytes
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);
• moveCap(-0.5,0.5) • x.value=-0.5
y.value=0.5 !351 bytes
• x=-0.5, y=0.5• jogDial moved!314
Integration with
Single point of focus
Easily customizableNon-functional requirementsA tool for getting started quickly
<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>
Maven POM hierarchy
Dependencies as @BeanAnnotation based configuration
Embedded web server
@Configuration@ComponentScan@EnableAutoConfiguration@EnableTouchKitServletpublic 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(); }}
@VaadinUI / @TouchkitUI
@EventBus for View/UI/App@UIScope
Spring managed beans
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 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 ingevikkelder. Je zult maar letter wezen. Goed, ik ben
@TouchKitUI@Theme("drone")public class DroneUI extends UI implements InitializingBean, DisposableBean { @Autowired private DroneTemplate service;! @Autowired private ControlPanel controlPanel;! @Autowired private GaugePanel gaugePanel;! …}
@Target({java.lang.annotation.ElementType.TYPE})@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)@Documented@VaadinComponent@UIScopepublic @interface TouchKitUI { String path() default "";}
@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 {}
EventBus for loose coupling
Subscribe / UnsubscribeScoped events
UI.access Runnable for threads
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 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 ingevikkelder. Je zult maar letter wezen. Goed, ik ben
@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)); }}
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 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 ingevikkelder. Je zult maar letter wezen. Goed, ik ben
<<WIFI-HOTSPOT>> 192.168.1.1 AR Parrot
Drone
<<WIFI-HOTSPOT>> 192.168.1.1 AR Parrot
Drone
<<JVM>> <<Embedded-Jetty>>
192.168.1.2
<<WIFI-HOTSPOT>> 192.168.1.1 AR Parrot
Drone
<<JVM>> <<Embedded-Jetty>>
192.168.1.2<<Embedded-Jetty>>
192.168.1.2 Vaadin UI
SpringBoot
<<WIFI-HOTSPOT>> 192.168.1.1 AR Parrot
Drone
<<JVM>> <<Embedded-Jetty>>
192.168.1.2<<Embedded-Jetty>>
192.168.1.2 Vaadin UI
SpringBoot
<<Browser>> (192.168.1.3)
User
<<VaadinUI>> DroneUI
<<VaadinUI>> DroneUI
<<Widget>> JogDial<<Widget>>
JogDial
<<Widget>> Gauge
<<Widget>> Gauge
<<Widget>> Gauge
<<VaadinUI>> DroneUI
<<Widget>> JogDial<<Widget>>
JogDial
<<Widget>> Gauge
<<Widget>> Gauge
<<Widget>> Gauge
<<Bean>> Drone
<<VaadinUI>> DroneUI
<<Widget>> JogDial<<Widget>>
JogDial
<<Widget>> Gauge
<<Widget>> Gauge
<<Widget>> Gauge
<<Bean>> DroneTemplate
<<Bean>> Drone
<<VaadinUI>> DroneUI
<<Widget>> JogDial<<Widget>>
JogDial
<<Widget>> Gauge
<<Widget>> Gauge
<<Widget>> Gauge
<<DroneStateCall…>> UIEventProducer
<<Bean>> DroneTemplate
<<Bean>> Drone
<<VaadinUI>> DroneUI
<<Widget>> JogDial<<Widget>>
JogDial
@Componentclass 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())); }}
Getting started
Klikkaa otsikkoa kolmesti ja kirjoita
teksti
vaadin.com/demostart.spring.iogithub.com/peholmst/vaadin4spring
github.com/vaadin/teleport
EclipseDownload Vaadin plugin from Marketplace
mvn archetype:generate -DarchetypeGroupId= com.vaadin -DarchetypeArtifactId= vaadin-archetype-application -DarchetypeVersion= 7.3.3
Maven
Download for Freevaadin.com/bookPDF, ePub, HTML
9 789529 319701
ISBN 978-952-93-1970-1
9 789529 319701
ISBN 978-952-93-1970-1
Vol 1 288 pages
Vol 2 434 pages
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)
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 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 ingevikkelder. Je zult maar letter wezen. Goed, ik ben
Questions, Comments?
@peter_lehto [email protected]
Vaadin Ltd