package org.chartsy.chatsy.chat; import java.awt.Window; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.chartsy.chatsy.chat.util.ModelUtil; public class NativeManager { private List<NativeHandler> nativeHandlers = new ArrayList<NativeHandler>(); public NativeManager() { } public void addNativeHandler(NativeHandler nativeHandler) { nativeHandlers.add(nativeHandler); } public void removeNativeHandler(NativeHandler nativeHandler) { nativeHandlers.remove(nativeHandler); } public void flashWindow(Window window) { final Iterator alertNotifier = ModelUtil.reverseListIterator(nativeHandlers.listIterator()); while (alertNotifier.hasNext()) { final NativeHandler alert = (NativeHandler)alertNotifier.next(); boolean handle = alert.handleNotification(); if (handle) { alert.flashWindow(window); break; } } } public void flashWindowStopOnFocus(Window window) { final Iterator alertNotifiers = ModelUtil.reverseListIterator(nativeHandlers.listIterator()); while (alertNotifiers.hasNext()) { final NativeHandler alert = (NativeHandler)alertNotifiers.next(); boolean handle = alert.handleNotification(); if (handle) { alert.flashWindowStopWhenFocused(window); break; } } } public void stopFlashing(Window window) { final Iterator alertNotifiers = ModelUtil.reverseListIterator(nativeHandlers.listIterator()); while (alertNotifiers.hasNext()) { final NativeHandler alert = (NativeHandler)alertNotifiers.next(); boolean handle = alert.handleNotification(); if (handle) { alert.stopFlashing(window); break; } } } }