Index: applications/editors/josm/plugins/public_transport/src/public_transport/RoutePatternAction.java
===================================================================
--- applications/editors/josm/plugins/public_transport/src/public_transport/RoutePatternAction.java	(revision 19986)
+++ applications/editors/josm/plugins/public_transport/src/public_transport/RoutePatternAction.java	(revision 19987)
@@ -701,11 +701,4 @@
       /*JScrollPane*/ tableSP = new JScrollPane(otherTagsTable);
       otherTagsData.addTableModelListener(otherTagsData);
-/*      JComboBox comboBox = new JComboBox();
-      comboBox.addItem("");
-      comboBox.addItem("forward");
-      comboBox.addItem("backward");
-      itineraryTable.getColumnModel().getColumn(1)
-      .setCellEditor(new DefaultCellEditor(comboBox));
-      itineraryData.addTableModelListener(new ItineraryTableModelListener());*/
       
       layoutCons.gridx = 0;
@@ -755,5 +748,5 @@
       layoutCons.gridx = 0;
       layoutCons.gridy = 0;
-      layoutCons.gridwidth = 3;
+      layoutCons.gridwidth = 4;
       layoutCons.weightx = 1.0;
       layoutCons.weighty = 1.0;
@@ -762,7 +755,7 @@
       contentPane.add(tableSP);
 	
-      JButton bShow = new JButton("Show");
-      bShow.setActionCommand("routePattern.itineraryShow");
-      bShow.addActionListener(this);
+      JButton bFind = new JButton("Find");
+      bFind.setActionCommand("routePattern.itineraryFind");
+      bFind.addActionListener(this);
 	
       layoutCons.gridx = 0;
@@ -772,10 +765,10 @@
       layoutCons.weighty = 0.0;
       layoutCons.fill = GridBagConstraints.BOTH;
-      gridbag.setConstraints(bShow, layoutCons);
-      contentPane.add(bShow);
-	
-      JButton bMark = new JButton("Mark");
-      bMark.setActionCommand("routePattern.itineraryMark");
-      bMark.addActionListener(this);
+      gridbag.setConstraints(bFind, layoutCons);
+      contentPane.add(bFind);
+      
+      JButton bShow = new JButton("Show");
+      bShow.setActionCommand("routePattern.itineraryShow");
+      bShow.addActionListener(this);
 	
       layoutCons.gridx = 0;
@@ -785,4 +778,18 @@
       layoutCons.weighty = 0.0;
       layoutCons.fill = GridBagConstraints.BOTH;
+      gridbag.setConstraints(bShow, layoutCons);
+      contentPane.add(bShow);
+	
+      JButton bMark = new JButton("Mark");
+      bMark.setActionCommand("routePattern.itineraryMark");
+      bMark.addActionListener(this);
+	
+      layoutCons.gridx = 1;
+      layoutCons.gridy = 1;
+      layoutCons.gridheight = 2;
+      layoutCons.gridwidth = 1;
+      layoutCons.weightx = 1.0;
+      layoutCons.weighty = 0.0;
+      layoutCons.fill = GridBagConstraints.BOTH;
       gridbag.setConstraints(bMark, layoutCons);
       contentPane.add(bMark);
@@ -792,6 +799,7 @@
       bAdd.addActionListener(this);
 	
-      layoutCons.gridx = 1;
+      layoutCons.gridx = 2;
       layoutCons.gridy = 1;
+      layoutCons.gridheight = 1;
       layoutCons.gridwidth = 1;
       layoutCons.weightx = 1.0;
@@ -805,30 +813,4 @@
       bDelete.addActionListener(this);
 	
-      layoutCons.gridx = 1;
-      layoutCons.gridy = 2;
-      layoutCons.gridwidth = 1;
-      layoutCons.weightx = 1.0;
-      layoutCons.weighty = 0.0;
-      layoutCons.fill = GridBagConstraints.BOTH;
-      gridbag.setConstraints(bDelete, layoutCons);
-      contentPane.add(bDelete);
-	
-      JButton bSort = new JButton("Sort");
-      bSort.setActionCommand("routePattern.itinerarySort");
-      bSort.addActionListener(this);
-	
-      layoutCons.gridx = 2;
-      layoutCons.gridy = 1;
-      layoutCons.gridwidth = 1;
-      layoutCons.weightx = 1.0;
-      layoutCons.weighty = 0.0;
-      layoutCons.fill = GridBagConstraints.BOTH;
-      gridbag.setConstraints(bSort, layoutCons);
-      contentPane.add(bSort);
-	
-      JButton bReflect = new JButton("Reflect");
-      bReflect.setActionCommand("routePattern.itineraryReflect");
-      bReflect.addActionListener(this);
-      
       layoutCons.gridx = 2;
       layoutCons.gridy = 2;
