com.citytechinc.cq.component.annotations.widgets.Html5SmartImage 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.widgets;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import com.citytechinc.cq.component.annotations.AspectRatio;
/**
* Represents a Widget of type CQ.html5.form.SmartImage in Classic UI
*
* The Smart Image is not supported in Touch UI and will render as a
* granite/ui/components/foundation/form/fileupload Widget
*/
@Retention(RetentionPolicy.CLASS)
@Target({ ElementType.FIELD, ElementType.METHOD })
public @interface Html5SmartImage {
/**
* Used for Classic UI only
*
* True to not render the flush button.
*
* @return boolean
*/
public boolean disableFlush() default false;
/**
* Used for Classic UI only
*
* True to hide the "information" tool
*
* @return boolean
*/
public boolean disableInfo() default false;
/**
* Used for Classic UI only
*
* True to not render the zoom slider
*
* @return boolean
*/
public boolean disableZoom() default false;
/**
* Indicates that this component represents the image itself and as such the
* image properties and file assets should be stored on the component's
* resource instead of a child resource
*/
public boolean isSelf() default false;
/**
* Path to which files will be uploaded.
*
* @return String
*/
public String uploadUrl() default "/tmp/upload/*";
/**
* Used for Classic UI only
*
* Groups involved in drag & drop
*
* @return String[]
*/
public String[] ddGroups() default { "media" };
/**
* Used for Classic UI only
*
* Indication of whether the HTML5 Smart Image Widget should be rendered as
* a stand alone tab.
*
* @return boolean
*/
public boolean tab() default true;
/**
* Used for Classic UI only
*
* Height of the SmartImage component. Note: You must explicitly specify
* height if you intend to render the HTML5 Smart Image Widget outside the
* context of its own tab.
*
* @return int
*/
public int height() default 0;
/**
* Used for Classic UI only
*
* Flag if uploading a file is allowed
*
* @return boolean
*/
public boolean allowUpload() default true;
/**
* Used for Classic UI only
*
* Crop Config Aspect Ratios
*
* @return AspectRatio[]
*/
public AspectRatio[] cropAspectRatios() default {};
/**
* Used for Classic UI only
*
* Method to turn on cropping and automatically set the cropParameter; this
* simplifies {@link #cropParameter()}
*
* @return boolean
*/
public boolean allowCrop() default false;
/**
* Used for Classic UI only
*
* Method to turn on rotating and automatically set the rotateParameter;
* this simplifies {@link #rotateParameter()}
*
* @return boolean
*/
public boolean allowRotate() default false;
/**
* Used for Classic UI only
*
* Method to turn on mapping and automatically set the mapParameter; this
* simplifies {@link #mapParameter()}
*
* @return boolean
*/
public boolean allowMap() default false;
/**
* Used for Touch UI Only
*
* Indicates that multiple files may be uploaded
*
* @return boolean
*/
public boolean multiple() default false;
/**
* Used for Touch UI Only
*
* URL where to upload the file, you can use ${suffix.path}
.
* Upload semantics are different between the legacy ExtJS API and the new
* Touch UI API.
*
* @return String
*/
public String touchUIUploadUrl() default "${suffix.path}";
/**
* Used for Touch UI Only
*
* The AEM documentation indicates that this should be an upload URL builder
*
* @return String
*/
public String uploadUrlBuilder() default "";
/**
* Used for Touch UI Only
*
* If true
, upload starts automatically once the file is
* selected
*
* @return boolean
*/
public boolean autoStart() default false;
/**
* Used for Touch UI Only
*
* Prefer HTML5 to upload files (if browser allows it)
*
* @return boolean
*/
public boolean useHtml5() default true;
/**
* Used for Touch UI Only
*
* Drop zone selector to upload files from file system directly (if browser
* allows it)
*
* @return String
*/
public String dropZone() default "";
/**
* Used for Touch UI Only
*
* The title associated with the upload button
*
* @return String
*/
public String title() default "";
/**
* Used for Touch UI Only
*
* The text of the button
*
* @return String
*/
public String text() default "";
/**
* Used for Touch UI Only
*
* The icon of the button
*
* @return String
*/
public String icon() default "";
/**
* Used for Touch UI Only
*
* Maximum size of a file to be uploaded in Megabytes
*
* @return int
*/
public int sizeLimit() default 0;
}