/* * 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.directtoweb.components.buttons; import org.apache.log4j.Logger; import com.webobjects.appserver.WOComponent; import com.webobjects.appserver.WOContext; import com.webobjects.directtoweb.D2W; import com.webobjects.directtoweb.EditPageInterface; import com.webobjects.eocontrol.EOEnterpriseObject; import er.extensions.eof.ERXEOControlUtilities; import er.extensions.eof.ERXGuardedObjectInterface; import er.extensions.foundation.ERXValueUtilities; /** * Nice edit button for editing a toMany relationship in another page. * @d2wKey useNestedEditingContext * @d2wKey isEntityEditable */ public class ERDEditButton 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; /** logging support */ private static final Logger log = Logger.getLogger(ERDEditButton.class); public ERDEditButton(WOContext context) {super(context);} protected EOEnterpriseObject localInstanceOfObject() { Object value = d2wContext().valueForKey("useNestedEditingContext"); boolean createNestedContext = ERXValueUtilities.booleanValue(value); return ERXEOControlUtilities.editableInstanceOfObject(object(), createNestedContext); } public boolean isEditable() { boolean result = ERXValueUtilities.booleanValue(d2wContext().valueForKey("isEntityEditable")); Object o = object(); if (o instanceof ERXGuardedObjectInterface) { result = result && ((ERXGuardedObjectInterface)o).canUpdate(); } return result; } public WOComponent editObjectAction() { EOEnterpriseObject localObject = localInstanceOfObject(); String configuration = (String)valueForBinding("editConfigurationName"); if(log.isDebugEnabled()){ log.debug("configuration = "+configuration); } EditPageInterface epi = (EditPageInterface)D2W.factory().pageForConfigurationNamed(configuration, session()); epi.setObject(localObject); epi.setNextPage(context().page()); localObject.editingContext().hasChanges(); // Ensuring it survives. return (WOComponent)epi; } }