@@ -837,7 +819,33 @@
       layoutCons.weighty = 0.0;
       layoutCons.fill = GridBagConstraints.BOTH;
+      gridbag.setConstraints(bDelete, layoutCons);
+      contentPane.add(bDelete);
+	
+      JButton bSort = new JButton("Sort");
+      bSort.setActionCommand("routePattern.itinerarySort");
+      bSort.addActionListener(this);
+	
+      layoutCons.gridx = 3;
+      layoutCons.gridy = 1;
+      layoutCons.gridwidth = 1;
+      layoutCons.weightx = 1.0;
+      layoutCons.weighty = 0.0;
+      layoutCons.fill = GridBagConstraints.BOTH;
+      gridbag.setConstraints(bSort, layoutCons);
+      contentPane.add(bSort);
+	
+      JButton bReflect = new JButton("Reflect");
+      bReflect.setActionCommand("routePattern.itineraryReflect");
+      bReflect.addActionListener(this);
+      
+      layoutCons.gridx = 3;
+      layoutCons.gridy = 2;
+      layoutCons.gridwidth = 1;
+      layoutCons.weightx = 1.0;
+      layoutCons.weighty = 0.0;
+      layoutCons.fill = GridBagConstraints.BOTH;
       gridbag.setConstraints(bReflect, layoutCons);
       contentPane.add(bReflect);
-	
+      
       //Stoplist Tab
       contentPane = tabStoplist;
@@ -862,5 +870,5 @@
       layoutCons.gridx = 0;
       layoutCons.gridy = 0;
-      layoutCons.gridwidth = 3;
+      layoutCons.gridwidth = 4;
       layoutCons.weightx = 1.0;
       layoutCons.weighty = 1.0;
@@ -869,7 +877,7 @@
       contentPane.add(tableSP);
 	
-      /*JButton*/ bShow = new JButton("Show");
-      bShow.setActionCommand("routePattern.stoplistShow");
-      bShow.addActionListener(this);
+      /*JButton*/ bFind = new JButton("Find");
+      bFind.setActionCommand("routePattern.stoplistFind");
+      bFind.addActionListener(this);
 	
       layoutCons.gridx = 0;
@@ -879,10 +887,10 @@
       layoutCons.weighty = 0.0;
       layoutCons.fill = GridBagConstraints.BOTH;
-      gridbag.setConstraints(bShow, layoutCons);
-      contentPane.add(bShow);
-	
-      /*JButton*/ bMark = new JButton("Mark");
-      bMark.setActionCommand("routePattern.stoplistMark");
-      bMark.addActionListener(this);
+      gridbag.setConstraints(bFind, layoutCons);
+      contentPane.add(bFind);
+	
+      /*JButton*/ bShow = new JButton("Show");
+      bShow.setActionCommand("routePattern.stoplistShow");
+      bShow.addActionListener(this);
 	
       layoutCons.gridx = 0;
@@ -892,4 +900,18 @@
       layoutCons.weighty = 0.0;
       layoutCons.fill = GridBagConstraints.BOTH;
+      gridbag.setConstraints(bShow, layoutCons);
+      contentPane.add(bShow);
+	
+      /*JButton*/ bMark = new JButton("Mark");
+      bMark.setActionCommand("routePattern.stoplistMark");
+      bMark.addActionListener(this);
+	
+      layoutCons.gridx = 1;
+      layoutCons.gridy = 1;
+      layoutCons.gridheight = 2;
+      layoutCons.gridwidth = 1;
+      layoutCons.weightx = 1.0;
+      layoutCons.weighty = 0.0;
+      layoutCons.fill = GridBagConstraints.BOTH;
       gridbag.setConstraints(bMark, layoutCons);
       contentPane.add(bMark);
@@ -899,6 +921,7 @@
       bAdd.addActionListener(this);
 	
-      layoutCons.gridx = 1;
+      layoutCons.gridx = 2;
       layoutCons.gridy = 1;
