]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/data/Selection.java
Version 4, January 2008
[GpsPrune.git] / tim / prune / data / Selection.java
index f09088dc218e6f498cef7d78a498a5995e019c02..b26c11ff7bbca551bbc4f6574dc4123259512fc0 100644 (file)
@@ -1,5 +1,6 @@
 package tim.prune.data;
 
+import tim.prune.DataSubscriber;
 import tim.prune.UpdateMessageBroker;
 
 /**
@@ -13,6 +14,7 @@ public class Selection
        private int _currentPoint = -1;
        private boolean _valid = false;
        private int _startIndex = -1, _endIndex = -1;
+       private int _currentPhotoIndex = -1;
        private IntegerRange _altitudeRange = null;
        private int _climb = -1, _descent = -1;
        private int _altitudeFormat = Altitude.FORMAT_NONE;
@@ -242,12 +244,12 @@ public class Selection
 
 
        /**
-        * @param inFormat distance units to use, from class Distance
+        * @param inUnits distance units to use, from class Distance
         * @return distance of Selection in specified units
         */
        public double getDistance(int inUnits)
        {
-               return Distance.convertRadians(_angDistance, inUnits);
+               return Distance.convertRadiansToDistance(_angDistance, inUnits);
        }
 
 
@@ -258,6 +260,7 @@ public class Selection
        {
                _currentPoint = -1;
                deselectRange();
+               deselectPhoto();
        }
 
 
@@ -377,6 +380,46 @@ public class Selection
        }
 
 
+       /**
+        * Deselect photo
+        */
+       public void deselectPhoto()
+       {
+               _currentPhotoIndex = -1;
+               check();
+       }
+
+
+       /**
+        * Select the specified photo and point
+        * @param inPhotoIndex index of selected photo in PhotoList
+        * @param inPointIndex index of selected point
+        */
+       public void selectPhotoAndPoint(int inPhotoIndex, int inPointIndex)
+       {
+               _currentPhotoIndex = inPhotoIndex;
+               if (inPointIndex > -1)
+               {
+                       // select associated point, if any
+                       selectPoint(inPointIndex);
+               }
+               else
+               {
+                       // Check if not already done
+                       check();
+               }
+       }
+
+
+       /**
+        * @return currently selected photo index
+        */
+       public int getCurrentPhotoIndex()
+       {
+               return _currentPhotoIndex;
+       }
+
+
        /**
         * Check that the selection still makes sense
         * and fire update message to listeners
@@ -407,6 +450,6 @@ public class Selection
                                _currentPoint = _startIndex = _endIndex = -1;
                        }
                }
-               _broker.informSubscribers();
+               _broker.informSubscribers(DataSubscriber.SELECTION_CHANGED);
        }
 }