1 package fr.ifremer.quadrige3.ui.swing.action;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 import fr.ifremer.quadrige3.ui.swing.Application;
27 import fr.ifremer.quadrige3.ui.swing.content.AbstractMainUIHandler;
28
29 import static org.nuiton.i18n.I18n.t;
30
31
32
33
34
35
36 public class CloseApplicationAction extends AbstractChangeScreenAction {
37
38 private int exitCode = Application.NORMAL_EXIT_CODE;
39
40
41
42
43
44
45 public CloseApplicationAction(AbstractMainUIHandler handler) {
46 super(handler, false, null);
47 setSkipCheckCurrentScreen(false);
48 setActionDescription(t("quadrige3.main.action.exit.tip"));
49 }
50
51
52
53
54
55
56 public void setExitCode(int exitCode) {
57 this.exitCode = exitCode;
58 switch (exitCode) {
59 case Application.NORMAL_EXIT_CODE:
60 forceActionDescription(t("quadrige3.main.action.exit.tip"));
61 break;
62 case Application.UPDATE_EXIT_CODE:
63 forceActionDescription(t("quadrige3.main.action.restart.tip"));
64 break;
65 }
66 }
67
68
69
70
71 @Override
72 public void doAction() throws Exception {
73 super.doAction();
74
75 createProgressionUIModel();
76 switch (exitCode) {
77 case Application.NORMAL_EXIT_CODE:
78 getProgressionUIModel().setMessage(t("quadrige3.main.action.exit.message"));
79 break;
80 case Application.UPDATE_EXIT_CODE:
81 getProgressionUIModel().setMessage(t("quadrige3.main.action.restart.message"));
82 break;
83 }
84
85
86 if (getContext().getSynchroHandler() != null)
87 getContext().getSynchroHandler().hidePopup();
88
89
90 getHandler().closeUI();
91
92
93 Application.exit(exitCode);
94 }
95
96
97
98
99 @Override
100 public void releaseAction() {
101 exitCode = Application.NORMAL_EXIT_CODE;
102 super.releaseAction();
103 }
104 }