gwtupload.client.UpdateTimer.java Source code

Java tutorial

Introduction

Here is the source code for gwtupload.client.UpdateTimer.java

Source

/*
 * Copyright 2010 Manuel Carrasco Moino. (manolo at apache/org) 
 * http://code.google.com/p/gwtupload
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package gwtupload.client;

import com.google.gwt.user.client.Timer;

/**
 * <p>
 * A timer that notifies periodically to IUpdateable classes.
 * </p>
 * 
 * @author Manolo Carrasco Moino
 * 
 */
public class UpdateTimer extends Timer {

    private Timer delayedStarter = new Timer() {
        public void run() {
            thisInstance.start();
        }
    };

    private int interval = 1500;

    private boolean isRunning = true;

    private UpdateTimer thisInstance;

    private IsUpdateable updateable;

    public UpdateTimer(IsUpdateable updateable, int periodMillis) {
        this.updateable = updateable;
        this.interval = periodMillis;
        thisInstance = this;
    }

    /* (non-Javadoc)
     * @see com.google.gwt.user.client.Timer#cancel()
     */
    @Override
    public void cancel() {
        isRunning = false;
        delayedStarter.cancel();
        super.cancel();
    }

    /**
     * @return 
     *     interval
     */
    public int getInterval() {
        return interval;
    }

    /* (non-Javadoc)
     * @see com.google.gwt.user.client.Timer#run()
     */
    public void run() {
        updateable.update();
    }

    /* (non-Javadoc)
     * @see com.google.gwt.user.client.Timer#scheduleRepeating(int)
     */
    @Override
    public void scheduleRepeating(int periodMillis) {
        isRunning = true;
        super.scheduleRepeating(periodMillis);
    }

    /**
     * @param periodMillis
     */
    public void setInterval(int periodMillis) {
        if (this.interval != periodMillis) {
            this.interval = periodMillis;
            if (isRunning) {
                cancel();
                start();
            }
        }
    }

    /**
     * Schedules the timer's start to elapse in the future.
     * The time to wait is the default configured period.
     */
    public void squeduleStart() {
        squeduleStart(interval);
    }

    /**
     * Schedules the timer's start to elapse in the future.
     * 
     * @param delayMillis time in milliseconds to wait before start the timer
     */
    public void squeduleStart(int delayMillis) {
        delayedStarter.schedule(delayMillis);
    }

    /**
     * start the timer
     */
    public void start() {
        scheduleRepeating(interval);
    }
}