/* * JGrass - Free Open Source Java GIS http://www.jgrass.org * (C) HydroloGIS - www.hydrologis.com * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Library General Public License as published by the Free * Software Foundation; either version 2 of the License, or (at your option) any * later version. * * This library 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 Library General Public License for more * details. * * You should have received a copy of the GNU Library General Public License * along with this library; if not, write to the Free Foundation, Inc., 59 * Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package org.geotools.swt.control; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.dialogs.ProgressMonitorDialog; import org.eclipse.swt.widgets.Shell; import org.geotools.util.SimpleInternationalString; import org.opengis.util.InternationalString; import org.opengis.util.ProgressListener; /** * Wrapper for geotools' {@link ProgressListener}. * * @author Andrea Antonello (www.hydrologis.com) * * * @source $URL: http://svn.osgeo.org/geotools/trunk/modules/unsupported/swt/src/main/java/org/geotools/swt/control/ProgressWindow.java $ */ public class ProgressWindow extends ProgressMonitorDialog implements ProgressListener { private IProgressMonitor monitor; private String description; private final int taskSize; private float percent; private float previousPercent = -1; public ProgressWindow( Shell parent, int taskSize ) { super(parent); this.taskSize = taskSize; monitor = getProgressMonitor(); } public boolean isCanceled() { return monitor.isCanceled(); } public void setCanceled( boolean value ) { monitor.setCanceled(value); } public void setTask( InternationalString task ) { setDescription(task.toString()); } public InternationalString getTask() { return new SimpleInternationalString(getDescription()); } public String getDescription() { return description; } public void setDescription( String description ) { this.description = description; } public void started() { monitor.beginTask(description, taskSize); } public void progress( float percent ) { this.percent = percent; if (previousPercent == -1) { monitor.worked((int) percent); } else { monitor.worked((int) (percent - previousPercent)); } previousPercent = percent; } public float getProgress() { return percent; } public void complete() { monitor.done(); } public void dispose() { } public void warningOccurred( String source, String location, String warning ) { } public void exceptionOccurred( Throwable exception ) { } }