1 package tim.prune.save;
3 import java.awt.BorderLayout;
4 import java.awt.GridLayout;
6 import javax.swing.BorderFactory;
7 import javax.swing.JCheckBox;
8 import javax.swing.JLabel;
9 import javax.swing.JPanel;
10 import javax.swing.border.EtchedBorder;
12 import tim.prune.I18nManager;
13 import tim.prune.data.TrackInfo;
16 * GUI element to allow the selection of point types for saving,
17 * including three checkboxes for track points, waypoints, photo points
19 public class PointTypeSelector extends JPanel
21 /** Array of three checkboxes */
22 private JCheckBox[] _checkboxes = new JCheckBox[3];
28 public PointTypeSelector()
31 setBorder(BorderFactory.createCompoundBorder(
32 BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), BorderFactory.createEmptyBorder(4, 4, 4, 4))
37 * Create the GUI components
39 private void createComponents()
41 setLayout(new BorderLayout());
42 // Need JLabel to explain what it is
43 add(new JLabel(I18nManager.getText("dialog.pointtype.desc")), BorderLayout.NORTH);
44 // panel for the checkboxes
45 JPanel gridPanel = new JPanel();
46 gridPanel.setLayout(new GridLayout(1, 3, 15, 3));
47 final String[] keys = {"track", "waypoint", "photo"};
48 for (int i=0; i<3; i++)
50 _checkboxes[i] = new JCheckBox(I18nManager.getText("dialog.pointtype." + keys[i]));
51 _checkboxes[i].setEnabled(true);
52 _checkboxes[i].setSelected(true);
53 gridPanel.add(_checkboxes[i]);
55 add(gridPanel, BorderLayout.CENTER);
59 * Initialize the checkboxes from the given data
60 * @param inTrackInfo TrackInfo object
62 public void init(TrackInfo inTrackInfo)
64 // Get whether track has track points, waypoints, photos
65 boolean[] flags = {inTrackInfo.getTrack().hasTrackPoints(),
66 inTrackInfo.getTrack().hasWaypoints(),
67 inTrackInfo.getPhotoList().getNumPhotos() > 0
69 // Enable or disable checkboxes according to data present
70 for (int i=0; i<3; i++)
73 _checkboxes[i].setEnabled(true);
76 _checkboxes[i].setSelected(false);
77 _checkboxes[i].setEnabled(false);
83 * @return true if trackpoints selected
85 public boolean getTrackpointsSelected()
87 return _checkboxes[0].isSelected();
91 * @return true if waypoints selected
93 public boolean getWaypointsSelected()
95 return _checkboxes[1].isSelected();
99 * @return true if photo points selected
101 public boolean getPhotopointsSelected()
103 return _checkboxes[2].isSelected();
107 * @return true if at least one type selected
109 public boolean getAnythingSelected()
111 return getTrackpointsSelected() || getWaypointsSelected()
112 || getPhotopointsSelected();