private void applyMultipleColorPaletteDef() { if (!getFormModel().isValid()) { return; } final Product selectedProduct = getFormModel().getProduct(); final ProductManager productManager = selectedProduct.getProductManager(); final RasterDataNode[] protectedRasters = getFormModel().getRasters(); final ArrayList<Band> availableBandList = new ArrayList<>(); for (int i = 0; i < productManager.getProductCount(); i++) { final Product product = productManager.getProduct(i); final Band[] bands = product.getBands(); for (final Band band : bands) { boolean validBand = false; if (band.getImageInfo() != null) { validBand = true; for (RasterDataNode protectedRaster : protectedRasters) { if (band == protectedRaster) { validBand = false; } } } if (validBand) { availableBandList.add(band); } } } final Band[] availableBands = new Band[availableBandList.size()]; availableBandList.toArray(availableBands); availableBandList.clear(); if (availableBands.length == 0) { JOptionPane.showMessageDialog( getToolViewPaneControl(), "No other bands available.", /*I18N*/ titlePrefix, JOptionPane.WARNING_MESSAGE); return; } final BandChooser bandChooser = new BandChooser( SwingUtilities.getWindowAncestor(toolView), "Apply to other bands", /*I18N*/ toolView.getHelpCtx().getHelpID(), availableBands, bandsToBeModified, false); final Set<RasterDataNode> modifiedRasters = new HashSet<>(availableBands.length); if (bandChooser.show() == BandChooser.ID_OK) { bandsToBeModified = bandChooser.getSelectedBands(); for (final Band band : bandsToBeModified) { applyColorPaletteDef( getFormModel().getModifiedImageInfo().getColorPaletteDef(), band, band.getImageInfo()); modifiedRasters.add(band); } } // This code replaces visatApp.updateImages(rasters) from BEAM code. WindowUtilities.getOpened(ProductSceneViewTopComponent.class) .forEach( tc -> { final ProductSceneView view = tc.getView(); for (RasterDataNode raster : view.getRasters()) { if (modifiedRasters.contains(raster)) { view.updateImage(); return; } } }); }