001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.preferences.projection;
003
004import static org.openstreetmap.josm.tools.I18n.tr;
005
006import java.util.Collection;
007import java.util.Collections;
008
009import org.openstreetmap.josm.Main;
010
011public class GaussKruegerProjectionChoice extends ListProjectionChoice {
012
013    private static String[] zones = {"2", "3", "4", "5"};
014
015    /**
016     * Constructs a new {@code GaussKruegerProjectionChoice}.
017     */
018    public GaussKruegerProjectionChoice() {
019        super(tr("Gau\u00DF-Kr\u00FCger"), /* NO-ICON */ "core:gauss-krueger", zones, tr("GK Zone"));
020    }
021
022    @Override
023    public String getCurrentCode() {
024        return "EPSG:"+Integer.toString(31466 + index);
025    }
026
027    @Override
028    protected String indexToZone(int index) {
029        return Integer.toString(index + 2);
030    }
031
032    @Override
033    protected int zoneToIndex(String zone) {
034        try {
035            return Integer.parseInt(zone) - 2;
036        } catch (NumberFormatException e) {
037            Main.warn(e);
038        }
039        return defaultIndex;
040    }
041
042    @Override
043    public String[] allCodes() {
044        String[] codes = new String[4];
045        for (int zone = 2; zone <= 5; zone++) {
046            codes[zone-2] = "EPSG:" + (31464 + zone);
047        }
048        return codes;
049    }
050
051    @Override
052    public Collection<String> getPreferencesFromCode(String code) {
053        //zone 2 = EPSG:31466 up to zone 5 = EPSG:31469
054        for (int zone = 2; zone <= 5; zone++) {
055            String epsg = "EPSG:" + (31464 + zone);
056            if (epsg.equals(code))
057                return Collections.singleton(String.valueOf(zone));
058        }
059        return null;
060    }
061
062    @Override
063    public String getProjectionName() {
064        return tr("Gau\u00DF-Kr\u00FCger Zone {0}", index + 2);
065    }
066
067}