| /* | |
| * 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); | |
| } |