package __TOP_LEVEL_PACKAGE__.client.scaffold.place; import com.google.gwt.event.shared.EventBus; import com.google.gwt.place.shared.PlaceController; import com.google.web.bindery.requestfactory.shared.EntityProxy; import com.google.web.bindery.requestfactory.shared.RequestContext; import com.google.gwt.user.client.ui.AcceptsOneWidget; /** * Extends {@link AbstractProxyEditActivity} to first create an instance to edit * * @param <P> the type of proxy to create and edit */ public abstract class CreateAndEditProxy<P extends EntityProxy> extends AbstractProxyEditActivity<P> { private final P proxy; private final PlaceController placeController; private Class<P> proxyClass; public CreateAndEditProxy(Class<P> proxyClass, RequestContext request, ProxyEditView<P, ?> view, PlaceController placeController) { super(view, placeController); this.proxy = request.create(proxyClass); this.placeController = placeController; this.proxyClass = proxyClass; } @Override public void start(AcceptsOneWidget display, EventBus eventBus) { super.start(display, eventBus); } /** * Called when the user cancels or has successfully saved. Refines the default * implementation to clear the display given at {@link #start} on cancel. * * @param saved true if changes were comitted, false if user canceled */ @Override protected void exit(boolean saved) { if (!saved) { placeController.goTo(new ProxyListPlace(proxyClass)); } else { super.exit(saved); } } @Override protected P getProxy() { return proxy; } }