Index: src/org/openstreetmap/josm/plugins/todo/TodoDialog.java
===================================================================
--- src/org/openstreetmap/josm/plugins/todo/TodoDialog.java	(revision 143)
+++ src/org/openstreetmap/josm/plugins/todo/TodoDialog.java	(working copy)
@@ -29,6 +29,7 @@
 
 import org.openstreetmap.josm.actions.AutoScaleAction;
 import org.openstreetmap.josm.actions.AutoScaleAction.AutoScaleMode;
+import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.data.osm.DataSelectionListener;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.event.DatasetEventManager;
@@ -66,6 +67,7 @@
     private final PassAction actPass = new PassAction(model);
     private final MarkAction actMark = new MarkAction(model);
     private final MarkSelectedAction actMarkSelected = new MarkSelectedAction(model);
+    private final ClearAndAddAction actClearAndAdd = new ClearAndAddAction(model);    
     /* The popup must be created AFTER actions */
     private final TodoPopup popupMenu = new TodoPopup(lstPrimitives);
 
@@ -112,6 +114,10 @@
         SideButton addButton = new SideButton(actAdd);
         actAdd.updateEnabledState();
 
+        // the clear and add button
+        SideButton clearAndAddButton = new SideButton(actClearAndAdd);
+        actClearAndAdd.updateEnabledState();
+
         // the pass button
         SideButton passButton = new SideButton(actPass);
         lstPrimitives.getSelectionModel().addListSelectionListener(actPass);
@@ -125,7 +131,7 @@
         // the mark from map button
         SideButton markSelectedButton = new SideButton(actMarkSelected);
 
-        createLayout(lstPrimitives, true, Arrays.asList(selectButton, addButton, passButton, markButton, markSelectedButton));
+        createLayout(lstPrimitives, true, Arrays.asList(selectButton, addButton, clearAndAddButton, passButton, markButton, markSelectedButton));
     }
 
     private static void zoom(OsmDataLayer layer) {
@@ -178,6 +184,7 @@
     @Override
     public void showNotify() {
         SelectionEventManager.getInstance().addSelectionListenerForEdt(actAdd);
+        SelectionEventManager.getInstance().addSelectionListenerForEdt(actClearAndAdd);
         SelectionEventManager.getInstance().addSelectionListenerForEdt(actMarkSelected);
         actAdd.updateEnabledState();
     }
@@ -317,6 +324,45 @@
         }
     }
 
+    private class ClearAndAddAction extends JosmAction implements DataSelectionListener {
+        private final TodoListModel model;
+
+        ClearAndAddAction(TodoListModel model) {
+            super(
+                tr("Clear and add"),
+                "dialogs/selectionlist",
+                tr("Clear list, add the selected items to the todo list and zoom first item."),
+                Shortcut.registerShortcut("subwindow:todo:clearandadd", tr("Clear and add elements"), KeyEvent.VK_CLOSE_BRACKET, Shortcut.CTRL),
+                false
+                );
+            this.model = model;            
+            updateEnabledState();
+        }
+
+        @Override
+        public void actionPerformed(ActionEvent e) {
+            model.clear();
+            model.addItems(getItems());
+            selectAndZoom(model.getSelected());
+        }
+
+        /**
+         * Update the enabled state of the action
+         */
+        public void updateEnabledState() {
+            if (MainApplication.getLayerManager().getEditLayer() == null) {
+                setEnabled(false);
+            } else {
+                setEnabled(!MainApplication.getLayerManager().getEditLayer().data.selectionEmpty());
+            }
+        }
+
+        @Override
+        public void selectionChanged(SelectionChangeEvent event) {
+            updateEnabledState();
+        }
+    }
+
     private class MarkSelectedAction extends AbstractAction implements DataSelectionListener {
         private final TodoListModel model;
 
@@ -514,6 +560,7 @@
     @Override
     public void propertyChange(PropertyChangeEvent arg0) {
         actAdd.updateEnabledState();
+        actClearAndAdd.updateEnabledState();
     }
 
     @Override
