/*
* 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.javascript;
import com.webobjects.appserver.WOComponent;
import com.webobjects.appserver.WOContext;
/**
* When returned will close the current page by calling <code>onload=window.close()</code>.
* Useful for server side determining if a window should be closed.
*/
public class ERXJSAutoClosePage 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;
private String additionalJavaScript;
/** Public constructor */
public ERXJSAutoClosePage(WOContext aContext) {
super(aContext);
}
/** component is stateless */
@Override
public boolean isStateless() { return true; }
/**
* @return JavaScript for onLoad function, additionalJavaScript() (if any) followed by "window.close()"
*/
public String onLoad() {
return (additionalJavaScript() != null ? additionalJavaScript() : "") + " window.close();";
}
/**
* Convenience method to set additionalJavaScript() to "opener.location.reload(true);")
*/
public void refreshOpener() {
setAdditionalJavaScript("opener.location.reload(true);");
}
/**
* @return additionalJavaScript to execute before closing the current window
*/
public String additionalJavaScript() {
return additionalJavaScript;
}
/**
* @param javaScript the additional JavaScript to execute before closing the current window
*/
public void setAdditionalJavaScript(String javaScript) {
additionalJavaScript = javaScript;
}
}