/* * Copyright 2010 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.google.gwt.editor.client; /** * Automates editing of simple bean-like objects. The {@link EditorDelegate} * provided from this driver has a no-op implementation of * {@link EditorDelegate#subscribe()}. * * <pre> * interface MyDriver extends SimpleBeanEditorDriver<MyObject, MyObjectEditor> {} * MyDriver instance = GWT.create(MyDriver.class); * { * MyObjectEditor editor = new MyObjectEditor(); * instance.initialize(editor); * // Do stuff * instance.edit(myObjectInstance); * // Do more stuff * instance.flush(); * } * </pre> * <p> * Note that this interface is intended to be implemented by generated code and * is subject to API expansion in the future. * * @param <T> the type being edited * @param <E> the Editor for the type * @see com.google.gwt.editor.client.testing.MockSimpleBeanEditorDriver */ public interface SimpleBeanEditorDriver<T, E extends Editor<? super T>> extends EditorDriver<T> { /** * Push the data in an object graph into the Editor given to * {@link #initialize}. * * @param object the object providing input data * @throws IllegalStateException if {@link #initialize} has not been called */ void edit(T object); /** * Update the object being edited with the current state of the Editor. * * @return the object passed into {@link #edit(Object)} * @throws IllegalStateException if {@link #edit(Object)} has not been called */ T flush(); /** * Initialize the editor driver. * * @param editor the Editor to populate */ void initialize(E editor); }