package tim.prune.function; import java.awt.BorderLayout; import java.awt.Component; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.ListSelectionModel; import tim.prune.App; import tim.prune.GenericFunction; import tim.prune.I18nManager; import tim.prune.data.Altitude; import tim.prune.data.Field; import tim.prune.data.SourceInfo; import tim.prune.data.Track; import tim.prune.load.TrackNameList; /** * Function to allow the selection of which tracks to load from the file / stream */ public class SelectTracksFunction extends GenericFunction { private Field[] _fieldArray = null; private Object[][] _dataArray = null; private Altitude.Format _altFormat = Altitude.Format.NO_FORMAT; private SourceInfo _sourceInfo = null; private TrackNameList _trackNameList = null; private JDialog _dialog = null; private JList _trackList = null; /** * Constructor * @param inApp app object to use for load * @param inFieldArray field array * @param inDataArray data array * @param inAltFormat altitude format * @param inSourceInfo source information * @param inTrackNameList track name list */ public SelectTracksFunction(App inApp, Field[] inFieldArray, Object[][] inDataArray, Altitude.Format inAltFormat, SourceInfo inSourceInfo, TrackNameList inTrackNameList) { super(inApp); _fieldArray = inFieldArray; _dataArray = inDataArray; _altFormat = inAltFormat; _sourceInfo = inSourceInfo; _trackNameList = inTrackNameList; } /** * Start the function */ public void begin() { _dialog = new JDialog(_parentFrame, I18nManager.getText("function.open")); _dialog.setLocationRelativeTo(_parentFrame); _dialog.getContentPane().add(makeContents()); _dialog.pack(); _dialog.setVisible(true); selectAll(); } /** * @return the contents of the window as a Component */ private Component makeContents() { JPanel mainPanel = new JPanel(); mainPanel.setLayout(new BorderLayout()); mainPanel.add(new JLabel(I18nManager.getText("dialog.selecttracks.intro")), BorderLayout.NORTH); // track list final int numTracks = _trackNameList.getNumTracks(); String[] names = new String[numTracks]; for (int i=0; i