Ticket #22655: updated.diff

File updated.diff, 4.1 KB (added by tondahaas@…, 3 years ago)

updated diff file

  • src/org/openstreetmap/josm/plugins/todo/TodoDialog.java

     
    2929
    3030import org.openstreetmap.josm.actions.AutoScaleAction;
    3131import org.openstreetmap.josm.actions.AutoScaleAction.AutoScaleMode;
     32import org.openstreetmap.josm.actions.JosmAction;
    3233import org.openstreetmap.josm.data.osm.DataSelectionListener;
    3334import org.openstreetmap.josm.data.osm.OsmPrimitive;
    3435import org.openstreetmap.josm.data.osm.event.DatasetEventManager;
     
    6667    private final PassAction actPass = new PassAction(model);
    6768    private final MarkAction actMark = new MarkAction(model);
    6869    private final MarkSelectedAction actMarkSelected = new MarkSelectedAction(model);
     70    private final ClearAndAddAction actClearAndAdd = new ClearAndAddAction(model);   
    6971    /* The popup must be created AFTER actions */
    7072    private final TodoPopup popupMenu = new TodoPopup(lstPrimitives);
    7173
     
    112114        SideButton addButton = new SideButton(actAdd);
    113115        actAdd.updateEnabledState();
    114116
     117        // the clear and add button
     118        SideButton clearAndAddButton = new SideButton(actClearAndAdd);
     119        actClearAndAdd.updateEnabledState();
     120
    115121        // the pass button
    116122        SideButton passButton = new SideButton(actPass);
    117123        lstPrimitives.getSelectionModel().addListSelectionListener(actPass);
     
    125131        // the mark from map button
    126132        SideButton markSelectedButton = new SideButton(actMarkSelected);
    127133
    128         createLayout(lstPrimitives, true, Arrays.asList(selectButton, addButton, passButton, markButton, markSelectedButton));
     134        createLayout(lstPrimitives, true, Arrays.asList(selectButton, addButton, clearAndAddButton, passButton, markButton, markSelectedButton));
    129135    }
    130136
    131137    private static void zoom(OsmDataLayer layer) {
     
    178184    @Override
    179185    public void showNotify() {
    180186        SelectionEventManager.getInstance().addSelectionListenerForEdt(actAdd);
     187        SelectionEventManager.getInstance().addSelectionListenerForEdt(actClearAndAdd);
    181188        SelectionEventManager.getInstance().addSelectionListenerForEdt(actMarkSelected);
    182189        actAdd.updateEnabledState();
    183190    }
     
    317324        }
    318325    }
    319326
     327    private class ClearAndAddAction extends JosmAction implements DataSelectionListener {
     328        private final TodoListModel model;
     329
     330        ClearAndAddAction(TodoListModel model) {
     331            super(
     332                tr("Clear and add"),
     333                "dialogs/selectionlist",
     334                tr("Clear list, add the selected items to the todo list and zoom first item."),
     335                Shortcut.registerShortcut("subwindow:todo:clearandadd", tr("Clear and add elements"), KeyEvent.VK_CLOSE_BRACKET, Shortcut.CTRL),
     336                false
     337                );
     338            this.model = model;           
     339            updateEnabledState();
     340        }
     341
     342        @Override
     343        public void actionPerformed(ActionEvent e) {
     344            model.clear();
     345            model.addItems(getItems());
     346            selectAndZoom(model.getSelected());
     347        }
     348
     349        /**
     350         * Update the enabled state of the action
     351         */
     352        public void updateEnabledState() {
     353            if (MainApplication.getLayerManager().getEditLayer() == null) {
     354                setEnabled(false);
     355            } else {
     356                setEnabled(!MainApplication.getLayerManager().getEditLayer().data.selectionEmpty());
     357            }
     358        }
     359
     360        @Override
     361        public void selectionChanged(SelectionChangeEvent event) {
     362            updateEnabledState();
     363        }
     364    }
     365
    320366    private class MarkSelectedAction extends AbstractAction implements DataSelectionListener {
    321367        private final TodoListModel model;
    322368
     
    514560    @Override
    515561    public void propertyChange(PropertyChangeEvent arg0) {
    516562        actAdd.updateEnabledState();
     563        actClearAndAdd.updateEnabledState();
    517564    }
    518565
    519566    @Override