X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2FWebInterface.java;h=5b9efb26fb57efe659e775851c6c53f444a8ac11;hb=0830c827254de6cd862619f3ddf8c42bad145f19;hp=bd12d5b1fbc80300d2a36b725ea4d5744d858fba;hpb=40e29fa1abc0d1da75831d69d4cc9f52601a4045;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/web/WebInterface.java b/src/main/java/net/pterodactylus/sone/web/WebInterface.java index bd12d5b..5b9efb2 100644 --- a/src/main/java/net/pterodactylus/sone/web/WebInterface.java +++ b/src/main/java/net/pterodactylus/sone/web/WebInterface.java @@ -30,12 +30,14 @@ import java.util.logging.Level; import java.util.logging.Logger; import net.pterodactylus.sone.core.Core; +import net.pterodactylus.sone.core.CoreListener; import net.pterodactylus.sone.data.Post; import net.pterodactylus.sone.data.Reply; import net.pterodactylus.sone.data.Sone; import net.pterodactylus.sone.freenet.L10nFilter; import net.pterodactylus.sone.freenet.wot.Identity; import net.pterodactylus.sone.main.SonePlugin; +import net.pterodactylus.sone.notify.NewSoneNotification; import net.pterodactylus.sone.template.CollectionAccessor; import net.pterodactylus.sone.template.CssClassNameFilter; import net.pterodactylus.sone.template.GetPagePlugin; @@ -85,11 +87,14 @@ import freenet.l10n.BaseL10n; * * @author David ‘Bombe’ Roden */ -public class WebInterface { +public class WebInterface implements CoreListener { /** The logger. */ private static final Logger logger = Logging.getLogger(WebInterface.class); + /** The notification manager. */ + private final NotificationManager notificationManager = new NotificationManager(); + /** The Sone plugin. */ private final SonePlugin sonePlugin; @@ -102,6 +107,9 @@ public class WebInterface { /** The template factory. */ private DefaultTemplateFactory templateFactory; + /** The “new Sone” notification. */ + private final NewSoneNotification newSoneNotification; + /** * Creates a new web interface. * @@ -131,6 +139,10 @@ public class WebInterface { templateFactory.addPlugin("paginate", new PaginationPlugin()); templateFactory.setTemplateProvider(new ClassPathTemplateProvider(templateFactory)); templateFactory.addTemplateObject("formPassword", formPassword); + + /* create notifications. */ + Template newSoneNotificationTemplate = templateFactory.createTemplate(createReader("/templates/notify/newSoneNotification.html")); + newSoneNotification = new NewSoneNotification(newSoneNotificationTemplate); } // @@ -147,6 +159,15 @@ public class WebInterface { } /** + * Returns the notification manager. + * + * @return The notification manager + */ + public NotificationManager getNotifications() { + return notificationManager; + } + + /** * Returns the l10n helper of the node. * * @return The node’s l10n helper @@ -192,13 +213,13 @@ public class WebInterface { Template startupNotificationTemplate = templateFactory.createTemplate(createReader("/templates/notify/startupNotification.html")); final TemplateNotification startupNotification = new TemplateNotification(startupNotificationTemplate); - getCore().getNotifications().addNotification(startupNotification); + notificationManager.addNotification(startupNotification); Ticker.getInstance().registerEvent(System.currentTimeMillis() + (120 * 1000), new Runnable() { @Override public void run() { - getCore().getNotifications().removeNotification(startupNotification); + startupNotification.dismiss(); } }, "Sone Startup Notification Remover"); } @@ -320,6 +341,46 @@ public class WebInterface { } } + // + // CORELISTENER METHODS + // + + /** + * {@inheritDoc} + */ + @Override + public void newSoneFound(Sone sone) { + newSoneNotification.addSone(sone); + notificationManager.addNotification(newSoneNotification); + } + + /** + * {@inheritDoc} + */ + @Override + public void newPostFound(Post post) { + /* TODO */ + } + + /** + * {@inheritDoc} + */ + @Override + public void newReplyFound(Reply reply) { + /* TODO */ + } + + /** + * {@inheritDoc} + */ + @Override + public void markSoneKnown(Sone sone) { + newSoneNotification.removeSone(sone); + if (newSoneNotification.isEmpty()) { + newSoneNotification.dismiss(); + } + } + /** * Template provider implementation that uses * {@link WebInterface#createReader(String)} to load templates for