// // ERDInspectButton.java: Class file for WO Component 'ERDInspectButton' // Project ERDirectToWeb // // Created by bposokho on Mon Jan 06 2003 // package er.directtoweb.components.buttons; import com.webobjects.appserver.WOComponent; import com.webobjects.appserver.WOContext; import com.webobjects.directtoweb.D2W; import com.webobjects.directtoweb.InspectPageInterface; import com.webobjects.eoaccess.EOUtilities; import com.webobjects.eocontrol.EOEditingContext; import com.webobjects.eocontrol.EOEnterpriseObject; import er.extensions.eof.ERXEC; import er.extensions.foundation.ERXValueUtilities; public class ERDInspectButton extends ERDActionButton { /** * 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 ERDInspectButton(WOContext context) { super(context); } public WOComponent inspectObjectAction() { WOComponent returnedValue = null; String configuration = (String) valueForBinding("inspectConfigurationName"); InspectPageInterface epi = (InspectPageInterface) D2W.factory().pageForConfigurationNamed(configuration, session()); epi.setNextPage(context().page()); boolean useExistingEditingContext = ERXValueUtilities.booleanValue(valueForBinding("useExistingEditingContext")); if (useExistingEditingContext) { // We just want to use the object's exiting editing context to inspect it epi.setObject(object()); returnedValue = (WOComponent) epi; } else { EOEditingContext context = ERXEC.newEditingContext(); //CHECKME ak: I don't remember why we would use a local instance when we just want to inspect... context.lock(); try { EOEnterpriseObject localObject = EOUtilities.localInstanceOfObject(context, object()); epi.setObject(localObject); context.hasChanges(); // Ensuring it survives. returnedValue = (WOComponent) epi; } finally { context.unlock(); } } return returnedValue; } }