| /* |
| * Copyright 2011 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; |
| |
| /** |
| * Describes an Editor within an Editor hierarchy. |
| * |
| * @param <T> The type of data edited by the Editor |
| * @see com.google.gwt.editor.client.testing.FakeEditorContext |
| */ |
| public interface EditorContext<T> { |
| String ROOT_PATH = ""; |
| |
| /** |
| * Returns a non-null value if the editor returned by {@link #getEditor()} |
| * implements {@link CompositeEditor}. |
| */ |
| CompositeEditor<T, ?, ?> asCompositeEditor(); |
| |
| /** |
| * Returns a non-null value if the editor returned by {@link #getEditor()} |
| * implements {@link HasEditorDelegate}. |
| */ |
| HasEditorDelegate<T> asHasEditorDelegate(); |
| |
| /** |
| * Returns a non-null value if the editor returned by {@link #getEditor()} |
| * implements {@link HasEditorErrors}. |
| */ |
| HasEditorErrors<T> asHasEditorErrors(); |
| |
| /** |
| * Returns a non-null value if the editor returned by {@link #getEditor()} |
| * implements {@link LeafValueEditor}. |
| */ |
| LeafValueEditor<T> asLeafValueEditor(); |
| |
| /** |
| * Returns a non-null value if the editor returned by {@link #getEditor()} |
| * implements {@link ValueAwareEditor}. |
| */ |
| ValueAwareEditor<T> asValueAwareEditor(); |
| |
| /** |
| * Returns {@code true} if {@link #setInModel(Object)} can be called |
| * successfully. |
| */ |
| boolean canSetInModel(); |
| |
| /** |
| * Returns {@code value} cast to the type accepted by the Editor or throws a |
| * {@link ClassCastException}. |
| * |
| * @param value any value, including {@code null} |
| * @return {@code value} cast to the {@code T} type |
| * @throws ClassCastException if {@code} value is not assignable to the type |
| * {@code T} |
| */ |
| T checkAssignment(Object value); |
| |
| /** |
| * Returns the absolute path of the Editor within the hierarchy. This method |
| * should be preferred to calling {@code getEditorDelegate().getPath()} |
| * becasue not all {@link LeafValueEditor LeafValueEditors} are guaranteed to |
| * have an associated delegate. |
| */ |
| String getAbsolutePath(); |
| |
| /** |
| * Returns the {@code T} type. |
| */ |
| Class<T> getEditedType(); |
| |
| /** |
| * Returns the associated Editor. |
| */ |
| Editor<T> getEditor(); |
| |
| /** |
| * Returns the {@link EditorDelegate} associated with the current Editor, |
| * which may be {@code null} for {@link LeafValueEditor LeafValueEditors}. |
| */ |
| EditorDelegate<T> getEditorDelegate(); |
| |
| /** |
| * Returns the value to be edited by the current editor. |
| */ |
| T getFromModel(); |
| |
| /** |
| * Sets a new value in the data hierarchy being edited. The |
| * {@link #checkAssignment(Object)} method may be used to avoid an unsafe |
| * generic cast. |
| */ |
| void setInModel(T data); |
| |
| /** |
| * Traverse an editor created by |
| * {@link CompositeEditor#createEditorForTraversal()} that reflects an |
| * uninitialized instance of a composite sub-editor. This can be used to |
| * examine the internal structure of a {@link CompositeEditor} even if there |
| * are no data elements being edited by that editor. |
| * |
| * @throws IllegalStateException if the current Editor is not a |
| * CompositeEditor |
| */ |
| void traverseSyntheticCompositeEditor(EditorVisitor visitor); |
| } |