/*
* Copyright (C) NetStruxr, Inc. All rights reserved.
*
* This software is published under the terms of the NetStruxr
* Public Software License version 0.5, a copy of which has been
* included with this distribution in the LICENSE.NPL file. */
package er.extensions.components;
import com.webobjects.appserver.WOComponent;
import com.webobjects.appserver.WOContext;
import com.webobjects.foundation.NSArray;
/**
* Nice for denoting that something has not been viewed. Extended in look frameworks.
*
* @binding item
* @binding list
* @binding condition A boolean
* @binding negate A boolean
*/
public class ERXUnreadMarker extends WOComponent {
/**
* Do I need to update serialVersionUID?
* See section 5.6 <cite>Type Changes Affecting Serialization</cite> on page 51 of the
* <a href="http://java.sun.com/j2se/1.4/pdf/serial-spec.pdf">Java Object Serialization Spec</a>
*/
private static final long serialVersionUID = 1L;
public ERXUnreadMarker(WOContext aContext) {
super(aContext);
}
@Override
public boolean isStateless() { return true; }
@Override
public void reset() { super.reset(); initialized=false; }
private boolean initialized=false;
private boolean result=false;
public boolean showUnread() {
if (!initialized) {
result=false;
if (hasBinding("condition")) {
Number n=(Number)valueForBinding("condition");
result=n!=null && n.intValue()!=0;
} else {
NSArray list=(NSArray)valueForBinding("list");
Object item=valueForBinding("item");
result=list!=null && item!=null && list.containsObject(item);
}
if (hasBinding("negate")) {
Integer negate=(Integer)valueForBinding("negate");
if (negate!=null && negate.intValue()!=0) result=!result;
}
initialized=true;
}
return result;
}
public boolean doNotShowUnread() { return !showUnread(); }
}