package org.esa.snap.rcp.statistics; import com.bc.ceres.binding.PropertyContainer; import javax.swing.AbstractButton; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.HashSet; /** * Created with IntelliJ IDEA. * User: tonio * Date: 23.04.12 * Time: 11:07 * To change this template use File | Settings | File Templates. */ public class RefreshActionEnabler implements PropertyChangeListener { private final static String PROPERTY_NAME_AUTO_MIN_MAX = "autoMinMax"; private final static String PROPERTY_NAME_MIN = "min"; private final static String PROPERTY_NAME_MAX = "max"; private static final String PROPERTY_NAME_NUM_BINS = "numBins"; private final static String PROPERTY_NAME_USE_ROI_MASK = "useRoiMask"; private final static String PROPERTY_NAME_ROI_MASK = "roiMask"; private final static String PROPERTY_NAME_X_PRODUCT = "xProduct"; private final static String PROPERTY_NAME_Y_PRODUCT = "yProduct"; private final static String PROPERTY_NAME_X_BAND = "xBand"; private final static String PROPERTY_NAME_Y_BAND = "yBand"; private HashSet<String> names = new HashSet<>(); private AbstractButton refreshButton; public RefreshActionEnabler(AbstractButton rb, String... componentNames) { for(String name:componentNames){ names.add(name); } refreshButton = rb; } @Override public void propertyChange(PropertyChangeEvent evt) { if (names.contains(evt.getPropertyName())) { if(evt.getPropertyName().equals(PROPERTY_NAME_USE_ROI_MASK) && evt.getNewValue().equals(true) && ((PropertyContainer)evt.getSource()).getProperty(PROPERTY_NAME_ROI_MASK).getValue()==null){ return; } else if(evt.getPropertyName().equals(PROPERTY_NAME_NUM_BINS) && evt.getOldValue().equals(evt.getNewValue())){ return; } else if(evt.getPropertyName().equals(PROPERTY_NAME_AUTO_MIN_MAX) && evt.getNewValue().equals(false)){ return; } else if(evt.getPropertyName().equals(PROPERTY_NAME_MIN) && (evt.getOldValue().equals(evt.getNewValue()) || ((PropertyContainer)evt.getSource()).getProperty(PROPERTY_NAME_AUTO_MIN_MAX).getValue().equals(true))){ return; } else if(evt.getPropertyName().equals(PROPERTY_NAME_MAX) && (evt.getOldValue().equals(evt.getNewValue()) || ((PropertyContainer)evt.getSource()).getProperty(PROPERTY_NAME_AUTO_MIN_MAX).getValue().equals(true))){ return; } else if(evt.getPropertyName().equals(PROPERTY_NAME_X_PRODUCT) && ((PropertyContainer)evt.getSource()).getProperty(PROPERTY_NAME_Y_PRODUCT).getValue()==null){ return; } else if(evt.getPropertyName().equals(PROPERTY_NAME_Y_PRODUCT) && ((PropertyContainer)evt.getSource()).getProperty(PROPERTY_NAME_X_PRODUCT).getValue()==null){ return; } else if(evt.getPropertyName().equals(PROPERTY_NAME_X_BAND) && ((PropertyContainer)evt.getSource()).getProperty(PROPERTY_NAME_Y_BAND).getValue()==null){ return; } else if(evt.getPropertyName().equals(PROPERTY_NAME_Y_BAND) && ((PropertyContainer)evt.getSource()).getProperty(PROPERTY_NAME_X_BAND).getValue()==null){ return; } refreshButton.setEnabled(true); } } }