package org.esa.snap.core.gpf.ui.resample;
import org.esa.snap.core.datamodel.Product;
import org.esa.snap.core.datamodel.Resampler;
import org.esa.snap.core.gpf.common.resample.ResamplingOp;
import org.esa.snap.rcp.SnapApp;
import org.esa.snap.rcp.actions.AbstractSnapAction;
import org.esa.snap.ui.AppContext;
import org.openide.awt.ActionID;
import org.openide.awt.ActionReference;
import org.openide.awt.ActionReferences;
import org.openide.awt.ActionRegistration;
import org.openide.util.NbBundle;
import org.openide.util.lookup.ServiceProvider;
import java.awt.event.ActionEvent;
/**
* Action to access the Resampling Op.
*
* @author Tonio Fincke
*/
@ActionID(category = "Operators", id = "org.esa.snap.core.gpf.ui.resample.ResamplingAction")
@ActionRegistration(displayName = "#CTL_ResamplingAction_Name")
@ActionReferences({@ActionReference(path = "Menu/Raster/Geometric Operations", position = 60)})
@NbBundle.Messages({"CTL_ResamplingAction_Name=Resampling",
"CTL_ResamplingAction_Description=Uses the SNAP resampling op to resample all bands of a product to the same size.",
"CTL_ResamplingAction_OpName=Resampling Operator",
"CTL_ResamplingAction_Help=resampleAction"})
@ServiceProvider(service = Resampler.class)
public class ResamplingAction extends AbstractSnapAction implements Resampler {
@Override
public void actionPerformed(ActionEvent e) {
final Product product = SnapApp.getDefault().getSelectedProduct(SnapApp.SelectionSourceHint.AUTO);
resample(product, false);
}
@Override
public String getName() {
return Bundle.CTL_ResamplingAction_OpName();
}
@Override
public String getDescription() {
return Bundle.CTL_ResamplingAction_Description();
}
@Override
public boolean canResample(Product multiSizeProduct) {
return ResamplingOp.canBeApplied(multiSizeProduct);
}
@Override
public Product resample(Product multiSizeProduct) {
return resample(multiSizeProduct, true);
}
public Product resample(Product product, boolean modal) {
final AppContext appContext = SnapApp.getDefault().getAppContext();
final ResamplingDialog resamplingDialog = new ResamplingDialog(appContext, product, modal);
resamplingDialog.show();
return resamplingDialog.getTargetProduct();
}
}