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;
{
_currentPoint = -1;
deselectRange();
+ deselectPhoto();
}
}
+ /**
+ * 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()
+ {
+ // System.out.println("Current photo index = " + _currentPhotoIndex);
+ return _currentPhotoIndex;
+ }
+
+
/**
* Check that the selection still makes sense
* and fire update message to listeners
*/
private void check()
{
- if (_track != null && _track.getNumPoints() > 0)
+ if (_track != null)
{
- int maxIndex = _track.getNumPoints() - 1;
- if (_currentPoint > maxIndex)
+ if (_track.getNumPoints() > 0)
{
- _currentPoint = maxIndex;
- }
- if (_endIndex > maxIndex)
- {
- _endIndex = maxIndex;
+ int maxIndex = _track.getNumPoints() - 1;
+ if (_currentPoint > maxIndex)
+ {
+ _currentPoint = maxIndex;
+ }
+ if (_endIndex > maxIndex)
+ {
+ _endIndex = maxIndex;
+ }
+ if (_startIndex > maxIndex)
+ {
+ _startIndex = maxIndex;
+ }
}
- if (_startIndex > maxIndex)
+ else
{
- _startIndex = maxIndex;
+ // track is empty, clear selections
+ _currentPoint = _startIndex = _endIndex = -1;
}
}
_broker.informSubscribers();