/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package org.pepsoft.worldpainter.importing;
import org.pepsoft.util.IconUtils;
import org.pepsoft.worldpainter.ColourScheme;
import org.pepsoft.worldpainter.MixedMaterial;
import org.pepsoft.worldpainter.biomeschemes.CustomBiome;
import org.pepsoft.worldpainter.layers.CustomLayer;
import javax.swing.*;
import javax.swing.tree.DefaultTreeCellRenderer;
import java.awt.*;
import java.util.IdentityHashMap;
import java.util.Map;
/**
*
* @author Pepijn Schmitz
*/
public class CustomItemsTreeCellRenderer extends DefaultTreeCellRenderer {
public CustomItemsTreeCellRenderer(ColourScheme colourScheme) {
this.colourScheme = colourScheme;
}
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
if ((value != null) && (! (value instanceof String))) {
Icon icon = icons.get(value);
String label = labels.get(value);
if (icon == null) {
if (value instanceof CustomLayer) {
icon = new ImageIcon(((CustomLayer) value).getIcon());
label = ((CustomLayer) value).getName();
} else if (value instanceof MixedMaterial) {
icon = new ImageIcon(((MixedMaterial) value).getIcon(colourScheme));
label = ((MixedMaterial) value).getName();
} else if (value instanceof CustomBiome) {
icon = IconUtils.createScaledColourIcon(((CustomBiome) value).getColour());
label = ((CustomBiome) value).getName();
}
icons.put(value, icon);
labels.put(value, label);
}
setIcon(icon);
setText(label);
}
return this;
}
private final ColourScheme colourScheme;
private final Map<Object, Icon> icons = new IdentityHashMap<>();
private final Map<Object, String> labels = new IdentityHashMap<>();
}