com.google.gwt.editor.client.EditorContext.java Source code

Java tutorial

Introduction

Here is the source code for com.google.gwt.editor.client.EditorContext.java

Source

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