package org.esa.snap.rcp.colormanip;
import org.esa.snap.core.datamodel.ColorPaletteDef;
import org.esa.snap.core.util.SystemUtils;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
class ColorPaletteManager {
static ColorPaletteManager manager = new ColorPaletteManager();
private List<ColorPaletteDef> cpdList;
private List<String> cpdNames;
public static ColorPaletteManager getDefault() {
return manager;
}
ColorPaletteManager() {
cpdList = new ArrayList<>();
cpdNames = new ArrayList<>();
}
public void loadAvailableColorPalettes(File palettesDir) {
cpdNames.clear();
cpdList.clear();
final File[] files = palettesDir.listFiles((dir, name) -> {
return name.toLowerCase().endsWith(".cpd");
});
if (files != null) {
for (File file : files) {
try {
ColorPaletteDef newCpd = ColorPaletteDef.loadColorPaletteDef(file);
cpdList.add(newCpd);
cpdNames.add(file.getName());
} catch (IOException e) {
final Logger logger = SystemUtils.LOG;
logger.warning("Unable to load color palette definition from file '" + file.getAbsolutePath() + "'");
logger.log(Level.INFO, e.getMessage(), e);
}
}
}
}
public List<ColorPaletteDef> getColorPaletteDefList() {
return Collections.unmodifiableList(cpdList);
}
public String getNameFor(ColorPaletteDef cpdForRaster) {
for (int i = 0; i < cpdList.size(); i++) {
ColorPaletteDef colorPaletteDef = cpdList.get(i);
if (colorPaletteDef == cpdForRaster)
return cpdNames.get(i);
}
return null;
}
}