// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.czechaddress.gui.utils; import javax.swing.ImageIcon; import org.openstreetmap.josm.data.osm.Node; import org.openstreetmap.josm.data.osm.OsmPrimitive; import org.openstreetmap.josm.data.osm.Relation; import org.openstreetmap.josm.data.osm.Way; import org.openstreetmap.josm.plugins.czechaddress.addressdatabase.AddressElement; import org.openstreetmap.josm.plugins.czechaddress.addressdatabase.House; import org.openstreetmap.josm.plugins.czechaddress.intelligence.Reasoner; import org.openstreetmap.josm.plugins.czechaddress.proposal.AddKeyValueProposal; import org.openstreetmap.josm.plugins.czechaddress.proposal.KeyValueChangeProposal; import org.openstreetmap.josm.plugins.czechaddress.proposal.ProposalContainer; import org.openstreetmap.josm.plugins.czechaddress.proposal.RemoveKeyProposal; import org.openstreetmap.josm.tools.ImageProvider; /** * Helper for getting icons and texts for {@code Universal*} renderers. * * @author Radomír Černoch, radomir.cernoch@gmail.com */ public abstract class UniversalRenderer { private static final ImageIcon iconAdd = ImageProvider.get("actions", "add.png"); private static final ImageIcon iconEdit = ImageProvider.get("actions", "edit.png"); private static final ImageIcon iconRemove = ImageProvider.get("actions", "remove.png"); private static final ImageIcon nodeIcon = ImageProvider.get("data/node.png"); private static final ImageIcon wayIcon = ImageProvider.get("data/way.png"); private static final ImageIcon relationIcon = ImageProvider.get("data/relation.png"); private static final ImageIcon envelopeNormIcon = ImageProvider.get("envelope-closed-small.png"); private static final ImageIcon envelopeStarIcon = ImageProvider.get("envelope-closed-star-small.png"); private static final ImageIcon envelopeExclIcon = ImageProvider.get("envelope-closed-exclamation-small.png"); public static ImageIcon getIcon(Object value) { if (value instanceof AddKeyValueProposal) return iconAdd; else if (value instanceof KeyValueChangeProposal) return iconEdit; else if (value instanceof RemoveKeyProposal) return iconRemove; if (value instanceof House) { House house = (House) value; if (Reasoner.getInstance().inConflict(house)) return envelopeExclIcon; if (Reasoner.getInstance().translate(house) == null) return envelopeStarIcon; return envelopeNormIcon; } else if (value instanceof Node) return nodeIcon; else if (value instanceof Relation) return relationIcon; else if (value instanceof Way) // return ((Way) value).isClosed() ? closedWayIcon : wayIcon; return wayIcon; return null; } public static String getText(Object value) { if (value instanceof ProposalContainer) value = ((ProposalContainer) value).getTarget(); if (value instanceof AddressElement) return ((AddressElement) value).getName(); if (value instanceof OsmPrimitive) return AddressElement.getName(value); if (value == null) return ""; return value.toString(); } }