com.citytechinc.cq.component.annotations.Component Maven / Gradle / Ivy
/**
* Copyright 2017 ICF Olson
*
* 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.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;
/**
* 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;
}