Index: /trunk/src/org/openstreetmap/josm/gui/preferences/DrawingPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/DrawingPreference.java	(revision 4286)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/DrawingPreference.java	(revision 4287)
@@ -3,5 +3,4 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
-import static org.openstreetmap.josm.tools.I18n.trc;
 
 import java.awt.Dimension;
@@ -12,14 +11,7 @@
 import javax.swing.BorderFactory;
 import javax.swing.Box;
-import javax.swing.ButtonGroup;
 import javax.swing.JCheckBox;
-import javax.swing.JComboBox;
-import javax.swing.JLabel;
 import javax.swing.JPanel;
-import javax.swing.JRadioButton;
 import javax.swing.JScrollPane;
-import javax.swing.JTextField;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
 
 import org.openstreetmap.josm.Main;
@@ -48,6 +40,7 @@
         gui.display.setPreferredSize(new Dimension(400,600));
         gpxPanel = new GPXSettingsPanel();
+        gui.addValidationListener(gpxPanel);
         JPanel panel = gpxPanel;
-        
+
         JScrollPane scrollpane = new JScrollPane(panel);
         scrollpane.setBorder(BorderFactory.createEmptyBorder( 0, 0, 0, 0 ));
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/GPXSettingsPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/GPXSettingsPanel.java	(revision 4286)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/GPXSettingsPanel.java	(revision 4287)
@@ -14,4 +14,5 @@
 import javax.swing.JComboBox;
 import javax.swing.JLabel;
+import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JRadioButton;
@@ -23,7 +24,10 @@
 import org.openstreetmap.josm.gui.layer.markerlayer.Marker;
 import org.openstreetmap.josm.gui.layer.markerlayer.Marker.TemplateEntryProperty;
+import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane.ValidationListener;
 import org.openstreetmap.josm.tools.GBC;
-
-public class GPXSettingsPanel extends JPanel {
+import org.openstreetmap.josm.tools.template_engine.ParseError;
+import org.openstreetmap.josm.tools.template_engine.TemplateParser;
+
+public class GPXSettingsPanel extends JPanel implements ValidationListener {
 
     private static final int WAYPOINT_LABEL_CUSTOM = 6;
@@ -397,3 +401,24 @@
     }
 
+    @Override
+    public boolean validatePreferences() {
+        TemplateParser parser = new TemplateParser(waypointLabelPattern.getText());
+        try {
+            parser.parse();
+        } catch (ParseError e) {
+            JOptionPane.showMessageDialog(Main.parent, tr("Incorrect waypoint label pattern: {0}", e.getMessage()), tr("Incorrect pattern"), JOptionPane.ERROR_MESSAGE);
+            waypointLabelPattern.requestFocus();
+            return false;
+        }
+        parser = new TemplateParser(audioWaypointLabelPattern.getText());
+        try {
+            parser.parse();
+        } catch (ParseError e) {
+            JOptionPane.showMessageDialog(Main.parent, tr("Incorrect audio waypoint label pattern: {0}", e.getMessage()), tr("Incorrect pattern"), JOptionPane.ERROR_MESSAGE);
+            audioWaypointLabelPattern.requestFocus();
+            return false;
+        }
+        return true;
+    }
+
 }
