001    // License: GPL. For details, see LICENSE file.
002    package org.openstreetmap.josm.gui.preferences.projection;
003    
004    import static org.openstreetmap.josm.tools.I18n.tr;
005    
006    import java.util.Collection;
007    import java.util.Collections;
008    
009    public class UTM_France_DOM_ProjectionChoice extends ListProjectionChoice {
010    
011        private final static String FortMarigotName = tr("Guadeloupe Fort-Marigot 1949");
012        private final static String SainteAnneName = tr("Guadeloupe Ste-Anne 1948");
013        private final static String MartiniqueName = tr("Martinique Fort Desaix 1952");
014        private final static String Reunion92Name = tr("Reunion RGR92");
015        private final static String Guyane92Name = tr("Guyane RGFG95");
016        private final static String[] utmGeodesicsNames = { FortMarigotName, SainteAnneName, MartiniqueName, Reunion92Name, Guyane92Name};
017    
018        private final static Integer FortMarigotEPSG = 2969;
019        private final static Integer SainteAnneEPSG = 2970;
020        private final static Integer MartiniqueEPSG = 2973;
021        private final static Integer ReunionEPSG = 2975;
022        private final static Integer GuyaneEPSG = 2972;
023        private final static Integer[] utmEPSGs = { FortMarigotEPSG, SainteAnneEPSG, MartiniqueEPSG, ReunionEPSG, GuyaneEPSG };
024    
025        public UTM_France_DOM_ProjectionChoice() {
026            super(tr("UTM France (DOM)"), "core:utmfrancedom", utmGeodesicsNames, tr("UTM Geodesic system"));
027        }
028    
029        @Override
030        protected String indexToZone(int index) {
031            return Integer.toString(index + 1);
032        }
033    
034        @Override
035        protected int zoneToIndex(String zone) {
036            try {
037                return Integer.parseInt(zone) - 1;
038            } catch(NumberFormatException e) {}
039            return defaultIndex;
040        }
041    
042        @Override
043        public String getProjectionName() {
044            return utmGeodesicsNames[index];
045        }
046    
047        @Override
048        public String getCurrentCode() {
049            return "EPSG:" + utmEPSGs[index];
050        }
051    
052        @Override
053        public String[] allCodes() {
054            String[] res = new String[utmEPSGs.length];
055            for (int i=0; i<utmEPSGs.length; ++i) {
056                res[i] = "EPSG:" + utmEPSGs[i];
057            }
058            return res;
059        }
060    
061        @Override
062        public Collection<String> getPreferencesFromCode(String code) {
063            for (int i=0; i < utmEPSGs.length; i++ )
064                if (("EPSG:" + utmEPSGs[i]).equals(code))
065                    return Collections.singleton(Integer.toString(i+1));
066            return null;
067        }
068    
069    }