blob: 785a05b64b122717ea766cca91463af59ae883f6 [file] [log] [blame]
package groovy.swt.impl;
import groovy.lang.Closure;
import groovy.swt.ClosureSupport;
import org.eclipse.swt.browser.ProgressEvent;
import org.eclipse.swt.browser.ProgressListener;
/**
* This implementation adds a ProgressListener to a browser widget
*
* @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
*/
public class ProgressListenerImpl implements ProgressListener, ClosureSupport {
private Closure closure;
private String type;
/**
* @param type
*/
public ProgressListenerImpl(String type) {
this.type = type;
}
public Closure getClosure() {
return closure;
}
public void setClosure(Closure closure) {
this.closure = closure;
}
/*
* @see org.eclipse.swt.browser.ProgressListener#changed(org.eclipse.swt.browser.ProgressEvent)
*/
public void changed(ProgressEvent event) {
if (closure == null) {
throw new NullPointerException(
"No closure has been configured for this Listener");
}
if ("changed".equals(type)) {
closure.setProperty("event", new CustomProgressEvent(event));
closure.call(event);
}
}
/*
* @see org.eclipse.swt.browser.ProgressListener#completed(org.eclipse.swt.browser.ProgressEvent)
*/
public void completed(ProgressEvent event) {
if (closure == null) {
throw new NullPointerException(
"No closure has been configured for this Listener");
}
if ("completed".equals(type)) {
closure.setProperty("event", new CustomProgressEvent(event));
closure.call(event);
}
}
public class CustomProgressEvent {
private ProgressEvent event;
public CustomProgressEvent(ProgressEvent event) {
this.event = event;
}
public int getCurrent() {
return event.current;
}
public int getTotal() {
return event.total;
}
}
}