2 * Sone - ListNotification.java - Copyright © 2010 David Roden
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 package net.pterodactylus.sone.notify;
20 import java.util.ArrayList;
21 import java.util.Collections;
22 import java.util.List;
24 import net.pterodactylus.util.notify.TemplateNotification;
25 import net.pterodactylus.util.template.Template;
28 * Notification that maintains a list of new elements.
31 * The type of the items
32 * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
34 public class ListNotification<T> extends TemplateNotification {
36 /** The list of new elements. */
37 private final List<T> elements = Collections.synchronizedList(new ArrayList<T>());
40 * Creates a new list notification.
43 * The ID of the notification
45 * The key under which to store the elements in the template
47 * The template to render
49 public ListNotification(String id, String key, Template template) {
51 template.set(key, elements);
52 template.set("notification", this);
60 * Returns the current list of elements.
62 * @return The current list of elements
64 public List<T> getElements() {
65 return new ArrayList<T>(elements);
69 * Returns whether there are any new elements.
71 * @return {@code true} if there are no new elements, {@code false} if there
74 public boolean isEmpty() {
75 return elements.isEmpty();
79 * Adds a discovered element.
84 public void add(T element) {
85 elements.add(element);
90 * Removes the given element from the list of new elements.
93 * The element to remove
95 public void remove(T element) {
96 elements.remove(element);
97 if (elements.isEmpty()) {
104 // ABSTRACTNOTIFICATION METHODS
111 public void dismiss() {