package com.dragome.examples;
import com.dragome.forms.bindings.builders.ComponentBuilder;
import com.dragome.forms.bindings.client.value.ValueSource;
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.guia.events.listeners.interfaces.ClickListener;
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(new ClickListener()
{
public void clickPerformed(VisualComponent aVisualComponent)
{
setSpeed(speed + 3);
}
}).build();
componentBuilder.bindTemplate("pauseButton").as(VisualButton.class).onClick(new ClickListener()
{
public void clickPerformed(VisualComponent aVisualComponent)
{
setSpeed(speed - 3);
}
}).build();
componentBuilder.bindTemplate("speed").as(VisualLabel.class).to(new ValueSource<Integer>()
{
public Integer getValue()
{
return getSpeed();
}
}).build();
final VisualImage image= componentBuilder.bindTemplate("ball-image").as(VisualImage.class).build();
timer.setInterval(new Runnable()
{
public void run()
{
moveComponent(image);
}
}, 10);
}
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);
}
public int getSpeed()
{
return speed;
}
public void setSpeed(int speed)
{
this.speed= speed;
}
}