private JPanel _audioListPanel = null;
private JList<String> _audioList = null;
private MediaListModel _audioListModel = null;
+ // Segments
+ private JPanel _segmentListPanel = null;
+ private JList<String> _segmentList = null;
+ private SegmentListModel _segmentListModel = null;
// scrollbar interval
private static final int SCROLLBAR_INTERVAL = 50;
// don't add audio list either
_listsPanel.setAlignmentX(Component.LEFT_ALIGNMENT);
+ // Segment list
+ _segmentListModel = new SegmentListModel(_trackInfo.getTrack());
+ _segmentList = new JList<String>(_segmentListModel);
+ _segmentList.addListSelectionListener(new ListSelectionListener() {
+ public void valueChanged(ListSelectionEvent e)
+ {
+ if (!e.getValueIsAdjusting()) {
+ selectSegment(_segmentList.getSelectedIndex());
+ }
+ }});
+ _segmentListPanel = makeListPanel("details.lists.segments", _segmentList);
+
// add the controls to the main panel
mainPanel.add(trackDetailsPanel);
mainPanel.add(Box.createVerticalStrut(5));
_trackInfo.selectAudio(inIndex);
}
+ /**
+ *
+ */
+ private void selectSegment(int inIndex)
+ {
+ if (inIndex >= 0) {
+ int start = _segmentListModel.getSegmentStart(inIndex);
+ int end = _segmentListModel.getSegmentEnd(inIndex);
+ _trackInfo.getSelection().selectRange(start, end);
+ }
+ }
+
/**
* Select the specified waypoint
* @param inWaypointIndex index of selected waypoint
_ignoreScrollEvents = false;
// update waypoints and photos if necessary
- if ((inUpdateType |
+ if ((inUpdateType &
(DataSubscriber.DATA_ADDED_OR_REMOVED | DataSubscriber.DATA_EDITED | DataSubscriber.WAYPOINTS_MODIFIED)) > 0)
{
_waypointListModel.fireChanged();
_waypointList.clearSelection();
}
}
+ if ((inUpdateType & (DataSubscriber.DATA_ADDED_OR_REMOVED | DataSubscriber.DATA_EDITED)) > 0)
+ {
+ _segmentListModel.fireChanged();
+ if (_segmentListModel.getSize() > 1)
+ {
+ _listsPanel.add(_segmentListPanel);
+ }
+ }
+ // Deselect segment if selection goes beyond the selected
+ // segment
+ if ((inUpdateType & DataSubscriber.SELECTION_CHANGED) > 0)
+ {
+ int segmentSelected = _segmentList.getSelectedIndex();
+ if (segmentSelected >= 0)
+ {
+ if (_trackInfo.getSelection().getStart() != _segmentListModel.getSegmentStart(segmentSelected) ||
+ _trackInfo.getSelection().getEnd() != _segmentListModel.getSegmentEnd(segmentSelected))
+ {
+ _segmentList.clearSelection();
+ }
+ }
+ }
// Hide photo list if no photos loaded, same for audio
redrawLists(_photoListModel.getSize() > 0, _audioListModel.getSize() > 0);
_listsPanel.removeAll();
_listsPanel.setLayout(new GridLayout(0, 1));
_listsPanel.add(_waypointListPanel);
+ _listsPanel.add(_segmentListPanel);
if (inShowPhotos) {
_listsPanel.add(_photoListPanel);
}