package er.directtoweb.components; import org.apache.log4j.Logger; import com.webobjects.appserver.WOContext; import com.webobjects.directtoweb.D2WContext; import com.webobjects.directtoweb.D2WHead; import com.webobjects.directtoweb.ERD2WContext; import com.webobjects.foundation.NSSelector; import er.directtoweb.ERD2WFactory; /** * Better D2WHead component which provides the title as a human readable name and * allows for component content. Drop it in your page wrapper. * * @author ak */ public class ERD2WHead extends D2WHead { /** * 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; static final Logger log = Logger.getLogger(ERD2WHead.class); protected static D2WContext _d2wContext; public ERD2WHead(WOContext context) { super(context); } public String displayNameForPageConfiguration() { NSSelector sel = new NSSelector("d2wContext"); if(sel.implementedByObject(context().page())) { D2WContext context = (D2WContext) context().page().valueForKey("d2wContext"); return (String) context.valueForKey("displayNameForPageConfiguration"); } else { if(_d2wContext == null) _d2wContext = ERD2WContext.newContext(); synchronized(_d2wContext) { _d2wContext.setDynamicPage(ERD2WFactory.pageConfigurationFromPage(context().page())); return (String)_d2wContext.valueForKey("displayNameForPageConfiguration"); } } } }