package org.esa.snap.rcp.colormanip; import org.esa.snap.core.datamodel.Band; import org.esa.snap.core.datamodel.ImageInfo; import org.esa.snap.core.datamodel.Product; import org.esa.snap.core.datamodel.RasterDataNode; import org.esa.snap.ui.product.ProductSceneView; import javax.swing.JLabel; import javax.swing.SwingConstants; import java.awt.Component; /** * @author Norman Fomferra */ class FormModel { private ProductSceneView productSceneView; private ImageInfo modifiedImageInfo; public String getTitlePrefix() { return Bundle.CTL_ColorManipulationTopComponent_Name(); } public ProductSceneView getProductSceneView() { return productSceneView; } public void setProductSceneView(ProductSceneView productSceneView) { this.productSceneView = productSceneView; } public RasterDataNode getRaster() { return getProductSceneView().getRaster(); } public RasterDataNode[] getRasters() { return getProductSceneView().getRasters(); } public void setRasters(RasterDataNode[] rasters) { getProductSceneView().setRasters(rasters); } public ImageInfo getOriginalImageInfo() { return getProductSceneView().getImageInfo(); } /** * @return The image info being edited. */ public ImageInfo getModifiedImageInfo() { return modifiedImageInfo; } /** * Sets modifiedImageInfo to a copy of the given imageInfo. * @param imageInfo The image info from which a copy is made which will then be edited. */ public void setModifiedImageInfo(ImageInfo imageInfo) { this.modifiedImageInfo = imageInfo.createDeepCopy(); } public void applyModifiedImageInfo() { getProductSceneView().setImageInfo(getModifiedImageInfo()); } public String getModelName() { return getProductSceneView().getSceneName(); } public Product getProduct() { return getProductSceneView().getProduct(); } public boolean isValid() { return getProductSceneView() != null; } public boolean isContinuous3BandImage() { return isValid() && getProductSceneView().isRGB(); } public boolean isContinuous1BandImage() { return isValid() && getRaster() instanceof Band && ((Band) getRaster()).getIndexCoding() == null; } public boolean isDiscrete1BandImage() { return isValid() && getRaster() instanceof Band && ((Band) getRaster()).getIndexCoding() != null; } public boolean canUseHistogramMatching() { return true; } public boolean isMoreOptionsFormCollapsedOnInit() { return true; } public void modifyMoreOptionsForm(MoreOptionsForm moreOptionsForm) { } public void updateMoreOptionsFromImageInfo(MoreOptionsForm moreOptionsForm) { } public void updateImageInfoFromMoreOptions(MoreOptionsForm moreOptionsForm) { } public Component createEmptyContentPanel() { return new JLabel("<html>This tool window is used to manipulate the<br>" + "<b>colouring of images</b> shown in an image view.<br>" + " Right now, there is no selected image view.", SwingConstants.CENTER); } }