All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.airbnb.epoxy.PackageModelViewConfig Maven / Gradle / Ivy

package com.airbnb.epoxy;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Settings that apply to all views annotated with {@link com.airbnb.epoxy.ModelView} in this
 * package. Also applies to subpackages, unless other package config values are set in those sub
 * packages.
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.CLASS)
public @interface PackageModelViewConfig {
  /**
   * The R class used in this module (eg "com.example.app.R.class"). This is needed so Epoxy can
   * look up layout files.
   */
  Class rClass();
  /**
   * A default layout pattern to be used for specifying layouts for generated models. If this is set
   * then a layout can be omitted from a view's {@link com.airbnb.epoxy.ModelView} annotation.
   * 

* The "%s" placeholder represents the view's name in snack case. For example, the default value * will use a layout resource of "R.layout.my_view" for the MyView class. If the layout name is * changed to "view_holder_%s" then the layout used would be "R.layout.view_holder_my_view". */ String defaultLayoutPattern() default "%s"; /** An optional EpoxyModel subclass that generated models should extend. */ Class defaultBaseModelClass() default Void.class; /** * If true, any layout file name that has a view's default layout as a prefix will be included as * a method on the generated model for that view. *

* For example, if the layout is "R.layout.my_view" then any layouts in the form of * "R.layout.my_view_*" will result in a generated method like "with*Layout" that will apply that * other layout instead of the default. */ boolean useLayoutOverloads() default false; /** * Suffix, which will be appended to generated model's names. "Model_" is a default value. */ String generatedModelSuffix() default "Model_"; /** * Controls whether "builder" setter functions that returns the model type will be duplicated * from super model classes with the function return type updated to use the generated model name. * This helps make all setters (such as id(...) ) return the same generated model so they can be * chained in a builder pattern. This is mainly intended for Java usage and is generally * unnecessary when using models in kotlin, especially if the generated kotlin model * build extension functions are used. Disabling this can greatly reduce the number of * methods generated on models. * * Default is false. This may also be set project wide with an annotation processor option. */ Option disableGenerateBuilderOverloads() default Option.Default; /** * Controls whether getter functions (that return the value of each attribute) are generated * on models. * * Disabling this can greatly reduce the number of methods generated on models. * * Default is false. This may also be set project wide with an annotation processor option. */ Option disableGenerateGetters() default Option.Default; /** * Controls whether the "reset" function (that clears all attribute values) are generated * on models. This function is generally legacy and is not recommended to be used with the modern * immutable model approach of EpoxyControllers. * * Disabling this reduces the amount of generated code. * * Default is false. This may also be set project wide with an annotation processor option. */ Option disableGenerateReset() default Option.Default; /** * Enable or Disable an option, or inherit the default. */ enum Option { Default, Enabled, Disabled } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy