001package jmri.jmrit.operations.rollingstock.engines.tools;
002
003import java.awt.event.ActionEvent;
004
005import javax.swing.AbstractAction;
006
007import jmri.InstanceManager;
008import jmri.jmrit.operations.rollingstock.engines.Engine;
009import jmri.jmrit.operations.rollingstock.engines.EngineManager;
010import jmri.jmrit.operations.rollingstock.engines.gui.EnginesTableFrame;
011import jmri.util.swing.JmriJOptionPane;
012
013/**
014 * This routine will remove all engines from the operation database.
015 *
016 * @author Dan Boudreau Copyright (C) 2007
017 */
018public class DeleteEngineRosterAction extends AbstractAction {
019
020    EnginesTableFrame _enginesTableFrame;
021
022    public DeleteEngineRosterAction(EnginesTableFrame enginesTableFrame) {
023        super(Bundle.getMessage("MenuItemDelete"));
024        // delete all cars on a track or location
025        if (enginesTableFrame.enginesTableModel.trackName != null) {
026            String actionName = Bundle.getMessage("MenuDeleteEnginesTrack",
027                    enginesTableFrame.enginesTableModel.trackName);
028            putValue(NAME, actionName);
029        } else if (enginesTableFrame.enginesTableModel.locationName != null) {
030            String actionName = Bundle.getMessage("MenuDeleteEnginesLocation",
031                    enginesTableFrame.enginesTableModel.locationName);
032            putValue(NAME, actionName);
033        }
034        _enginesTableFrame = enginesTableFrame;
035    }
036
037    @Override
038    public void actionPerformed(ActionEvent ae) {
039        if (_enginesTableFrame.enginesTableModel.trackName == null &&
040                _enginesTableFrame.enginesTableModel.locationName == null) {
041            if (JmriJOptionPane.showConfirmDialog(null, Bundle.getMessage("engineSureDelete"),
042                    Bundle.getMessage("engineDeleteAll"),
043                    JmriJOptionPane.OK_CANCEL_OPTION) == JmriJOptionPane.OK_OPTION) {
044                log.debug("removing all engines from roster");
045                InstanceManager.getDefault(EngineManager.class).deleteAll();
046            }
047        } else {
048            // delete all cars on track or location
049            String message = Bundle.getMessage("engineDeleteEnginesTrack",
050                    _enginesTableFrame.enginesTableModel.trackName);
051            if (_enginesTableFrame.enginesTableModel.trackName == null) {
052                message = Bundle.getMessage("engineDeleteEnginesLocation",
053                        _enginesTableFrame.enginesTableModel.locationName);
054            }
055            if (JmriJOptionPane.showConfirmDialog(null, message,
056                    Bundle.getMessage("engineDeleteAll"),
057                    JmriJOptionPane.OK_CANCEL_OPTION) == JmriJOptionPane.OK_OPTION) {
058                for (Engine engine : _enginesTableFrame.enginesTableModel.getSelectedEngineList()) {
059                    InstanceManager.getDefault(EngineManager.class).deregister(engine);
060                }
061            }
062        }
063    }
064
065    private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(DeleteEngineRosterAction.class);
066}