source: josm/trunk/src/org/openstreetmap/josm/gui/MainTermination.java@ 14140

Last change on this file since 14140 was 14140, checked in by Don-vip, 6 years ago

see #15229 - move Main* termination methods to lifecycle SPI + new class MainTermination

  • Property svn:eol-style set to native
File size: 2.0 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.io.IOException;
7import java.nio.file.InvalidPathException;
8import java.util.Objects;
9
10import org.openstreetmap.josm.Main;
11import org.openstreetmap.josm.data.cache.JCSCacheManager;
12import org.openstreetmap.josm.tools.ImageProvider;
13import org.openstreetmap.josm.tools.Logging;
14
15/**
16 * JOSM termination sequence.
17 * @since 14140
18 */
19public class MainTermination implements Runnable {
20
21 private final MainApplication application;
22
23 /**
24 * Constructs a new {@code MainTermination}
25 * @param application Main application. Must not be null
26 */
27 public MainTermination(MainApplication application) {
28 this.application = Objects.requireNonNull(application);
29 }
30
31 @Override
32 public void run() {
33 try {
34 MainApplication.worker.shutdown();
35 } catch (SecurityException e) {
36 Logging.log(Logging.LEVEL_ERROR, "Unable to shutdown worker", e);
37 }
38 JCSCacheManager.shutdown();
39
40 if (application.getMainFrame() != null) {
41 application.getMainFrame().storeState();
42 }
43 if (MainApplication.getMap() != null) {
44 MainApplication.getMap().rememberToggleDialogWidth();
45 }
46 // Remove all layers because somebody may rely on layerRemoved events (like AutosaveTask)
47 MainApplication.getLayerManager().resetState();
48 ImageProvider.shutdown(false);
49 try {
50 Main.pref.saveDefaults();
51 } catch (IOException | InvalidPathException ex) {
52 Logging.log(Logging.LEVEL_WARN, tr("Failed to save default preferences."), ex);
53 }
54 ImageProvider.shutdown(true);
55
56 try {
57 // in case the current task still hasn't finished
58 MainApplication.worker.shutdownNow();
59 } catch (SecurityException e) {
60 Logging.log(Logging.LEVEL_ERROR, "Unable to shutdown worker", e);
61 }
62 }
63}
64
Note: See TracBrowser for help on using the repository browser.