001package jmri.jmrit.operations.setup.backup;
002
003import java.awt.event.ActionEvent;
004import java.io.IOException;
005
006import javax.swing.AbstractAction;
007
008import jmri.InstanceManager;
009import jmri.ShutDownManager;
010import jmri.jmrit.operations.OperationsManager;
011import jmri.jmrit.operations.OperationsXml;
012import jmri.util.swing.*;
013
014/**
015 * Swing action to load the operation demo files.
016 *
017 * @author Bob Jacobsen Copyright (C) 2001
018 * @author Daniel Boudreau Copyright (C) 2008
019 * @author Gregory Madsen Copyright(C) 2012
020 */
021public class LoadDemoAction extends AbstractAction {
022
023//    private final static Logger log = LoggerFactory.getLogger(LoadDemoAction.class);
024
025    public LoadDemoAction() {
026        super(Bundle.getMessage("LoadDemo"));
027    }
028
029    @Override
030    public void actionPerformed(ActionEvent e) {
031        // check to see if files are dirty
032        if (OperationsXml.areFilesDirty()) {
033            if (JmriJOptionPane.showConfirmDialog(null, Bundle.getMessage("OperationsFilesModified"),
034                    Bundle.getMessage("SaveOperationFiles"), JmriJOptionPane.YES_NO_OPTION) == JmriJOptionPane.YES_OPTION) {
035                OperationsXml.save();
036            }
037        }
038
039        int results = JmriJOptionPane.showConfirmDialog(null, Bundle.getMessage("AreYouSureDemoFiles"),
040                Bundle.getMessage("LoadDemo"), JmriJOptionPane.OK_CANCEL_OPTION);
041        if (results != JmriJOptionPane.OK_OPTION) {
042            return;
043        }
044
045        AutoBackup backup = InstanceManager.getDefault(AutoBackup.class);
046
047        try {
048            backup.autoBackup();
049
050            backup.loadDemoFiles();
051
052            // now deregister shut down task
053            // If Trains window was opened, then task is active
054            // otherwise it is normal to not have the task running
055            InstanceManager.getDefault(OperationsManager.class).setShutDownTask(null);
056
057            JmriJOptionPane.showMessageDialog(null, Bundle.getMessage("YouMustRestartAfterLoadDemo"),
058                    Bundle.getMessage("LoadDemoSuccessful"), JmriJOptionPane.INFORMATION_MESSAGE);
059
060            InstanceManager.getDefault(ShutDownManager.class).restart();
061
062        } catch (IOException ex) {
063            ExceptionContext context = new ExceptionContext(ex, Bundle.getMessage("LoadingDemoFiles"),
064                    Bundle.getMessage("LoadingDemoMakeSure"));
065            ExceptionDisplayFrame.displayExceptionDisplayFrame(null, context);
066        }
067    }
068}
069
070