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 }