1 package fr.ifremer.quadrige3.ui.swing.desktop;
2
3 /*
4 * #%L
5 * Reef DB :: UI
6 * $Id:$
7 * $HeadURL:$
8 * %%
9 * Copyright (C) 2014 - 2015 Ifremer
10 * %%
11 * This program is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Affero General Public License as published by
13 * the Free Software Foundation, either version 3 of the License, or
14 * (at your option) any later version.
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU Affero General Public License
22 * along with this program. If not, see <http://www.gnu.org/licenses/>.
23 * #L%
24 */
25
26 import java.util.HashSet;
27 import java.util.Set;
28
29 /**
30 * <p>Abstract DesktopPower class.</p>
31 *
32 */
33 public abstract class DesktopPower {
34
35 public interface Listener {
36 /**
37 * os asks to App to quit.
38 *
39 * Windows machines - on reboot / logout. Mac - on reboot / logout +
40 * Command + Q Linux - reboot / logout
41 */
42 void quit();
43
44 }
45
46 protected final Set<Listener> listeners = new HashSet<>();
47
48 /**
49 * <p>addListener.</p>
50 *
51 * @param l a {@link DesktopPower.Listener} object.
52 */
53 public void addListener(Listener l) {
54 listeners.add(l);
55 }
56
57 /**
58 * <p>removeListener.</p>
59 *
60 * @param l a {@link DesktopPower.Listener} object.
61 */
62 public void removeListener(Listener l) {
63 listeners.remove(l);
64 }
65
66 /**
67 * <p>close.</p>
68 */
69 abstract public void close();
70
71 }