/*
* SmartGWT (GWT for SmartClient)
* Copyright 2008 and beyond, Isomorphic Software, Inc.
*
* SmartGWT is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License version 3
* as published by the Free Software Foundation. SmartGWT is also
* available under typical commercial license terms - see
* http://smartclient.com/license
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package com.smartgwt.sample.showcase.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.ui.RootPanel;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.Img;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.layout.VLayout;
public class Showcase implements EntryPoint {
public void onModuleLoad() {
RootPanel.get().add(getViewPanel());
}
public Canvas getViewPanel() {
VLayout layout = new VLayout();
layout.setMembersMargin(10);
layout.addChild(new OrbitImg());
return layout;
}
public static class OrbitImg extends Img {
public OrbitImg() {
super("other/earth.png", 48, 48);
setTop(0);
setLeft(100);
addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
animateOrbit();
}
});
}
public void animateOrbit() {
// TODO: isc.Animation.registerAnimation(this.animateOrbitStep, 2000,
// null, this);
new Timer() {
private double ratio = 0;
public void run() {
animateOrbitStep(ratio);
ratio += 0.01;
if (ratio >= 1)
cancel();
}
}.scheduleRepeating(20);
}
public void animateOrbitStep(double ratio) {
double angle = (Math.PI * 2) * ratio - (Math.PI / 2);
moveTo((int) (Math.cos(angle) * 100 + 100), (int) (Math.sin(angle) * 100 + 100));
}
}
}
|