Class AbstractMonitorableTask

java.lang.Object
org.gvsig.utils.swing.threads.DefaultCancellableMonitorable
org.gvsig.utils.swing.threads.AbstractMonitorableTask
All Implemented Interfaces:
org.gvsig.tools.task.Cancellable, CancellableMonitorable, ICancelableTask, ICancelMonitor, IMonitorableTask, ITask, Monitorable

public abstract class AbstractMonitorableTask extends DefaultCancellableMonitorable implements IMonitorableTask
Author:
fjp Basada en el trabajo de A. Zabala. Para usarla, extender de AbstractMonitorableTask e implementar el método run(). Ejemplo: La tarea se lanza con: PluginServices.cancelableBackgroundExecution(new WriterTask(layer, writer));
private class WriterTask extends AbstractMonitorableTask
{
FLyrVect lyrVect;
IWriter writer;
int rowCount;
public WriterTask(FLyrVect lyr, IWriter writer) throws DriverException, DriverIOException
{
this.lyrVect = lyr;
this.writer = writer;
setInitialStep(0);
setDeterminatedProcess(true);
setStatusMessage(PluginServices.getText(this, "exportando_features"));
setFinalStep(rowCount); // Importante: Fijarlo en el constructor, para que esté establecido antes del run()
}
public void run() throws Exception {
// Creamos la tabla.
writer.preProcess();
rowCount = va.getShapeCount();
for (int i = 0; i invalid input: '<' rowCount; i++) {
IGeometry geom = va.getShape(i);
// DO PROGRESS STUFF
reportStep();
setNote(PluginServices.getText(this, "exporting_") + i);
if (isCanceled())
break;
// END DO PROGRESS STUFF
if (geom != null) {
Value[] values = sds.getRow(i);
IFeature feat = new DefaultFeature(geom, values, "" + i);
DefaultRowEdited edRow = new DefaultRowEdited(feat,
DefaultRowEdited.STATUS_ADDED, i);
writer.process(edRow);
}
}
writer.postProcess();
JOptionPane.showMessageDialog(
(JComponent) PluginServices.getMDIManager().getActiveView()
, PluginServices.getText(this, "capa_exportada"), "Export",
JOptionPane.INFORMATION_MESSAGE);
}
}