/* * 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; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * Describes an editor whose behavior is not altered by the value being * displayed. * <p> * Editors, which may be classes or interfaces, may expose their sub-editors in * one or more of the following ways: * <ul> * <li>An instance field with at least package visibility whose name exactly is * the property that will be edited or <code><em>propertyName</em>Editor</code>. * </li> * <li>A no-arg method with at least package visibility whose name exactly is * the property that will be edited or <code><em>propertyName</em>Editor</code>. * </li> * <li>The {@link Path} annotation may be used on the field or accessor method * to specify a dotted path or to bypass the implicit naming convention.</li> * <li>Sub-Editors may be null. In this case, the Editor framework will ignore * these sub-editors.</li> * </ul> * Any exposed field or method whose type is Editor may also use the * {@link IsEditor} interface to provide an Editor instance. This allows view * objects to be written that can be attached to an Editor hierarchy without the * view directly implementing an Editor interface. * * @param <T> the type of object the editor displays. */ public interface Editor<T> { /** * Tells the Editor framework to ignore an Editor accessor. */ @Documented @Retention(RetentionPolicy.RUNTIME) @Target(value = {ElementType.FIELD, ElementType.METHOD}) public @interface Ignore { } /** * Maps a composite Editor's component Editors into the data-model. */ @Documented @Retention(RetentionPolicy.RUNTIME) @Target(value = {ElementType.FIELD, ElementType.METHOD}) public @interface Path { String value(); } }