package er.directtoweb.components.buttons; import org.apache.log4j.Logger; import com.webobjects.appserver.WOComponent; import com.webobjects.appserver.WOContext; import com.webobjects.directtoweb.ConfirmPageInterface; import com.webobjects.directtoweb.D2W; import com.webobjects.directtoweb.D2WPage; import er.directtoweb.delegates.ERDDeletionDelegate; import er.directtoweb.delegates.ERDPageDelegate; import er.extensions.eof.ERXGuardedObjectInterface; import er.extensions.localization.ERXLocalizer; /** * Delete button for repetitions. * * @binding object * @binding dataSource * @binding d2wContext * @binding trashcanExplanation * @binding noTrashcanExplanation * * @author ak on Mon Sep 01 2003 */ public class ERDDeleteButton 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(ERDDeleteButton.class); /** * Public constructor * @param context the context */ public ERDDeleteButton(WOContext context) { super(context); } public boolean canDelete() { return object() != null && object() instanceof ERXGuardedObjectInterface ? ((ERXGuardedObjectInterface)object()).canDelete() : true; } public WOComponent deleteObjectAction() { ConfirmPageInterface nextPage = (ConfirmPageInterface)D2W.factory().pageForConfigurationNamed((String)valueForBinding("confirmDeleteConfigurationName"), session()); nextPage.setConfirmDelegate(new ERDDeletionDelegate(object(), dataSource(), context().page())); nextPage.setCancelDelegate(new ERDPageDelegate(context().page())); D2WPage d2wPage = ((D2WPage)nextPage); String message = ERXLocalizer.currentLocalizer().localizedTemplateStringForKeyWithObject("ERDTrashcan.confirmDeletionMessage", d2wContext()); nextPage.setMessage(message); d2wPage.setObject(object()); return (WOComponent) nextPage; } public String onMouseOverTrashcan() { return hasBinding("trashcanExplanation") ? "self.status='" + valueForBinding("trashcanExplanation") + "'; return true" : ""; } public String onMouseOverNoTrashcan() { return hasBinding("noTrashcanExplanation") ? "self.status='" + valueForBinding("noTrashcanExplanation") + "'; return true" : ""; } }