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

com.citytechinc.cq.component.annotations.Component Maven / Gradle / Ivy

There is a newer version: 7.0.0
Show newest version
package com.citytechinc.cq.component.annotations;

import com.citytechinc.cq.component.annotations.editconfig.ActionConfig;
import com.citytechinc.cq.component.annotations.editconfig.DropTarget;
import com.citytechinc.cq.component.annotations.editconfig.FormParameter;

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

/**
 * The Component annotation is used to indicate that a Class represents a CQ
 * Component. Multiple properties which are universally applicable to all types
 * of components are exposed for configuration via this annotation.
 */
@Retention(RetentionPolicy.CLASS)
@Target(ElementType.TYPE)
public @interface Component {

    /**
     * Overrides the baseComponentPath
     *
     * @return String
     */
    String basePath() default "";

    /**
     * The path to the component definition within the context of a CQ content
     * tree. This is meant to override any default path specified for the
     * project as a whole.
     *
     * @return String
     */
    String path() default "";

    /**
     * The name which will identify this component. This property should be used
     * if the name which will be automatically generated for the component based
     * on the name of the component class is not appropriate for your purposes.
     *
     * @return String
     */
    String name() default "";

    /**
     * Populates the jcr:title of the Component's .content.xml
     *
     * @return String
     */
    String value();

    /**
     * Populates the jcr:description property of the Component's .content.xml
     *
     * @return String
     */
    String description() default "";

    /**
     * The component group into which this component will be placed. This
     * overrides any default group established for your project's build.
     *
     * @return String
     */
    String group() default "";

    /**
     * Indication of whether this component is a container for other components.
     * Populates the cq:isContainer property of the Component's .content.xml.
     *
     * @return boolean
     */
    boolean isContainer() default false;

    /**
     * Indication of whether the component should not be rendered within a
     * container. Populates the cq:noDecoration property of the Component's
     * .content.xml.
     *
     * @return boolean
     */
    boolean noDecoration() default false;

    /**
     * Populates the cq:templatePath property of the Component's .content.xml.
     *
     * @return String
     */
    String templatePath() default "";

    /**
     * Populates the dialogPath property of the Component's .content.xml.
     *
     * @return String
     */
    String dialogPath() default "";

    /**
     * Populates the jcr:created property of the Component's .content.xml.
     *
     * @return String
     */
    String created() default "";

    /**
     * Establishes the set of Tabs which will appear within a Component's
     * authoring dialog. When a multi-tab dialog is needed, all tabs must be
     * defined via this property. Individual dialog fields indicate which tab
     * they are to be placed into by number, starting from '1'. For more detail
     * concerning placing Dialog Fields into tabs, see
     * {@link com.citytechinc.cq.component.annotations.DialogField#tab()}
     *
     * @return Tab[]
     */
    Tab[] tabs() default {};

    /**
     * The list of actions which will populate the cq:actions attribute of the
     * _cq_editConfig.xml. For more information on valid actions see the Configuring Edit Behavior Documentation
     *
     * @return String[]
     */
    String[] actions() default {};

    /**
     * Populates the cq:dialogMode property of the _cq_editConfig.xml. For more
     * information on valid dialog modes see the Configuring Edit Behavior Documentation
     *
     * @return String
     */
    String dialogMode() default "floating";

    /**
     * Populates the cq:layout property of the _cq_editConfig.xml. For more
     * information on valid layouts see the Configuring Edit Behavior Documentation
     *
     * @return String
     */
    String layout() default "editbar";

    /**
     * Establishes the set of edit listeners which will be associated with the
     * Component. These populate the cq:listeners node of the
     * _cq_editConfig.xml. For more information on the purpose of and
     * configuration for listeners, see the Configuring Edit Behavior Documentation
     *
     * @return Listener[]
     */
    Listener[] listeners() default {};

    /**
     * Establishes the sling:resourceSuperType of this component
     *
     * @return String
     */
    String resourceSuperType() default "";

    /**
     * Establishes the empty text presented for components which are drop
     * targets.
     *
     * @return String
     */
    String emptyText() default "Drag components or assets here";

    /**
     * Indicates whether this component should inherit edit behavior from it's
     * super type. Populates the cq:inherit property of the _cq_editConfig.xml.
     * For more information on inheriting edit behavior configuration see the Configuring Edit Behavior Documentation
     *
     * @return boolean
     */
    boolean editConfigInherit() default false;

    /**
     * The name, without extension, to use for the output dialog xml file. This
     * can be used when you want to output a dialog type other than the edit
     * dialog. For example, a design dialog may be written for a component by
     * setting the fileName to 'design_dialog'.
     *
     * @return String
     */
    String fileName() default "dialog";

    /**
     * The name, without extension, to use for the output _cq_dialog xml file.
     * This can be used when you want to output a dialog type other than the
     * edit dialog.
     *
     * @return String
     */
    String touchFileName() default "_cq_dialog";

