package freenet.node.useralerts; import freenet.support.HTMLNode; /** * ProxyUserAlert - a UserAlert implementation that has a pointer to another UA. * It can be set to null, in which case it is disabled, or to another UA. Thus we can * have a bunch of UAs and switch between them knowing that more than one will never * be displayed at the same time. */ public class ProxyUserAlert extends AbstractUserAlert { private UserAlert alert; private final UserAlertManager uam; private final boolean autoRegister; public ProxyUserAlert(UserAlertManager uam, boolean autoRegister) { this.uam = uam; this.autoRegister = autoRegister; } public void setAlert(UserAlert a) { UserAlert old = alert; alert = a; if(autoRegister) { if(old == null && alert != null) uam.register(this); } if(autoRegister) { if(alert == null) uam.unregister(this); } } @Override public boolean userCanDismiss() { return alert.userCanDismiss(); } @Override public String getTitle() { return alert.getTitle(); } @Override public String getText() { return alert.getText(); } @Override public HTMLNode getHTMLText() { return alert.getHTMLText(); } @Override public short getPriorityClass() { return alert.getPriorityClass(); } @Override public boolean isValid() { return alert != null && alert.isValid(); } @Override public void isValid(boolean validity) { if(alert != null) alert.isValid(validity); } @Override public String dismissButtonText() { return alert.dismissButtonText(); } @Override public boolean shouldUnregisterOnDismiss() { return alert.shouldUnregisterOnDismiss(); } @Override public void onDismiss() { if(alert != null) alert.onDismiss(); } @Override public String anchor() { return "anchor:"+Integer.toString(hashCode()); } @Override public String getShortText() { return alert.getShortText(); } @Override public boolean isEventNotification() { if(alert == null) return false; return alert.isEventNotification(); } }