@Override protected boolean verifyUserInput() { final SpectralUnmixingFormModel formModel = form.getFormModel(); if (formModel.getSourceProduct() == null) { showErrorDialog("No source product selected."); return false; } final Map<String, Object> parameterMap = parameterSupport.getParameterMap(); updateParameterMap(parameterMap); final Endmember[] endmembers = (Endmember[]) parameterMap.get("endmembers"); final String[] sourceBandNames = (String[]) parameterMap.get("sourceBandNames"); final double minBandwidth = (Double) parameterMap.get("minBandwidth"); double[] sourceWavelengths = new double[sourceBandNames.length]; double[] sourceBandwidths = new double[sourceBandNames.length]; for (int i = 0; i < sourceBandNames.length; i++) { final Band sourceBand = formModel.getSourceProduct().getBand(sourceBandNames[i]); sourceWavelengths[i] = sourceBand.getSpectralWavelength(); sourceBandwidths[i] = sourceBand.getSpectralBandwidth(); } if (!matchingWavelength(endmembers, sourceWavelengths, sourceBandwidths, minBandwidth)) { showErrorDialog( "One or more source wavelengths do not fit\n" + "to one or more endmember spectra.\n\n" + "Consider increasing the maximum wavelength deviation."); return false; } return true; }
@Override protected Product createTargetProduct() throws Exception { final SpectralUnmixingFormModel formModel = form.getFormModel(); Map<String, Object> parameterMap = parameterSupport.getParameterMap(); updateParameterMap(parameterMap); return GPF.createProduct( OperatorSpi.getOperatorAlias(SpectralUnmixingOp.class), parameterMap, formModel.getSourceProduct()); }
public SpectralUnmixingDialog(AppContext appContext) { super(appContext, TITLE, ID_APPLY_CLOSE, HELP_ID); ParameterUpdater parameterUpdater = new ParameterUpdater() { @Override public void handleParameterSaveRequest(Map<String, Object> parameterMap) { updateParameterMap(parameterMap); } @Override public void handleParameterLoadRequest(Map<String, Object> parameterMap) { updateEndmemberFormModel(parameterMap); } }; final OperatorSpi operatorSpi = GPF.getDefaultInstance() .getOperatorSpiRegistry() .getOperatorSpi(SpectralUnmixingOp.Spi.class.getName()); parameterSupport = new OperatorParameterSupport( operatorSpi.getOperatorDescriptor(), null, null, parameterUpdater); form = new SpectralUnmixingForm( appContext, parameterSupport.getPropertySet(), getTargetProductSelector()); OperatorMenu operatorMenu = new OperatorMenu( this.getJDialog(), operatorSpi.getOperatorDescriptor(), parameterSupport, appContext, HELP_ID); getJDialog().setJMenuBar(operatorMenu.createDefaultMenu()); }