    /**
     * Indicates whether a _cq_editConfig file should be generated for the
     * component defined by the annotated Java Class. When set to false, a
     * _cq_editConfig file will not be generated regardless of whether one
     * already exists for the Component. When set to true, a _cq_editConfig file
     * will only be generated if one does not already exist for the Component.
     *
     * @return boolean
     */
    boolean editConfig() default true;

    /**
     * The width of the dialog popup widget. The default value -1 indicates that
     * the default width should be used.
     *
     * @return int
     */
    int dialogWidth() default -1;

    /**
     * The height of the dialog popup widget. The default value -1 indicates
     * that the default height should be used.
     *
     * @return int
     */
    int dialogHeight() default -1;

    /**
     * Establishes the components which are allowed to be children of this
     * component. This list populates the allowedChildren property of
     * .content.xml. For more information on the usage of allowedChildren see
     * the Component Documentation.
     *
     * @return String[]
     */
    String[] allowedChildren() default {};

    /**
     * Establishes the components which are allowed to be parents of this
     * component. This list populates the allowedParents property of
     * .content.xml. For more information on the usage of allowedParents see the
     * Component Documentation.
     *
     * @return String[]
     */
    String[] allowedParents() default {};

    /**
     * Populates the cq:cellName property of the .content.xml. For more
     * information on the intended usage of the cq:cellName property, see the Component Documentation.
     *
     * @return String
     */
    String cellName() default "";

    /**
     * Establishes the set of Action Configurations which will be written to the
     * cq:actionConfigs node of the _cq_editConfig.xml. For more information on
     * Action Configurations see the Configuring Edit Behavior Documentation.
     *
     * @return ActionConfig[]
     */
    ActionConfig[] actionConfigs() default {};

    /**
     * Indicates whether in place editing should be active for this component.
     * This property populates the active property of the cq:inplaceEditing node
     * in the _cq_editConfig.xml. For more information on inplace editing, see
     * the Configuring Edit Behavior Documentation.
     *
     * @return boolean
     */
    boolean inPlaceEditingActive() default true;

    /**
     * Establishes the path to the inplace editing configuration. This property
     * populates the configPath property of the cq:inplaceEditing node in the
     * _cq_editConfig.xml. For more information on inplace editing, see the Configuring Edit Behavior Documentation.
     *
     * @return String
     */
    String inPlaceEditingConfigPath() default "";

    /**
     * Establishes the type of inplace editor which will be used for the
     * annotated component. This property populates the editorType property of
     * the cq:inplaceEditing node in the _cq_editConfig.xml. For more
     * information on inplace editing, see the Configuring Edit Behavior Documentation.
     *
     * @return String
     */
    String inPlaceEditingEditorType() default "";

    /**
     * Establishes the set of form parameters written to the cq:formParameters
     * node of the _cq_editConfig.xml. For more information on form parameters
     * see the Configuring Edit Behavior Documentation.
     *
     * @return String
     */
    FormParameter[] formParameters() default {};

    /**
     * Establishes the list of drop targets written to the cq:dropTargets node
     * of the _cq_editConfig.xml. For more information on drop targets and their
     * usage, see the Configuring Edit Behavior Documentation.
     *
     * @return DropTarget[]
     */
    DropTarget[] dropTargets() default {};

    /**
     * A set of properties which are written to the content XML node.
     *
     * @return ContentProperty[]
     */
    ContentProperty[] contentAdditionalProperties() default {};

    /**
     * A list of extra client libs to be included on the jcr:root node
     *
     * @return ComponentProperty[]
     */
    String[] extraClientlibs() default {};

    /**
     * Indicates whether the Target context menu should be disabled for the
     * particular component. Populates the cq:disableTargeting property of the
     * _cq_editConfig.xml. For information on this properties usage, see this forum article.
     *
     * @return boolean
     */
    boolean disableTargeting() default false;

    /**
     * Definition of the cq:htmlTag child node of the component definition node.
     * See  this document for more information.
     *
     * @return HtmlTag[]
     */
    HtmlTag[] htmlTag() default {};

    /**
     * Indicates whether writing of the cq:dialog.xml appropriate to the Touch
     * UI AEM interface should be skipped for this component.
     *
     * @return boolean
     */
    boolean suppressTouchUIDialog() default false;

    /**
     * Indicates whether writing of the dialog.xml appropriate to the Classic UI
     * AEM interface should be skipped for this component.
     *
     * @return boolean
     */
    boolean suppressClassicUIDialog() default false;

    /**
     * A path to be followed when a user clicks the help button in the Touch UI
     * Authoring interface.
     *
     * @return String
     */
    String helpPath() default "";

    /**
     * Applicable to the Touch UI only
     * 

* If set to true, extended classes and implemented interfaces will not be * interrogated when arriving at a list of Dialog Fields for a Touch UI * dialog. This intends to support situations where you are both extending a * class and a sling:resourceType and thus will be using the dialog resource * merger for the inclusion of the supertype's dialog fields as opposed to * inclusion via class inheritance. * * @return boolean */ boolean suppressFieldInheritanceForTouchUI() default false; }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy