]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/function/RearrangeFunction.java
Moved source into separate src directory due to popular request
[GpsPrune.git] / tim / prune / function / RearrangeFunction.java
diff --git a/tim/prune/function/RearrangeFunction.java b/tim/prune/function/RearrangeFunction.java
deleted file mode 100644 (file)
index 01cd1d1..0000000
+++ /dev/null
@@ -1,207 +0,0 @@
-package tim.prune.function;
-
-import java.awt.BorderLayout;
-import java.awt.FlowLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-
-import javax.swing.BorderFactory;
-import javax.swing.BoxLayout;
-import javax.swing.ButtonGroup;
-import javax.swing.JButton;
-import javax.swing.JDialog;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JRadioButton;
-
-import tim.prune.App;
-import tim.prune.GenericFunction;
-import tim.prune.I18nManager;
-import tim.prune.data.sort.SortMode;
-
-/**
- * Abstract superclass for the functions which rearrange points,
- * such as waypoints or photo points
- */
-public abstract class RearrangeFunction extends GenericFunction
-{
-       /** Function dialog */
-       private JDialog _dialog = null;
-       /** Radio buttons for start/end/nearest */
-       private JRadioButton[] _positionRadios = null;
-       /** Radio buttons for sorting */
-       private JRadioButton[] _sortRadios = null;
-       /** Is the "nearest" option available? */
-       private boolean _nearestAvailable = false;
-
-
-       /** Enumeration for rearrange commands */
-       protected enum Rearrange
-       {
-               /** Rearrange all waypoints to start */
-               TO_START,
-               /** Rearrange all waypoints to end */
-               TO_END,
-               /** Rearrange each waypoint to nearest track point */
-               TO_NEAREST
-       }
-
-
-       /**
-        * Constructor
-        * @param inApp app object
-        * @param isNearestAvailable true if nearest option is visible
-        */
-       public RearrangeFunction(App inApp, boolean isNearestAvailable)
-       {
-               super(inApp);
-               _nearestAvailable = isNearestAvailable;
-       }
-
-       /**
-        * Begin the function by showing the dialog
-        */
-       public void begin()
-       {
-               // Make dialog window
-               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();
-               }
-               // If sorting by time isn't available, then disable radio button
-               _sortRadios[2].setEnabled(isSortByTimeAllowed());
-               // Show dialog
-               _dialog.setVisible(true);
-       }
-
-
-       /**
-        * Create dialog components
-        * @return Panel containing all gui elements in dialog
-        */
-       private JPanel makeDialogComponents()
-       {
-               JPanel dialogPanel = new JPanel();
-               dialogPanel.setLayout(new BorderLayout());
-               JLabel descLabel = new JLabel(I18nManager.getText(getDescriptionKey()));
-               descLabel.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8));
-               dialogPanel.add(descLabel, BorderLayout.NORTH);
-               // Radios for position (start / end / nearest)
-               _positionRadios = new JRadioButton[3];
-               final String[] posNames = {"tostart", "toend", "tonearest"};
-               ButtonGroup posGroup = new ButtonGroup();
-               JPanel posPanel = new JPanel();
-               posPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
-               for (int i=0; i<posNames.length; i++)
-               {
-                       _positionRadios[i] = new JRadioButton(I18nManager.getText("dialog.rearrange." + posNames[i]));
-                       posGroup.add(_positionRadios[i]);
-                       posPanel.add(_positionRadios[i]);
-               }
-               _positionRadios[0].setSelected(true);
-               _positionRadios[2].setVisible(_nearestAvailable);
-
-               // Radios for sort (none / filename / time)
-               _sortRadios = new JRadioButton[3];
-               final String[] sortNames = {"nosort", getSortNameKey(), "sortbytime"};
-               ButtonGroup sortGroup = new ButtonGroup();
-               JPanel sortPanel = new JPanel();
-               sortPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
-               for (int i=0; i<3; i++)
-               {
-                       _sortRadios[i] = new JRadioButton(I18nManager.getText("dialog.rearrange." + sortNames[i]));
-                       sortGroup.add(_sortRadios[i]);
-                       sortPanel.add(_sortRadios[i]);
-               }
-               _sortRadios[0].setSelected(true);
-               // Use listener to disable all sort options if nearest type chosen, re-enable otherwise
-               ActionListener rearrListener = new ActionListener() {
-                       public void actionPerformed(ActionEvent arg0) {
-                               final boolean sortAvailable = !_positionRadios[2].isSelected();
-                               for (int i=0; i<_sortRadios.length; i++) {
-                                       _sortRadios[i].setEnabled(sortAvailable);
-                               }
-                       }
-               };
-               for (int i=0; i<_positionRadios.length; i++) {
-                       _positionRadios[i].addActionListener(rearrListener);
-               }
-               // add to middle of dialog
-               JPanel centrePanel = new JPanel();
-               centrePanel.setLayout(new BoxLayout(centrePanel, BoxLayout.Y_AXIS));
-               centrePanel.add(posPanel);
-               centrePanel.add(sortPanel);
-               dialogPanel.add(centrePanel, BorderLayout.CENTER);
-               // button panel at bottom
-               JPanel buttonPanel = new JPanel();
-               buttonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
-               JButton okButton = new JButton(I18nManager.getText("button.ok"));
-               okButton.addActionListener(new ActionListener() {
-                       public void actionPerformed(ActionEvent e) {
-                               finish();
-                               _dialog.dispose();
-                       }
-               });
-               buttonPanel.add(okButton);
-               JButton cancelButton = new JButton(I18nManager.getText("button.cancel"));
-               cancelButton.addActionListener(new ActionListener() {
-                       public void actionPerformed(ActionEvent e) {
-                               _dialog.dispose();
-                       }
-               });
-               buttonPanel.add(cancelButton);
-               dialogPanel.add(buttonPanel, BorderLayout.SOUTH);
-               return dialogPanel;
-       }
-
-       /**
-        * @return true if sorting by time is allowed, false otherwise
-        */
-       protected boolean isSortByTimeAllowed()
-       {
-               return true;
-       }
-
-       /**
-        * @return the selected rearrange option
-        */
-       protected Rearrange getRearrangeOption()
-       {
-               if (_positionRadios[0].isSelected()) {
-                       return Rearrange.TO_START;
-               }
-               if (_positionRadios[1].isSelected()) {
-                       return Rearrange.TO_END;
-               }
-               return Rearrange.TO_NEAREST;
-       }
-
-       /**
-        * @return the selected sort mode
-        */
-       protected SortMode getSortMode()
-       {
-               if (_sortRadios[0].isSelected()) {
-                       return SortMode.DONT_SORT;
-               }
-               if (_sortRadios[1].isSelected()) {
-                       return SortMode.SORTBY_NAME;
-               }
-               return SortMode.SORTBY_TIME;
-       }
-
-       /** @return key for description */
-       protected abstract String getDescriptionKey();
-
-       /** @return partial key for the sort by name radio */
-       protected abstract String getSortNameKey();
-
-       /**
-        * Perform the rearrange
-        */
-       protected abstract void finish();
-}