From: Andreas Putzo <andreas@putzo.net>
Subject: User openstreetmap-map-icons-* packages
Last-Update: 2011-02-20
Forwarded: not-needed

Map icons in Debian are not distributed in Josm package, but in
the openstreetmap-map-icons-* packages, so they can be used also by other
applications. This patch points josm to the shared directories.

---
 src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java    |   11 ++++--
 src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java      |   14 ++++++--
 src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java |   17 ++++++++--
 3 files changed, 33 insertions(+), 9 deletions(-)

--- a/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java
@@ -191,14 +191,19 @@ public final class MapPaintStyles {
         }
 
         if (Main.pref.getBoolean("mappaint.icon.enable-defaults", true)) {
-            /* don't prefix icon path, as it should be generic */
-            dirs.add("resource://images/styles/standard/");
-            dirs.add("resource://images/styles/");
+            addDebianDirs(dirs);
         }
 
         return dirs;
     }
 
+    public static void addDebianDirs(Collection<String> f) {
+        f.add("/usr/share/icons/openstreetmap/classic.small");
+        f.add("/usr/share/icons/openstreetmap/square.small");
+        f.add("/usr/share/icons/openstreetmap/classic.big");
+        f.add("/usr/share/icons/openstreetmap/square.big");
+    }
+
     public static void readFromPreferences() {
         styles.clear();
 
--- a/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
+++ b/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
@@ -42,6 +42,7 @@ import org.openstreetmap.josm.gui.Extend
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
 import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
 import org.openstreetmap.josm.gui.preferences.ToolbarPreferences;
 import org.openstreetmap.josm.gui.tagging.TaggingPresetItems.Link;
 import org.openstreetmap.josm.gui.tagging.TaggingPresetItems.PresetLink;
@@ -147,8 +148,15 @@ public class TaggingPreset extends Abstr
      * and the 16x16 icons for SMALL_ICON.
      */
     public void setIcon(final String iconName) {
-        ImageProvider imgProv = new ImageProvider(iconName);
-        final Collection<String> s = Main.pref.getCollection("taggingpreset.icon.sources", null);
+        LinkedList<String> s = new LinkedList<String>();
+        MapPaintStyles.addDebianDirs(s);
+        final String realIconName;
+        if (iconName.startsWith("styles/standard/")) {
+            realIconName = iconName.replace("styles/standard/", "");
+        } else {
+            realIconName = iconName;
+        }
+        ImageProvider imgProv = new ImageProvider(realIconName);
         imgProv.setDirs(s);
         imgProv.setId("presets");
         imgProv.setArchive(TaggingPresetReader.getZipIcons());
@@ -165,7 +173,7 @@ public class TaggingPreset extends Abstr
                         }
                     });
                 } else {
-                    Main.warn("Could not get presets icon " + iconName);
+                    Main.warn("Could not get presets icon " + realIconName);
                 }
             }
         });
--- a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java
+++ b/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java
@@ -50,6 +50,7 @@ import org.openstreetmap.josm.data.osm.O
 import org.openstreetmap.josm.data.osm.OsmUtils;
 import org.openstreetmap.josm.data.osm.Tag;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
+import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionItemPriority;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList;
@@ -1514,12 +1515,22 @@ public final class TaggingPresetItems {
     }
 
     protected static ImageIcon loadImageIcon(String iconName, File zipIcons, Integer maxSize) {
-        final Collection<String> s = Main.pref.getCollection("taggingpreset.icon.sources", null);
-        ImageProvider imgProv = new ImageProvider(iconName).setDirs(s).setId("presets").setArchive(zipIcons).setOptional(true);
+        LinkedList<String> s = new LinkedList<String>();
+        MapPaintStyles.addDebianDirs(s);
+        String realIconName = iconName;
+        if (iconName.startsWith("styles/standard/")) {
+            realIconName = iconName.replace("styles/standard/", "");
+        }
+        ImageProvider imgProv = new ImageProvider(realIconName).setDirs(s).setId("presets").setArchive(zipIcons).setOptional(true);
         if (maxSize != null) {
             imgProv.setMaxSize(maxSize);
         }
-        return imgProv.get();
+        ImageIcon icon = imgProv.get();
+        if (icon == null) {
+            System.out.println("Could not get presets icon " + realIconName);
+            icon = new ImageIcon(realIconName);
+        }
+        return icon;
     }
 
     protected static Integer parseInteger(String str) {
