]> gitweb.fperrin.net Git - GpsPrune.git/blob - tim/prune/save/PointTypeSelector.java
Version 8, September 2009
[GpsPrune.git] / tim / prune / save / PointTypeSelector.java
1 package tim.prune.save;
2
3 import java.awt.BorderLayout;
4 import java.awt.GridLayout;
5
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;
11
12 import tim.prune.I18nManager;
13 import tim.prune.data.TrackInfo;
14
15 /**
16  * GUI element to allow the selection of point types for saving,
17  * including three checkboxes for track points, waypoints, photo points
18  */
19 public class PointTypeSelector extends JPanel
20 {
21         /** Array of three checkboxes */
22         private JCheckBox[] _checkboxes = new JCheckBox[3];
23
24
25         /**
26          * Constructor
27          */
28         public PointTypeSelector()
29         {
30                 createComponents();
31                 setBorder(BorderFactory.createCompoundBorder(
32                         BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), BorderFactory.createEmptyBorder(4, 4, 4, 4))
33                 );
34         }
35
36         /**
37          * Create the GUI components
38          */
39         private void createComponents()
40         {
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++)
49                 {
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]);
54                 }
55                 add(gridPanel, BorderLayout.CENTER);
56         }
57
58         /**
59          * Initialize the checkboxes from the given data
60          * @param inTrackInfo TrackInfo object
61          */
62         public void init(TrackInfo inTrackInfo)
63         {
64                 // Get whether track has track points, waypoints, photos
65                 boolean[] flags = {inTrackInfo.getTrack().hasTrackPoints(),
66                                 inTrackInfo.getTrack().hasWaypoints(),
67                                 inTrackInfo.getPhotoList().getNumPhotos() > 0
68                 };
69                 // Enable or disable checkboxes according to data present
70                 for (int i=0; i<3; i++)
71                 {
72                         if (flags[i]) {
73                                 _checkboxes[i].setEnabled(true);
74                         }
75                         else {
76                                 _checkboxes[i].setSelected(false);
77                                 _checkboxes[i].setEnabled(false);
78                         }
79                 }
80         }
81
82         /**
83          * @return true if trackpoints selected
84          */
85         public boolean getTrackpointsSelected()
86         {
87                 return _checkboxes[0].isSelected();
88         }
89
90         /**
91          * @return true if waypoints selected
92          */
93         public boolean getWaypointsSelected()
94         {
95                 return _checkboxes[1].isSelected();
96         }
97
98         /**
99          * @return true if photo points selected
100          */
101         public boolean getPhotopointsSelected()
102         {
103                 return _checkboxes[2].isSelected();
104         }
105
106         /**
107          * @return true if at least one type selected
108          */
109         public boolean getAnythingSelected()
110         {
111                 return getTrackpointsSelected() || getWaypointsSelected()
112                         || getPhotopointsSelected();
113         }
114 }