]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/gui/DetailsDisplay.java
Version 10, May 2010
[GpsPrune.git] / tim / prune / gui / DetailsDisplay.java
index 5e31a4e97aee5086ba60d184bc69e6e6d276d0be..9cfd7cee703d9039bc4d520ab2888b0de89100ed 100644 (file)
@@ -22,6 +22,7 @@ import tim.prune.DataSubscriber;
 import tim.prune.FunctionLibrary;
 import tim.prune.GenericFunction;
 import tim.prune.I18nManager;
+import tim.prune.UpdateMessageBroker;
 import tim.prune.config.Config;
 import tim.prune.data.Altitude;
 import tim.prune.data.Coordinate;
@@ -214,8 +215,8 @@ public class DetailsDisplay extends GenericDisplay
                _distUnitsDropdown.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e)
                        {
-                               dataUpdated(DataSubscriber.UNITS_CHANGED);
                                Config.setConfigBoolean(Config.KEY_METRIC_UNITS, _distUnitsDropdown.getSelectedIndex() == 0);
+                               UpdateMessageBroker.informSubscribers(DataSubscriber.UNITS_CHANGED);
                        }
                });
                lowerPanel.add(_distUnitsDropdown);
@@ -405,7 +406,12 @@ public class DetailsDisplay extends GenericDisplay
                        default: // just as it was
                                coord = inCoordinate.output(Coordinate.FORMAT_NONE);
                }
-               return inPrefix + coord;
+               // Fix broken degree signs (due to unicode mangling)
+               final char brokenDeg = 65533;
+               if (coord.indexOf(brokenDeg) >= 0) {
+                       coord = coord.replaceAll(String.valueOf(brokenDeg), "\u00B0");
+               }
+               return inPrefix + restrictDP(coord);
        }
 
 
@@ -430,6 +436,25 @@ public class DetailsDisplay extends GenericDisplay
                return _distanceFormatter.format(inDist);
        }
 
+       /**
+        * Restrict the given coordinate to a limited number of decimal places for display
+        * @param inCoord coordinate string
+        * @return chopped string
+        */
+       private static String restrictDP(String inCoord)
+       {
+               final int DECIMAL_PLACES = 7;
+               if (inCoord == null) return "";
+               final int dotPos = Math.max(inCoord.lastIndexOf('.'), inCoord.lastIndexOf(','));
+               if (dotPos >= 0) {
+                       final int chopPos = dotPos + DECIMAL_PLACES;
+                       if (chopPos < (inCoord.length()-1)) {
+                               return inCoord.substring(0, chopPos);
+                       }
+               }
+               return inCoord;
+       }
+
        /**
         * Create a little button for rotating the current photo
         * @param inIcon icon to use (from IconManager)