+      layoutCons.gridheight = 1;
       layoutCons.gridwidth = 1;
       layoutCons.weightx = 1.0;
@@ -912,30 +935,4 @@
       bDelete.addActionListener(this);
 	
-      layoutCons.gridx = 1;
-      layoutCons.gridy = 2;
-      layoutCons.gridwidth = 1;
-      layoutCons.weightx = 1.0;
-      layoutCons.weighty = 0.0;
-      layoutCons.fill = GridBagConstraints.BOTH;
-      gridbag.setConstraints(bDelete, layoutCons);
-      contentPane.add(bDelete);
-	
-      /*JButton*/ bSort = new JButton("Sort");
-      bSort.setActionCommand("routePattern.stoplistSort");
-      bSort.addActionListener(this);
-	
-      layoutCons.gridx = 2;
-      layoutCons.gridy = 1;
-      layoutCons.gridwidth = 1;
-      layoutCons.weightx = 1.0;
-      layoutCons.weighty = 0.0;
-      layoutCons.fill = GridBagConstraints.BOTH;
-      gridbag.setConstraints(bSort, layoutCons);
-      contentPane.add(bSort);
-	
-      /*JButton*/ bReflect = new JButton("Reflect");
-      bReflect.setActionCommand("routePattern.stoplistReflect");
-      bReflect.addActionListener(this);
-      
       layoutCons.gridx = 2;
       layoutCons.gridy = 2;
@@ -944,7 +941,33 @@
       layoutCons.weighty = 0.0;
       layoutCons.fill = GridBagConstraints.BOTH;
+      gridbag.setConstraints(bDelete, layoutCons);
+      contentPane.add(bDelete);
+	
+      /*JButton*/ bSort = new JButton("Sort");
+      bSort.setActionCommand("routePattern.stoplistSort");
+      bSort.addActionListener(this);
+	
+      layoutCons.gridx = 3;
+      layoutCons.gridy = 1;
+      layoutCons.gridwidth = 1;
+      layoutCons.weightx = 1.0;
+      layoutCons.weighty = 0.0;
+      layoutCons.fill = GridBagConstraints.BOTH;
+      gridbag.setConstraints(bSort, layoutCons);
+      contentPane.add(bSort);
+	
+      /*JButton*/ bReflect = new JButton("Reflect");
+      bReflect.setActionCommand("routePattern.stoplistReflect");
+      bReflect.addActionListener(this);
+      
+      layoutCons.gridx = 3;
+      layoutCons.gridy = 2;
+      layoutCons.gridwidth = 1;
+      layoutCons.weightx = 1.0;
+      layoutCons.weighty = 0.0;
+      layoutCons.fill = GridBagConstraints.BOTH;
       gridbag.setConstraints(bReflect, layoutCons);
       contentPane.add(bReflect);
-	
+      
       //Meta Tab
       contentPane = tabMeta;
@@ -1045,4 +1068,18 @@
       rowContent.add("");
       otherTagsData.addRow(rowContent);
+    }
+    else if ("routePattern.itineraryFind".equals(event.getActionCommand()))
+    {
+      if (mainDataSet == null)
+	return;
+      
+      itineraryTable.clearSelection();
+      
+      for (int i = 0; i < itineraryData.getRowCount(); ++i)
+      {
+	if ((itineraryData.ways.elementAt(i) != null) &&
+	    (mainDataSet.isSelected(itineraryData.ways.elementAt(i))))
+	    itineraryTable.addRowSelectionInterval(i, i);
+      }
     }
     else if ("routePattern.itineraryShow".equals(event.getActionCommand()))
@@ -1313,4 +1350,18 @@
       cleanupGaps();
       rebuildWays();
+    }
+    else if ("routePattern.stoplistFind".equals(event.getActionCommand()))
+    {
+      if (mainDataSet == null)
+	return;
+      
+      stoplistTable.clearSelection();
+      
+      for (int i = 0; i < stoplistData.getRowCount(); ++i)
+      {
+	if ((stoplistData.nodes.elementAt(i) != null) &&
+	      (mainDataSet.isSelected(stoplistData.nodes.elementAt(i))))
+	  stoplistTable.addRowSelectionInterval(i, i);
+      }
     }
     else if ("routePattern.stoplistShow".equals(event.getActionCommand()))
