package au.gov.ga.earthsci.model.ui.raster;
import javax.inject.Inject;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.gdal.gdal.Dataset;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import au.gov.ga.earthsci.intent.IIntentCallback;
import au.gov.ga.earthsci.intent.IIntentHandler;
import au.gov.ga.earthsci.intent.Intent;
import au.gov.ga.earthsci.model.IModel;
import au.gov.ga.earthsci.model.core.raster.GDALRasterModelParameters;
import au.gov.ga.earthsci.model.ui.raster.wizard.RasterModelParametersWizard;
/**
* Intent handler that uses a wizard interface to collect parameters for use in
* generation of {@link IModel} instances from GDAL rasters.
*
* @author James Navin (james.navin@ga.gov.au)
*
*/
public class GDALRasterModelParametersIntentHandler implements IIntentHandler
{
private static final Logger logger = LoggerFactory.getLogger(GDALRasterModelParametersIntentHandler.class);
@Inject
private Shell parentShell;
@Override
public void handle(final Intent intent, final IIntentCallback callback)
{
logger.debug("Handling GDAL model parameter collection intent"); //$NON-NLS-1$
final Dataset dataset = (Dataset) intent.getExtra("dataset");
final GDALRasterModelParameters params = new GDALRasterModelParameters(dataset);
Display.getDefault().asyncExec(new Runnable()
{
@Override
public void run()
{
WizardDialog dialog = new WizardDialog(parentShell, new RasterModelParametersWizard(dataset, params));
dialog.setPageSize(400, 400);
dialog.open();
if (dialog.getReturnCode() == WizardDialog.OK)
{
callback.completed(params, intent);
}
else
{
callback.aborted(intent);
}
}
});
}
}