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

Last change on this file was 16916, checked in by simon04, 6 years ago

see #19698 - Java Warnings, PMD

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