@Override public void setValue(String newValue) { try { final Product product = raster.getProduct(); final RasterDataNode[] refRasters = BandArithmetic.getRefRasters(newValue, product); if (refRasters.length > 0 && (!BandArithmetic.areRastersEqualInSize(product, newValue) || refRasters[0].getRasterHeight() != raster.getRasterHeight() || refRasters[0].getRasterWidth() != raster.getRasterWidth())) { Dialogs.showInformation("Referenced rasters must all be the same size", null); } else { String oldValue = raster.getValidPixelExpression(); performUndoableProductNodeEdit("Edit Valid-Pixel Expression", raster, node -> { node.setValidPixelExpression(newValue); updateImages(node, true); }, node -> { node.setValidPixelExpression(oldValue); updateImages(node, true); } ); } } catch (ParseException e) { Dialogs.showError("Expression is invalid: " + e.getMessage()); } } }