package clipboard.monitor.windows; import clipboard.monitor.ClipboardEvent; import clipboard.monitor.ClipboardListener; import java.util.HashSet; import java.util.Set; /** * Conreate implementation of a Windows Clipboard Monitor with listener * management. * * @noosgi This class can be used without OSGi. * @author <a href="mailto:phil.kursawe@gmail.com">Philipp Kursawe</a> */ public class WindowsClipboardMonitor extends AbstractWindowsClipboardMonitor { private Set<ClipboardListener> listeners; @Override public void onChange(final ClipboardEvent event) { System.out.println("onChange!!!!"); if (listeners != null) { for (ClipboardListener listener : listeners) { try { listener.onEvent(event); } catch (Throwable t) { t.printStackTrace(); } } } } /** * Adds the given listener to this monitor. * * @param listener * to add. Adding the same listener more than once has no effect. */ public void addListener(ClipboardListener listener) { System.out.println("Add listenerssss"); getListeners().add(listener); } /** * Removes the given listener from this monitor. * * @param listener * to remove. Removing the same listener more than once has no * effect. If the listener was not added to this monitor before, * this method has no effect. */ public void removeListener(ClipboardListener listener) { getListeners().remove(listener); } protected Set<ClipboardListener> getListeners() { if (null == listeners) { listeners = new HashSet<ClipboardListener>(); } return listeners; } }