/* * Jitsi, the OpenSource Java VoIP and Instant Messaging client. * * Copyright @ 2015 Atlassian Pty Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.java.sip.communicator.impl.gui.main; import java.util.*; /** * The UINotificationGroup class represents a group of notifications. * * @author Yana Stamcheva */ public class UINotificationGroup { /** * A list of all unread notifications. */ private Collection unreadNotifications = new ArrayList(); /** * The name of the group to which this notification belongs. */ private final String groupName; /** * The display name of the group to which this notification belongs. */ private final String groupDisplayName; /** * * @param groupName the name of the group to which this notification belongs * @param groupDisplayName the display name of the group to which this */ public UINotificationGroup(String groupName, String groupDisplayName) { this.groupName = groupName; this.groupDisplayName = groupDisplayName; } /** * Returns the name of the group, to which this notification belongs. * * @return the name of the group, to which this notification belongs */ public String getGroupName() { return groupName; } /** * Returns the display name of the group, to which this notification * belongs. * * @return the display name of the group, to which this notification * belongs */ public String getGroupDisplayName() { return groupDisplayName; } /** * Adds the given notification to the list of unread notifications and * notifies interested listeners. * * @param notification the UINotification to add */ public void addNotification(UINotification notification) { synchronized (unreadNotifications) { // make sure we override it if we have the same unreadNotifications.remove(notification); unreadNotifications.add(notification); } } /** * Removes all unread notifications. */ public void removeAllNotifications() { synchronized (unreadNotifications) { List copy = new ArrayList<>(unreadNotifications); unreadNotifications.clear(); for (UINotification n : copy) { UINotificationManager.fireClearedEvent(n); } } } /** * Returns a list of all unread notifications. * * @return a list of all unread notifications */ public Iterator getUnreadNotifications() { return new ArrayList(unreadNotifications).iterator(); } /** * Returns the count of unread notifications for this group. * * @return the count of unread notifications for this group */ public int getUnreadNotificationsCount() { synchronized (unreadNotifications) { int count = 0; for(UINotification n : unreadNotifications) count += n.getUnreadObjects(); return count; } } }