]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/function/edit/PointNameEditor.java
Moved source into separate src directory due to popular request
[GpsPrune.git] / tim / prune / function / edit / PointNameEditor.java
diff --git a/tim/prune/function/edit/PointNameEditor.java b/tim/prune/function/edit/PointNameEditor.java
deleted file mode 100644 (file)
index 53e1f83..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-package tim.prune.function.edit;
-
-import java.awt.Component;
-import java.awt.BorderLayout;
-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 javax.swing.BorderFactory;
-import javax.swing.BoxLayout;
-import javax.swing.JButton;
-import javax.swing.JDialog;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JTextField;
-
-import tim.prune.App;
-import tim.prune.GenericFunction;
-import tim.prune.I18nManager;
-import tim.prune.data.DataPoint;
-import tim.prune.data.Field;
-
-/**
- * Function to manage the display and editing of waypoint names
- */
-public class PointNameEditor extends GenericFunction
-{
-       private JDialog _dialog = null;
-       private DataPoint _point = null;
-       private JTextField _nameField = null;
-       private JButton _okButton = null;
-
-
-       /**
-        * Constructor
-        * @param inApp application object to inform of success
-        */
-       public PointNameEditor(App inApp)
-       {
-               super(inApp);
-       }
-
-       /** Get the name key */
-       public String getNameKey() {
-               return "function.editwaypointname";
-       }
-
-       /**
-        * Begin the function by showing the edit point name dialog
-        */
-       public void begin()
-       {
-               _point = _app.getTrackInfo().getCurrentPoint();
-               if (_dialog == null)
-               {
-                       _dialog = new JDialog(_parentFrame, I18nManager.getText(getNameKey()), true);
-                       _dialog.setLocationRelativeTo(_parentFrame);
-                       // Create Gui and show it
-                       _dialog.getContentPane().add(makeDialogComponents());
-                       _dialog.pack();
-               }
-               // Check current waypoint name, if any
-               String name = _point.getWaypointName();
-               resetDialog(name);
-               _dialog.setVisible(true);
-       }
-
-
-       /**
-        * Make the dialog components
-        * @return the GUI components for the dialog
-        */
-       private Component makeDialogComponents()
-       {
-               JPanel panel = new JPanel();
-               panel.setLayout(new BorderLayout());
-               // Create GUI layout for point name editor
-               JPanel centrePanel = new JPanel();
-               centrePanel.setLayout(new BorderLayout(8, 8));
-               centrePanel.add(new JLabel(I18nManager.getText("dialog.pointnameedit.name") + ": "), BorderLayout.WEST);
-               // Make listener to react to ok being pressed
-               ActionListener okActionListener = new ActionListener() {
-                       public void actionPerformed(ActionEvent e)
-                       {
-                               // update App with edit
-                               confirmEdit();
-                               _dialog.dispose();
-                       }
-               };
-               _nameField = new JTextField("", 12);
-               _nameField.addKeyListener(new KeyAdapter() {
-                       public void keyReleased(KeyEvent e)
-                       {
-                               // close dialog if escape pressed
-                               if (e.getKeyCode() == KeyEvent.VK_ESCAPE)
-                               {
-                                       _dialog.dispose();
-                               }
-                               // Enable ok button if name changed
-                               _okButton.setEnabled(hasNameChanged());
-                       }
-               });
-               _nameField.addActionListener(okActionListener);
-               centrePanel.add(_nameField, BorderLayout.CENTER);
-               // holder panel to stop the text box from being stretched
-               JPanel holderPanel = new JPanel();
-               holderPanel.setLayout(new BorderLayout());
-               holderPanel.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8));
-               holderPanel.add(centrePanel, BorderLayout.NORTH);
-               panel.add(holderPanel, BorderLayout.CENTER);
-               JPanel rightPanel = new JPanel();
-               rightPanel.setLayout(new BoxLayout(rightPanel, BoxLayout.Y_AXIS));
-               JButton upperButton = new JButton(I18nManager.getText("dialog.pointnameedit.uppercase"));
-               upperButton.addActionListener(new ActionListener() {
-                       public void actionPerformed(ActionEvent e)
-                       {
-                               _nameField.setText(_nameField.getText().toUpperCase());
-                               _okButton.setEnabled(true);
-                               _nameField.requestFocus();
-                       }
-               });
-               rightPanel.add(upperButton);
-               JButton lowerButton = new JButton(I18nManager.getText("dialog.pointnameedit.lowercase"));
-               lowerButton.addActionListener(new ActionListener() {
-                       public void actionPerformed(ActionEvent e)
-                       {
-                               _nameField.setText(_nameField.getText().toLowerCase());
-                               _okButton.setEnabled(true);
-                               _nameField.requestFocus();
-                       }
-               });
-               rightPanel.add(lowerButton);
-               JButton titleButton = new JButton(I18nManager.getText("dialog.pointnameedit.titlecase"));
-               titleButton.addActionListener(new ActionListener() {
-                       public void actionPerformed(ActionEvent e)
-                       {
-                               _nameField.setText(titleCase(_nameField.getText()));
-                               _okButton.setEnabled(true);
-                               _nameField.requestFocus();
-                       }
-               });
-               rightPanel.add(titleButton);
-               panel.add(rightPanel, BorderLayout.EAST);
-               // Bottom panel for OK, cancel buttons
-               JPanel lowerPanel = new JPanel();
-               lowerPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
-               JButton cancelButton = new JButton(I18nManager.getText("button.cancel"));
-               cancelButton.addActionListener(new ActionListener() {
-                       public void actionPerformed(ActionEvent e)
-                       {
-                               _dialog.dispose();
-                       }
-               });
-               lowerPanel.add(cancelButton);
-               _okButton = new JButton(I18nManager.getText("button.ok"));
-               _okButton.setEnabled(false);
-               _okButton.addActionListener(okActionListener);
-               lowerPanel.add(_okButton);
-               panel.add(lowerPanel, BorderLayout.SOUTH);
-               return panel;
-       }
-
-
-       /**
-        * Reset the dialog with the given name
-        * @param inName waypoint name
-        */
-       private void resetDialog(String inName)
-       {
-               _nameField.setText(inName);
-               _okButton.setEnabled(false);
-       }
-
-       /**
-        * Turn a String into title case by capitalizing each word
-        * @param inString String to convert
-        * @return capitalized String
-        */
-       private static String titleCase(String inString)
-       {
-               // Check first for empty strings
-               if (inString == null || inString.equals(""))
-               {
-                       return "";
-               }
-               StringBuffer buffer = new StringBuffer();
-               // loop through characters
-               char lastChar = ' ', currChar = ' ';
-               for (int i=0; i<inString.length(); i++)
-               {
-                       currChar = inString.charAt(i);
-                       buffer.append(lastChar == ' '?Character.toUpperCase(currChar):Character.toLowerCase(currChar));
-                       lastChar = currChar;
-               }
-               return buffer.toString();
-       }
-
-
-       /**
-        * Confirm the edit and inform the app
-        */
-       private void confirmEdit()
-       {
-               // Check whether name has really changed
-               if (hasNameChanged())
-               {
-                       // Make lists for edit and undo, and add the changed field
-                       FieldEditList editList = new FieldEditList();
-                       FieldEditList undoList = new FieldEditList();
-                       editList.addEdit(new FieldEdit(Field.WAYPT_NAME, _nameField.getText().trim()));
-                       undoList.addEdit(new FieldEdit(Field.WAYPT_NAME, _point.getWaypointName()));
-
-                       // Pass back to App to perform edit
-                       _app.completePointEdit(editList, undoList);
-               }
-       }
-
-       /**
-        * Check whether the name has been changed or not
-        * @return true if the new name is different
-        */
-       private boolean hasNameChanged()
-       {
-               String prevName = _point.getWaypointName();
-               String newName = _nameField.getText().trim();
-               boolean prevNull = (prevName == null || prevName.equals(""));
-               boolean newNull = (newName == null || newName.equals(""));
-               return (prevNull && !newNull)
-                       || (!prevNull && newNull)
-                       || (!prevNull && !newNull && !prevName.equals(newName));
-       }
-}