[freenet-cvs] r15633 - trunk/freenet/src/freenet/node/useralerts

bombe at freenetproject.org bombe at freenetproject.org
Mon Oct 29 10:01:11 UTC 2007


Author: bombe
Date: 2007-10-29 10:01:11 +0000 (Mon, 29 Oct 2007)
New Revision: 15633

Modified:
   trunk/freenet/src/freenet/node/useralerts/UserAlertManager.java
Log:
add method to render a single user alert
add method to dismiss a user alert by hashcode

Modified: trunk/freenet/src/freenet/node/useralerts/UserAlertManager.java
===================================================================
--- trunk/freenet/src/freenet/node/useralerts/UserAlertManager.java	2007-10-29 09:24:33 UTC (rev 15632)
+++ trunk/freenet/src/freenet/node/useralerts/UserAlertManager.java	2007-10-29 10:01:11 UTC (rev 15633)
@@ -38,6 +38,31 @@
 		}
 	}
 
+	/**
+	 * Tries to find the user alert with the given hash code and dismisses it,
+	 * if found.
+	 * 
+	 * @see #unregister(UserAlert)
+	 * @param alertHashCode
+	 *            The hash code of the user alert to dismiss
+	 */
+	public void dismissAlert(int alertHashCode) {
+		UserAlert[] userAlerts = getAlerts();
+		for (int index = 0, count = userAlerts.length; index < count; index++) {
+			UserAlert userAlert = userAlerts[index];
+			if (userAlert.hashCode() == alertHashCode) {
+				if (userAlert.userCanDismiss()) {
+					if (userAlert.shouldUnregisterOnDismiss()) {
+						userAlert.onDismiss();
+						unregister(userAlert);
+					} else {
+						userAlert.isValid(false);
+					}
+				}
+			}
+		}
+	}
+
 	public UserAlert[] getAlerts() {
 		UserAlert[] a = null;
 		synchronized (alerts) {
@@ -77,27 +102,7 @@
 			if (!alert.isValid())
 				continue;
 			totalNumber++;
-			HTMLNode alertNode = null;
-			short level = alert.getPriorityClass();
-			if (level <= UserAlert.CRITICAL_ERROR)
-				alertNode = new HTMLNode("div", "class", "infobox infobox-error");
-			else if (level <= UserAlert.ERROR)
-				alertNode = new HTMLNode("div", "class", "infobox infobox-alert");
-			else if (level <= UserAlert.WARNING)
-				alertNode = new HTMLNode("div", "class", "infobox infobox-warning");
-			else if (level <= UserAlert.MINOR)
-				alertNode = new HTMLNode("div", "class", "infobox infobox-information");
-
-			alertsNode.addChild(alertNode);
-			alertNode.addChild("div", "class", "infobox-header", alert.getTitle());
-			HTMLNode alertContentNode = alertNode.addChild("div", "class", "infobox-content");
-			alertContentNode.addChild(alert.getHTMLText());
-			if (alert.userCanDismiss()) {
-				HTMLNode dismissFormNode = alertContentNode.addChild("form", new String[] { "action", "method" }, new String[] { ".", "post" }).addChild("div");
-				dismissFormNode.addChild("input", new String[] { "type", "name", "value" }, new String[] { "hidden", "disable", String.valueOf(alert.hashCode()) });
-				dismissFormNode.addChild("input", new String[] { "type", "name", "value" }, new String[] { "hidden", "formPassword", core.formPassword });
-				dismissFormNode.addChild("input", new String[] { "type", "value" }, new String[] { "submit", alert.dismissButtonText() });
-			}
+			alertsNode.addChild(renderAlert(alert));
 		}
 		if (totalNumber == 0) {
 			return new HTMLNode("#", "");
@@ -106,6 +111,39 @@
 	}
 
 	/**
+	 * Renders the given alert and returns the rendered HTML node.
+	 * 
+	 * @param userAlert
+	 *            The user alert to render
+	 * @return The rendered HTML node
+	 */
+	public HTMLNode renderAlert(UserAlert userAlert) {
+		HTMLNode userAlertNode = null;
+		short level = userAlert.getPriorityClass();
+		if (level <= UserAlert.CRITICAL_ERROR)
+			userAlertNode = new HTMLNode("div", "class", "infobox infobox-error");
+		else if (level <= UserAlert.ERROR)
+			userAlertNode = new HTMLNode("div", "class", "infobox infobox-alert");
+		else if (level <= UserAlert.WARNING)
+			userAlertNode = new HTMLNode("div", "class", "infobox infobox-warning");
+		else if (level <= UserAlert.MINOR)
+			userAlertNode = new HTMLNode("div", "class", "infobox infobox-information");
+
+		assert userAlertNode != null: "user alert has invalid priority!";
+		
+		userAlertNode.addChild("div", "class", "infobox-header", userAlert.getTitle());
+		HTMLNode alertContentNode = userAlertNode.addChild("div", "class", "infobox-content");
+		alertContentNode.addChild(userAlert.getHTMLText());
+		if (userAlert.userCanDismiss()) {
+			HTMLNode dismissFormNode = alertContentNode.addChild("form", new String[] { "action", "method" }, new String[] { ".", "post" }).addChild("div");
+			dismissFormNode.addChild("input", new String[] { "type", "name", "value" }, new String[] { "hidden", "disable", String.valueOf(userAlert.hashCode()) });
+			dismissFormNode.addChild("input", new String[] { "type", "name", "value" }, new String[] { "hidden", "formPassword", core.formPassword });
+			dismissFormNode.addChild("input", new String[] { "type", "name", "value" }, new String[] { "submit", "dismiss-user-alert", userAlert.dismissButtonText() });
+		}
+		return userAlertNode;
+	}
+
+	/**
 	 * Write the alert summary as HTML to a StringBuffer
 	 */
 	public HTMLNode createSummary() {




More information about the cvs mailing list