Index: /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/PTAssistantPlugin.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/PTAssistantPlugin.java	(revision 34225)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/PTAssistantPlugin.java	(revision 34226)
@@ -2,9 +2,16 @@
 package org.openstreetmap.josm.plugins.pt_assistant;
 
+import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
+import static org.openstreetmap.josm.tools.I18n.trc;
+
+import java.awt.Component;
 import java.awt.KeyboardFocusManager;
+import java.awt.event.KeyEvent;
 import java.util.ArrayList;
 import java.util.List;
 
+import javax.swing.JMenu;
 import javax.swing.JMenuItem;
+import javax.swing.JPopupMenu;
 import javax.swing.SwingUtilities;
 
@@ -21,7 +28,10 @@
 import org.openstreetmap.josm.plugins.pt_assistant.actions.AddStopPositionAction;
 import org.openstreetmap.josm.plugins.pt_assistant.actions.CreatePlatformNodeAction;
+import org.openstreetmap.josm.plugins.pt_assistant.actions.CreatePlatformNodeThroughReplaceAction;
+import org.openstreetmap.josm.plugins.pt_assistant.actions.CreatePlatformShortcutAction;
 import org.openstreetmap.josm.plugins.pt_assistant.actions.DoubleSplitAction;
 import org.openstreetmap.josm.plugins.pt_assistant.actions.EdgeSelectionAction;
 import org.openstreetmap.josm.plugins.pt_assistant.actions.EditHighlightedRelationsAction;
+import org.openstreetmap.josm.plugins.pt_assistant.actions.ExtractPlatformNodeAction;
 import org.openstreetmap.josm.plugins.pt_assistant.actions.PTWizardAction;
 import org.openstreetmap.josm.plugins.pt_assistant.actions.RepeatLastFixAction;
