source: josm/trunk/src/org/openstreetmap/josm/gui/preferences/projection/LambertCC9ZonesProjectionChoice.java@ 12280

Last change on this file since 12280 was 12280, checked in by Don-vip, 8 years ago

drop remaining png extensions from few icons in java code so we can provide svg replacements in the future

  • Property svn:eol-style set to native
File size: 3.4 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.preferences.projection;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.awt.event.ActionListener;
7import java.util.Collection;
8import java.util.Collections;
9
10import javax.swing.JLabel;
11import javax.swing.JPanel;
12
13import org.openstreetmap.josm.Main;
14import org.openstreetmap.josm.tools.GBC;
15import org.openstreetmap.josm.tools.ImageProvider;
16
17/**
18 * ProjectionChoice for Lambert CC (9 zones, EPSG:3942-3950).
19 * <p>
20 * @see <a href="https://fr.wikipedia.org/wiki/Projection_conique_conforme_de_Lambert#Lambert_zone_CC">Lambert CC</a>
21 */
22public class LambertCC9ZonesProjectionChoice extends ListProjectionChoice {
23
24 private static String[] lambert9zones = {
25 tr("{0} ({1} to {2} degrees)", 1, 41, 43),
26 tr("{0} ({1} to {2} degrees)", 2, 42, 44),
27 tr("{0} ({1} to {2} degrees)", 3, 43, 45),
28 tr("{0} ({1} to {2} degrees)", 4, 44, 46),
29 tr("{0} ({1} to {2} degrees)", 5, 45, 47),
30 tr("{0} ({1} to {2} degrees)", 6, 46, 48),
31 tr("{0} ({1} to {2} degrees)", 7, 47, 49),
32 tr("{0} ({1} to {2} degrees)", 8, 48, 50),
33 tr("{0} ({1} to {2} degrees)", 9, 49, 51)
34 };
35
36 /**
37 * Constructs a new {@code LambertCC9ZonesProjectionChoice}.
38 */
39 public LambertCC9ZonesProjectionChoice() {
40 super(tr("Lambert CC9 Zone (France)"), /* NO-ICON */ "core:lambertcc9", lambert9zones, tr("Lambert CC Zone"));
41 }
42
43 private static class LambertCC9CBPanel extends CBPanel {
44 LambertCC9CBPanel(String[] entries, int initialIndex, String label, ActionListener listener) {
45 super(entries, initialIndex, label, listener);
46 this.add(new JLabel(ImageProvider.get("data/projection", "LambertCC9Zones")), GBC.eol().fill(GBC.HORIZONTAL));
47 this.add(GBC.glue(1, 1), GBC.eol().fill(GBC.BOTH));
48 }
49 }
50
51 @Override
52 public JPanel getPreferencePanel(ActionListener listener) {
53 return new LambertCC9CBPanel(entries, index, label, listener);
54 }
55
56 @Override
57 public String getCurrentCode() {
58 return "EPSG:" + Integer.toString(3942+index); //CC42 is EPSG:3942 (up to EPSG:3950 for CC50)
59 }
60
61 @Override
62 public String getProjectionName() {
63 return tr("Lambert CC9 Zone (France)");
64 }
65
66 @Override
67 public String[] allCodes() {
68 String[] codes = new String[9];
69 for (int zone = 0; zone < 9; zone++) {
70 codes[zone] = "EPSG:" + (3942 + zone);
71 }
72 return codes;
73 }
74
75 @Override
76 public Collection<String> getPreferencesFromCode(String code) {
77 //zone 1=CC42=EPSG:3942 up to zone 9=CC50=EPSG:3950
78 if (code.startsWith("EPSG:39") && code.length() == 9) {
79 try {
80 String zonestring = code.substring(5, 9);
81 int zoneval = Integer.parseInt(zonestring)-3942;
82 if (zoneval >= 0 && zoneval <= 8)
83 return Collections.singleton(String.valueOf(zoneval+1));
84 } catch (NumberFormatException ex) {
85 Main.warn(ex);
86 }
87 }
88 return null;
89 }
90
91 @Override
92 protected String indexToZone(int idx) {
93 return Integer.toString(idx + 1);
94 }
95
96 @Override
97 protected int zoneToIndex(String zone) {
98 try {
99 return Integer.parseInt(zone) - 1;
100 } catch (NumberFormatException e) {
101 Main.warn(e);
102 }
103 return defaultIndex;
104 }
105
106}
Note: See TracBrowser for help on using the repository browser.