package com.dragome.examples; import com.dragome.forms.bindings.builders.ComponentBuilder; import com.dragome.guia.GuiaVisualActivity; import com.dragome.guia.components.interfaces.VisualBounds; import com.dragome.guia.components.interfaces.VisualButton; import com.dragome.guia.components.interfaces.VisualComponent; import com.dragome.guia.components.interfaces.VisualImage; import com.dragome.guia.components.interfaces.VisualLabel; import com.dragome.web.annotations.PageAlias; import com.dragome.web.html.dom.Timer; @PageAlias(alias= "timer-demo") public class TimerDemoPage extends GuiaVisualActivity { int dx= 1; int dy= 1; int speed= 0; Timer timer= new Timer(); public void build() { ComponentBuilder componentBuilder= new ComponentBuilder(mainPanel); componentBuilder.bindTemplate("moveButton").as(VisualButton.class).onClick(() -> setSpeed(speed + 3)).build(); componentBuilder.bindTemplate("pauseButton").as(VisualButton.class).onClick(() -> setSpeed(speed - 3)).build(); componentBuilder.bindTemplate("speed").as(VisualLabel.class).to(this::getSpeed).build(); VisualImage image= componentBuilder.bindTemplate("ball-image").as(VisualImage.class).build(); moveComponent(image); } public void moveComponent(VisualComponent component) { VisualBounds bounds= component.getStyle().getBounds(); bounds.setX(bounds.getX() + (dx*= bounds.getX() > 400 - speed || bounds.getX() < -3 + speed ? -1 : 1) * speed); bounds.setY(bounds.getY() + (dy*= bounds.getY() > 300 - speed || bounds.getY() < -3 + speed ? -1 : 1) * speed); timer.setTimeout(() -> moveComponent(component), 10); } public int getSpeed() { return speed; } public void setSpeed(int speed) { this.speed= speed; } }