@@ -42,116 +52,130 @@
 public class PTAssistantPlugin extends Plugin {
 
-    /*
-     * last fix that was can be re-applied to all similar route segments, can be
-     * null if unavailable
-     */
-    private static PTRouteSegment lastFix;
+	/*
+	 * last fix that was can be re-applied to all similar route segments, can be
+	 * null if unavailable
+	 */
+	private static PTRouteSegment lastFix;
 
-    /* list of relation currently highlighted by the layer */
-    private static List<Relation> highlightedRelations = new ArrayList<>();
+	/* list of relation currently highlighted by the layer */
+	private static List<Relation> highlightedRelations = new ArrayList<>();
 
-    /* item of the Tools menu for repeating the last fix */
-    private static JMenuItem repeatLastFixMenu;
+	/* item of the Tools menu for repeating the last fix */
+	private static JMenuItem repeatLastFixMenu;
 
-    /* edit the currently highlighted relations */
-    private static JMenuItem editHighlightedRelationsMenu;
+	/* edit the currently highlighted relations */
+	private static JMenuItem editHighlightedRelationsMenu;
 
-    /**
-     * Main constructor.
-     *
-     * @param info
-     *            Required information of the plugin. Obtained from the jar
-     *            file.
-     */
-    public PTAssistantPlugin(PluginInformation info) {
-        super(info);
-        OsmValidator.addTest(PTAssistantValidatorTest.class);
-        OsmValidator.addTest(BicycleFootRouteValidatorTest.class);
+	/**
+	 * Main constructor.
+	 *
+	 * @param info
+	 *            Required information of the plugin. Obtained from the jar file.
+	 */
+	public PTAssistantPlugin(PluginInformation info) {
+		super(info);
+		OsmValidator.addTest(PTAssistantValidatorTest.class);
+		OsmValidator.addTest(BicycleFootRouteValidatorTest.class);
 
-        DataSet.addSelectionListener(PTAssistantLayerManager.PTLM);
-        KeyboardFocusManager.getCurrentKeyboardFocusManager().addPropertyChangeListener(PTAssistantLayerManager.PTLM);
-        RepeatLastFixAction repeatLastFixAction = new RepeatLastFixAction();
-        EditHighlightedRelationsAction editHighlightedRelationsAction = new EditHighlightedRelationsAction();
-        repeatLastFixMenu = MainMenu.add(MainApplication.getMenu().toolsMenu, repeatLastFixAction);
-        editHighlightedRelationsMenu = MainMenu.add(MainApplication.getMenu().toolsMenu, editHighlightedRelationsAction);
-        MainMenu.add(MainApplication.getMenu().toolsMenu, new SplitRoundaboutAction());
-        MainMenu.add(MainApplication.getMenu().toolsMenu, new CreatePlatformNodeAction());
-        MainMenu.add(MainApplication.getMenu().toolsMenu, new SortPTRouteMembersAction());
-        MainMenu.add(MainApplication.getMenu().helpMenu, new PTWizardAction());
-        initialiseWizard();
-    }
+		MainMenu menu = MainApplication.getMenu();
+		JMenu PublicTransportMenu = menu.addMenu("File", /* I18N: mnemonic: F */ trc("menu", "Public Transport"),
+				KeyEvent.VK_P, 5, ht("/Menu/Public Transport"));
 
-    /**
-     * Called when the JOSM map frame is created or destroyed.
-     */
-    @Override
-    public void mapFrameInitialized(MapFrame oldFrame, MapFrame newFrame) {
-        if (oldFrame == null && newFrame != null) {
-            repeatLastFixMenu.setEnabled(false);
-            editHighlightedRelationsMenu.setEnabled(false);
-            MainApplication.getMap().addMapMode(new IconToggleButton(new AddStopPositionAction()));
-            MainApplication.getMap().addMapMode(new IconToggleButton(new EdgeSelectionAction()));
-            MainApplication.getMap().addMapMode(new IconToggleButton(new DoubleSplitAction()));
-        } else if (oldFrame != null && newFrame == null) {
-            repeatLastFixMenu.setEnabled(false);
-            editHighlightedRelationsMenu.setEnabled(false);
-        }
-    }
+		DataSet.addSelectionListener(PTAssistantLayerManager.PTLM);
+		KeyboardFocusManager.getCurrentKeyboardFocusManager().addPropertyChangeListener(PTAssistantLayerManager.PTLM);
+		addToPTAssistantmenu(PublicTransportMenu);
+		initialiseWizard();
+		initialiseShorcutsForCreatePlatformNode();
+	}
 
-    /**
-     * Sets up the pt_assistant tab in JOSM Preferences
-     */
-    @Override
-    public PreferenceSetting getPreferenceSetting() {
-        return new PTAssistantPreferenceSetting();
-    }
+	/**
+	 * Called when the JOSM map frame is created or destroyed.
+	 */
+	@Override
+	public void mapFrameInitialized(MapFrame oldFrame, MapFrame newFrame) {
+		if (oldFrame == null && newFrame != null) {
+			repeatLastFixMenu.setEnabled(false);
+			editHighlightedRelationsMenu.setEnabled(false);
+			MainApplication.getMap().addMapMode(new IconToggleButton(new AddStopPositionAction()));
+			MainApplication.getMap().addMapMode(new IconToggleButton(new EdgeSelectionAction()));
+			MainApplication.getMap().addMapMode(new IconToggleButton(new DoubleSplitAction()));
+		} else if (oldFrame != null && newFrame == null) {
+			repeatLastFixMenu.setEnabled(false);
+			editHighlightedRelationsMenu.setEnabled(false);
+		}
+	}
 
-    public static PTRouteSegment getLastFix() {
-        return lastFix;
-    }
+	/**
+	 * Sets up the pt_assistant tab in JOSM Preferences
+	 */
+	@Override
+	public PreferenceSetting getPreferenceSetting() {
+		return new PTAssistantPreferenceSetting();
+	}
 
-    /**
-     * Remembers the last fix and enables/disables the Repeat last fix menu
-     *
-     * @param segment
-     *            The last fix, call be null to disable the Repeat last fix menu
-     */
-    public static void setLastFix(PTRouteSegment segment) {
-        lastFix = segment;
-        SwingUtilities.invokeLater(() ->
-        repeatLastFixMenu.setEnabled(segment != null));
-    }
+	public static PTRouteSegment getLastFix() {
+		return lastFix;
+	}
 
-    /**
-     * Used in unit tests
-     *
-     * @param segment route segment
-     */
-    public static void setLastFixNoGui(PTRouteSegment segment) {
-        lastFix = segment;
-    }
+	/**
+	 * Remembers the last fix and enables/disables the Repeat last fix menu
+	 *
+	 * @param segment
+	 *            The last fix, call be null to disable the Repeat last fix menu
+	 */
+	public static void setLastFix(PTRouteSegment segment) {
+		lastFix = segment;
+		SwingUtilities.invokeLater(() -> repeatLastFixMenu.setEnabled(segment != null));
+	}
 
-    public static List<Relation> getHighlightedRelations() {
-        return new ArrayList<>(highlightedRelations);
-    }
+	/**
+	 * Used in unit tests
+	 *
+	 * @param segment
+	 *            route segment
+	 */
+	public static void setLastFixNoGui(PTRouteSegment segment) {
+		lastFix = segment;
+	}
 
-    public static void addHighlightedRelation(Relation highlightedRelation) {
-        highlightedRelations.add(highlightedRelation);
-        if (!editHighlightedRelationsMenu.isEnabled()) {
-            SwingUtilities.invokeLater(() ->
-            editHighlightedRelationsMenu.setEnabled(true));
-        }
-    }
+	public static List<Relation> getHighlightedRelations() {
+		return new ArrayList<>(highlightedRelations);
+	}
 
-    public static void clearHighlightedRelations() {
-        highlightedRelations.clear();
-        SwingUtilities.invokeLater(() ->
-        editHighlightedRelationsMenu.setEnabled(false));
-    }
+	public static void addHighlightedRelation(Relation highlightedRelation) {
+		highlightedRelations.add(highlightedRelation);
+		if (!editHighlightedRelationsMenu.isEnabled()) {
+			SwingUtilities.invokeLater(() -> editHighlightedRelationsMenu.setEnabled(true));
+		}
+	}
 
-    private static void initialiseWizard() {
-    	    PTWizardAction wizard = new PTWizardAction();
-    	    wizard.noDialogBox = true;
-        wizard.actionPerformed(null);
-    }
+	public static void clearHighlightedRelations() {
+		highlightedRelations.clear();
+		SwingUtilities.invokeLater(() -> editHighlightedRelationsMenu.setEnabled(false));
+	}
+
+	private void addToPTAssistantmenu(JMenu PublicTransportMenu) {
+		RepeatLastFixAction repeatLastFixAction = new RepeatLastFixAction();
+		EditHighlightedRelationsAction editHighlightedRelationsAction = new EditHighlightedRelationsAction();
+		repeatLastFixMenu = MainMenu.add(PublicTransportMenu, repeatLastFixAction);
+		editHighlightedRelationsMenu = MainMenu.add(PublicTransportMenu, editHighlightedRelationsAction);
+		MainMenu.add(PublicTransportMenu, new SplitRoundaboutAction());
+		MainMenu.add(PublicTransportMenu, new CreatePlatformNodeAction());
+		MainMenu.add(PublicTransportMenu, new SortPTRouteMembersAction());
+		Component sep = new JPopupMenu.Separator();
+		PublicTransportMenu.add(sep);
+		MainMenu.add(PublicTransportMenu, new PTWizardAction());
+	}
+
+	private static void initialiseWizard() {
+		PTWizardAction wizard = new PTWizardAction();
+		wizard.noDialogBox = true;
+		wizard.actionPerformed(null);
+	}
+
+	private static void initialiseShorcutsForCreatePlatformNode() {
+		CreatePlatformShortcutAction shortcut1 = new CreatePlatformShortcutAction();
+		CreatePlatformNodeThroughReplaceAction shortcut2 = new CreatePlatformNodeThroughReplaceAction();
+		ExtractPlatformNodeAction shortcut3 = new ExtractPlatformNodeAction();
+	}
 }
