X-Git-Url: https://gitweb.fperrin.net/?a=blobdiff_plain;f=tim%2Fprune%2Fsave%2FPointTypeSelector.java;h=ce7adeb823f244aca4a610d87e43c198d771bef5;hb=f35b6d628f68e3b5ef19965ad8988d0dd1eb8efa;hp=6dcd1eacd3dfc65861d15648f2a69e05aef08f97;hpb=112bb0c9b46894adca9a33ed8c99ea712b253185;p=GpsPrune.git diff --git a/tim/prune/save/PointTypeSelector.java b/tim/prune/save/PointTypeSelector.java index 6dcd1ea..ce7adeb 100644 --- a/tim/prune/save/PointTypeSelector.java +++ b/tim/prune/save/PointTypeSelector.java @@ -14,12 +14,15 @@ import tim.prune.data.TrackInfo; /** * GUI element to allow the selection of point types for saving, - * including three checkboxes for track points, waypoints, photo points + * including checkboxes for track points, waypoints, photo points, audio points + * and also a checkbox for the current selection */ public class PointTypeSelector extends JPanel { - /** Array of three checkboxes */ - private JCheckBox[] _checkboxes = new JCheckBox[3]; + /** Array of checkboxes */ + private JCheckBox[] _checkboxes = new JCheckBox[5]; + /** Grid panel for top row */ + private JPanel _gridPanel = null; /** @@ -39,22 +42,23 @@ public class PointTypeSelector extends JPanel private void createComponents() { setLayout(new BorderLayout()); - // Need JLabel to explain what it is add(new JLabel(I18nManager.getText("dialog.pointtype.desc")), BorderLayout.NORTH); // panel for the checkboxes - JPanel gridPanel = new JPanel(); - gridPanel.setLayout(new GridLayout(1, 3, 15, 3)); - final String[] keys = {"track", "waypoint", "photo"}; - for (int i=0; i<3; i++) + _gridPanel = new JPanel(); + _gridPanel.setLayout(new GridLayout(0, 3, 15, 3)); + final String[] keys = {"track", "waypoint", "photo", "audio"}; + for (int i=0; i<4; i++) { _checkboxes[i] = new JCheckBox(I18nManager.getText("dialog.pointtype." + keys[i])); - _checkboxes[i].setEnabled(true); _checkboxes[i].setSelected(true); - gridPanel.add(_checkboxes[i]); + if (i<3) {_gridPanel.add(_checkboxes[i]);} } - add(gridPanel, BorderLayout.CENTER); + add(_gridPanel, BorderLayout.CENTER); + _checkboxes[4] = new JCheckBox(I18nManager.getText("dialog.pointtype.selection")); + add(_checkboxes[4], BorderLayout.SOUTH); } + /** * Initialize the checkboxes from the given data * @param inTrackInfo TrackInfo object @@ -62,14 +66,22 @@ public class PointTypeSelector extends JPanel public void init(TrackInfo inTrackInfo) { // Get whether track has track points, waypoints, photos - boolean[] flags = {inTrackInfo.getTrack().hasTrackPoints(), + boolean[] dataFlags = {inTrackInfo.getTrack().hasTrackPoints(), inTrackInfo.getTrack().hasWaypoints(), - inTrackInfo.getPhotoList().getNumPhotos() > 0 + inTrackInfo.getPhotoList().getNumPhotos() > 0, + inTrackInfo.getAudioList().getNumAudios() > 0 }; + // Rearrange grid to just show the appropriate entries + final boolean[] showFlags = {true, true, dataFlags[2] || !dataFlags[3], dataFlags[3]}; + _gridPanel.removeAll(); + for (int i=0; i<4; i++) { + if (showFlags[i]) {_gridPanel.add(_checkboxes[i]);} + } // Enable or disable checkboxes according to data present - for (int i=0; i<3; i++) + for (int i=0; i<4; i++) { - if (flags[i]) { + if (dataFlags[i]) { + if (!_checkboxes[i].isEnabled()) {_checkboxes[i].setSelected(true);} _checkboxes[i].setEnabled(true); } else { @@ -77,6 +89,8 @@ public class PointTypeSelector extends JPanel _checkboxes[i].setEnabled(false); } } + _checkboxes[4].setEnabled(inTrackInfo.getSelection().hasRangeSelected()); + _checkboxes[4].setSelected(false); } /** @@ -103,12 +117,28 @@ public class PointTypeSelector extends JPanel return _checkboxes[2].isSelected(); } + /** + * @return true if audio points selected + */ + public boolean getAudiopointsSelected() + { + return _checkboxes[3].isSelected(); + } + + /** + * @return true if only the current selection should be saved + */ + public boolean getJustSelection() + { + return _checkboxes[4].isSelected(); + } + /** * @return true if at least one type selected */ public boolean getAnythingSelected() { return getTrackpointsSelected() || getWaypointsSelected() - || getPhotopointsSelected(); + || getPhotopointsSelected() || getAudiopointsSelected(); } }