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() {