X-Git-Url: https://gitweb.fperrin.net/?a=blobdiff_plain;f=tim%2Fprune%2Fgui%2FSelectorDisplay.java;h=ed244d0bdbff57816492f5d23d7a6407e4151ce4;hb=140e9d165f85c3d4f0435a311e091209313faa2a;hp=203db4527412f79a5110c8d46905cddc1afc52aa;hpb=da0b1f449260a0b4a94318006382a9039726ef3e;p=GpsPrune.git diff --git a/tim/prune/gui/SelectorDisplay.java b/tim/prune/gui/SelectorDisplay.java index 203db45..ed244d0 100644 --- a/tim/prune/gui/SelectorDisplay.java +++ b/tim/prune/gui/SelectorDisplay.java @@ -16,14 +16,13 @@ import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollBar; import javax.swing.JScrollPane; +import javax.swing.ListSelectionModel; import javax.swing.border.EtchedBorder; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import tim.prune.DataSubscriber; import tim.prune.I18nManager; -import tim.prune.data.DataPoint; -import tim.prune.data.Photo; import tim.prune.data.TrackInfo; /** @@ -100,6 +99,7 @@ public class SelectorDisplay extends GenericDisplay _waypointListModel = new WaypointListModel(_trackInfo.getTrack()); _waypointList = new JList(_waypointListModel); _waypointList.setVisibleRowCount(NUM_LIST_ENTRIES); + _waypointList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); _waypointList.addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { @@ -114,10 +114,13 @@ public class SelectorDisplay extends GenericDisplay _photoListModel = new PhotoListModel(_trackInfo.getPhotoList()); _photoList = new JList(_photoListModel); _photoList.setVisibleRowCount(NUM_LIST_ENTRIES); + _photoList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); _photoList.addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { - if (!e.getValueIsAdjusting()) selectPhoto(_photoList.getSelectedIndex()); + if (!e.getValueIsAdjusting()) { + selectPhoto(_photoList.getSelectedIndex()); + } }}); JPanel photoListPanel = new JPanel(); photoListPanel.setLayout(new BorderLayout()); @@ -149,7 +152,7 @@ public class SelectorDisplay extends GenericDisplay { if (_track != null && !_ignoreScrollEvents) { - _trackInfo.getSelection().selectPoint(inValue); + _trackInfo.selectPoint(inValue); } } @@ -217,7 +220,7 @@ public class SelectorDisplay extends GenericDisplay } else { - _scroller.setMaximum(_track.getNumPoints() + SCROLLBAR_INTERVAL); + _scroller.setMaximum(_track.getNumPoints() -1 + SCROLLBAR_INTERVAL); if (currentPointIndex >= 0) _scroller.setValue(currentPointIndex); _scroller.setEnabled(true); @@ -239,29 +242,27 @@ public class SelectorDisplay extends GenericDisplay if (_waypointList.getSelectedIndex() >= 0) { if (_trackInfo.getCurrentPoint() == null + || _waypointList.getSelectedIndex() >= _waypointListModel.getSize() || !_waypointListModel.getWaypoint(_waypointList.getSelectedIndex()).equals(_trackInfo.getCurrentPoint())) { // point is selected in list but different from current point - deselect _waypointList.clearSelection(); } } - // Do the same for the photos - if (_photoList.getSelectedIndex() >= 0) + // Make sure correct photo is selected + if (_photoListModel.getSize() > 0) { - DataPoint trackPoint = _trackInfo.getCurrentPoint(); - Photo selectedPhoto = _photoListModel.getPhoto(_photoList.getSelectedIndex()); - // Get selected Photo, if it's still there - DataPoint photoPoint = null; - if (selectedPhoto != null) { - photoPoint = _photoListModel.getPhoto(_photoList.getSelectedIndex()).getDataPoint(); - } - // Compare selected photo with selected point - if ( (photoPoint != null && (trackPoint == null || !photoPoint.equals(trackPoint))) - || (_trackInfo.getSelection().getCurrentPhotoIndex() < 0) ) + int photoIndex = _trackInfo.getSelection().getCurrentPhotoIndex(); + int listSelection = _photoList.getSelectedIndex(); + // Change listbox selection if indexes not equal + if (listSelection != photoIndex) { - // photo is selected in list but different from current point - deselect - _photoList.clearSelection(); - _trackInfo.getSelection().deselectPhoto(); + if (photoIndex < 0) { + _photoList.clearSelection(); + } + else { + _photoList.setSelectedIndex(photoIndex); + } } } }