]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/function/deletebydate/DeleteByDateFunction.java
Moved source into separate src directory due to popular request
[GpsPrune.git] / tim / prune / function / deletebydate / DeleteByDateFunction.java
diff --git a/tim/prune/function/deletebydate/DeleteByDateFunction.java b/tim/prune/function/deletebydate/DeleteByDateFunction.java
deleted file mode 100644 (file)
index 42d52f5..0000000
+++ /dev/null
@@ -1,207 +0,0 @@
-package tim.prune.function.deletebydate;
-
-import java.awt.BorderLayout;
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.FlowLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.KeyAdapter;
-import java.awt.event.KeyEvent;
-import java.util.Date;
-
-import javax.swing.BorderFactory;
-import javax.swing.JButton;
-import javax.swing.JDialog;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTable;
-
-import tim.prune.App;
-import tim.prune.DataSubscriber;
-import tim.prune.I18nManager;
-import tim.prune.UpdateMessageBroker;
-import tim.prune.config.TimezoneHelper;
-import tim.prune.data.DataPoint;
-import tim.prune.function.compress.MarkAndDeleteFunction;
-
-/**
- * Function to select a date or dates,
- * and mark the corresponding points for deletion
- */
-public class DeleteByDateFunction extends MarkAndDeleteFunction
-{
-       /** dialog for selecting dates */
-       private JDialog _dialog = null;
-       /** Ok button */
-       private JButton _okButton = null;
-       /** date info list */
-       private DateInfoList _infoList = new DateInfoList();
-
-
-       /**
-        * Constructor
-        * @param inApp App object
-        */
-       public DeleteByDateFunction(App inApp)
-       {
-               super(inApp);
-       }
-
-       @Override
-       public String getNameKey() {
-               return "function.deletebydate";
-       }
-
-       @Override
-       public void begin()
-       {
-               // Select the current timezone
-               DateInfo.setTimezone(TimezoneHelper.getSelectedTimezone());
-
-               // Make a list of which dates are present in the track
-               _infoList.clearAll();
-               final int numPoints = _app.getTrackInfo().getTrack().getNumPoints();
-               for (int i=0; i<numPoints; i++)
-               {
-                       DataPoint point = _app.getTrackInfo().getTrack().getPoint(i);
-                       if (point != null)
-                       {
-                               if (point.hasTimestamp()) {
-                                       _infoList.addPoint(point.getTimestamp()
-                                               .getCalendar(TimezoneHelper.getSelectedTimezone()).getTime());
-                               }
-                               else {
-                                       _infoList.addPoint(null); // no timestamp available
-                               }
-                       }
-               }
-
-               // Complain if there is only one entry in the list - this means all points are on the same day
-               if (_infoList.getNumEntries() < 2)
-               {
-                       _app.showErrorMessage(getNameKey(), "dialog.deletebydate.onlyonedate");
-               }
-               else
-               {
-                       // Create and build dialog if necessary
-                       if (_dialog == null)
-                       {
-                               _dialog = new JDialog(_parentFrame, I18nManager.getText(getNameKey()), true);
-                               _dialog.setLocationRelativeTo(_parentFrame);
-                               _dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
-                               _dialog.getContentPane().add(makeDialogComponents());
-                               _dialog.pack();
-                       }
-                       // Show dialog
-                       _dialog.setVisible(true);
-               }
-       }
-
-       /**
-        * Create dialog components
-        * @return Panel containing all gui elements in dialog
-        */
-       private Component makeDialogComponents()
-       {
-               JPanel dialogPanel = new JPanel();
-               dialogPanel.setLayout(new BorderLayout(5, 5));
-               // Label at top
-               JLabel topLabel = new JLabel(I18nManager.getText("dialog.deletebydate.intro"));
-               topLabel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
-               dialogPanel.add(topLabel, BorderLayout.NORTH);
-
-               // close window if escape pressed
-               KeyAdapter escListener = new KeyAdapter() {
-                       public void keyReleased(KeyEvent inE) {
-                               if (inE.getKeyCode() == KeyEvent.VK_ESCAPE) {
-                                       _dialog.dispose();
-                               }
-                       }
-               };
-
-               JTable infoTable = new JTable(new DeletionTableModel(_infoList));
-               JScrollPane pane = new JScrollPane(infoTable);
-               pane.setPreferredSize(new Dimension(300, 80));
-               pane.setBorder(BorderFactory.createEmptyBorder(2, 50, 2, 50));
-               dialogPanel.add(pane, BorderLayout.CENTER);
-
-               // button panel at bottom
-               JPanel buttonPanel = new JPanel();
-               buttonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
-               // OK button
-               _okButton = new JButton(I18nManager.getText("button.ok"));
-               _okButton.addActionListener(new ActionListener() {
-                       public void actionPerformed(ActionEvent e) {
-                               performDelete();
-                       }
-               });
-               buttonPanel.add(_okButton);
-               _okButton.addKeyListener(escListener);
-               // Cancel button
-               JButton cancelButton = new JButton(I18nManager.getText("button.cancel"));
-               cancelButton.addActionListener(new ActionListener() {
-                       public void actionPerformed(ActionEvent e) {
-                               _dialog.dispose();
-                       }
-               });
-               cancelButton.addKeyListener(new KeyAdapter() {
-                       public void keyPressed(KeyEvent inE) {
-                               if (inE.getKeyCode() == KeyEvent.VK_ESCAPE) {_dialog.dispose();}
-                       }
-               });
-               buttonPanel.add(cancelButton);
-               dialogPanel.add(buttonPanel, BorderLayout.SOUTH);
-               return dialogPanel;
-       }
-
-       /**
-        * Do the actual point deletion according to the
-        * selected rows in the table
-        */
-       private void performDelete()
-       {
-               int numMarked = 0;
-               final int numPoints = _app.getTrackInfo().getTrack().getNumPoints();
-               final int numDates = _infoList.getNumEntries();
-               // Loop over all points to mark each one for deletion or not
-               for (int p=0; p<numPoints; p++)
-               {
-                       DataPoint point = _app.getTrackInfo().getTrack().getPoint(p);
-                       if (point != null)
-                       {
-                               final Date date = (point.hasTimestamp() ?
-                                       point.getTimestamp().getCalendar(TimezoneHelper.getSelectedTimezone()).getTime()
-                                       : null);
-                               boolean pointMarked = false;
-                               // Try to match each of the date info objects in the list
-                               for (int d=0; d<numDates; d++)
-                               {
-                                       DateInfo info = _infoList.getDateInfo(d);
-                                       if ( (info.isDateless() && date == null) // matches dateless
-                                         || (!info.isDateless() && date != null && info.isSameDate(date)))
-                                       {
-                                               pointMarked = info.getDeleteFlag();
-                                               break;
-                                       }
-                               }
-                               point.setMarkedForDeletion(pointMarked);
-                               if (pointMarked) {
-                                       numMarked++;
-                               }
-                       }
-               }
-               // Now points have been marked, we can ask user to delete them (or delete automatically)
-               if (numMarked > 0) {
-                       optionallyDeleteMarkedPoints(numMarked);
-               }
-               else
-               {
-                       // Do nothing   //System.out.println("Nothing selected to delete!");
-                       // delete flags might have been reset, so refresh display
-                       UpdateMessageBroker.informSubscribers(DataSubscriber.SELECTION_CHANGED);
-               }
-               _dialog.dispose();
-       }
-}