package org.openstreetmap.josm.gui.mappaint; import javax.swing.GrayFilter; import javax.swing.ImageIcon; import org.openstreetmap.josm.data.osm.Node; import org.openstreetmap.josm.data.osm.OsmPrimitive; import org.openstreetmap.josm.data.osm.visitor.paint.MapPaintSettings; import org.openstreetmap.josm.data.osm.visitor.paint.MapPainter; public class IconElemStyle extends ElemStyle { public ImageIcon icon; private ImageIcon disabledIcon; public boolean annotate; public IconElemStyle (IconElemStyle i, long maxScale, long minScale) { this.icon = i.icon; this.annotate = i.annotate; this.priority = i.priority; this.maxScale = maxScale; this.minScale = minScale; this.rules = i.rules; } public IconElemStyle() { init(); } public void init() { icon = null; priority = 0; annotate = true; } public ImageIcon getDisabledIcon() { if (disabledIcon != null) return disabledIcon; if (icon == null) return null; return disabledIcon = new ImageIcon(GrayFilter.createDisabledImage(icon.getImage())); } @Override public void paintPrimitive(OsmPrimitive primitive, MapPaintSettings settings, MapPainter painter, boolean selected) { if (painter.isShowIcons()) { Node n = (Node) primitive; String name = painter.isShowNames()?painter.getNodeName(n):null; painter.drawNodeIcon(n, (painter.isInactive() || n.isDisabled())?getDisabledIcon():icon, annotate, selected, name); } else { SimpleNodeElemStyle.INSTANCE.paintPrimitive(primitive, settings, painter, selected); } } }