Ignore:
Timestamp:
2011-01-08T01:04:23+01:00 (11 years ago)
Author:
Upliner
Message:

Identify projections in offset bookmarks by EPSG codes, bugfixes in getPreferencesFromCode() functions as they're critical now.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java

    r3775 r3779  
    1414import org.openstreetmap.josm.data.coor.LatLon;
    1515import org.openstreetmap.josm.data.projection.Projection;
     16import org.openstreetmap.josm.data.projection.ProjectionInfo;
    1617import org.openstreetmap.josm.gui.layer.ImageryLayer;
    1718
     
    2627
    2728    public boolean isUsable(ImageryLayer layer) {
    28         return Main.proj.getClass() == proj.getClass() &&
    29         layer.getInfo().getName().equals(layerName);
     29        if (proj == null) return false;
     30        if (!Main.proj.toCode().equals(proj.toCode())) return false;
     31        return layer.getInfo().getName().equals(layerName);
    3032    }
    3133
     
    4648    public OffsetBookmark(Collection<String> list) {
    4749        ArrayList<String> array = new ArrayList<String>(list);
    48         String projectionName = array.get(0);
    49         for (Projection proj : Projection.allProjections) {
    50             if (proj.getCacheDirectoryName().equals(projectionName)) {
    51                 this.proj = proj;
    52                 break;
     50        String projectionStr = array.get(0);
     51        proj = ProjectionInfo.getProjectionByCode(projectionStr);
     52        if (proj == null) {
     53            for (Projection proj : Projection.allProjections) {
     54                if (proj.getCacheDirectoryName().equals(projectionStr)) {
     55                    this.proj = proj;
     56                    break;
     57                }
    5358            }
    5459        }
    55         if (this.proj == null)
    56             throw new IllegalStateException(tr("Projection ''{0}'' not found", projectionName));
    5760        this.layerName = array.get(1);
    5861        this.name = array.get(2);
     
    6366            this.centerY = Double.valueOf(array.get(6));
    6467        }
     68        if (proj == null) {
     69            System.err.println(tr("Projection ''{0}'' is not found, bookmark ''{1}'' is not usable", projectionStr, name));
     70        }
    6571    }
    6672
    6773    public ArrayList<String> getInfoArray() {
    68         ArrayList<String> res = new ArrayList<String>(5);
    69         res.add(proj.getCacheDirectoryName()); // we should use non-localized projection name
     74        ArrayList<String> res = new ArrayList<String>(7);
     75        if (proj != null) {
     76            res.add(proj.toCode());
     77        } else {
     78            res.add("");
     79        }
    7080        res.add(layerName);
    7181        res.add(name);
Note: See TracChangeset for help on using the changeset viewer.