blob: ae14251989b51b6cb7787178d84387f0297e2f7d [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;
}
}
}