001/**
002 * Copyright (C) 2006-2018 Talend Inc. - www.talend.com
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.talend.sdk.component.api.component;
017
018import static java.lang.annotation.ElementType.PACKAGE;
019import static java.lang.annotation.ElementType.TYPE;
020import static java.lang.annotation.RetentionPolicy.RUNTIME;
021
022import java.lang.annotation.Retention;
023import java.lang.annotation.Target;
024
025import org.talend.sdk.component.api.meta.Documentation;
026
027import lombok.Getter;
028import lombok.RequiredArgsConstructor;
029
030@Documentation("Associate an icon to a component, only supported on `@PartitionMapper`, `@Processor` and `@Emitter` classes.")
031@Target({ TYPE, PACKAGE })
032@Retention(RUNTIME)
033public @interface Icon {
034
035    /**
036     * @return the icon to associate to the component.
037     */
038    IconType value();
039
040    /**
041     * @return the custom icon key (not in {@link IconType}) to use if {@link Icon#value()} is {@link IconType#CUSTOM}.
042     */
043    String custom() default "";
044
045    /**
046     * See http://talend.surge.sh/icons/
047     * generated with
048     * {@code var a = document.getElementsByTagName("li");for (i = 0; i < a.length; i++) {var id = a[i].querySelector('svg').id;
049     * console.log(id.toUpperCase().replace(/-/g, '_') + '("' + id + "\"),");}} and with appending of DEFAULT and CUSTOM.
050     */
051    @RequiredArgsConstructor
052    enum IconType {
053        ACTIVEMQ("activemq"),
054        ACTIVITY("activity"),
055        AGGREGATE("aggregate"),
056        APACHE("apache"),
057        API_DESIGNER_COLORED("api-designer-colored"),
058        API_DESIGNER_NEGATIVE("api-designer-negative"),
059        API_DESIGNER_POSITIVE("api-designer-positive"),
060        API_TESTER_COLORED("api-tester-colored"),
061        API_TESTER_NEGATIVE("api-tester-negative"),
062        API_TESTER_POSITIVE("api-tester-positive"),
063        ARROW_LEFT("arrow-left"),
064        ARROW_RIGHT("arrow-right"),
065        AWS_KINESIS("aws-kinesis"),
066        BADGE("badge"),
067        BADGE_OUTLINE("badge-outline"),
068        BEAM("beam"),
069        BELL("bell"),
070        BELL_NOTIFICATION("bell-notification"),
071        BIGQUERY("bigquery"),
072        BLOCK("block"),
073        BOARD("board"),
074        BUBBLES("bubbles"),
075        BURGER("burger"),
076        CAMPAIGNS("campaigns"),
077        CARET_DOWN("caret-down"),
078        CARRIAGE_RETURN("carriage-return"),
079        CASSANDRA("cassandra"),
080        CHAIN("chain"),
081        CHARACTER("character"),
082        CHARTS("charts"),
083        CHECK("check"),
084        CHECK_CIRCLE("check-circle"),
085        CHECK_PLUS("check-plus"),
086        CHEVRON_END("chevron-end"),
087        CHEVRON_LEFT("chevron-left"),
088        CLOCK("clock"),
089        CLOUD_ENGINE("cloud-engine"),
090        CLOUD_UPGRADE("cloud-upgrade"),
091        CLUSTER("cluster"),
092        COG("cog"),
093        COLUMN_CHOOSER("column-chooser"),
094        COMPONENT_KIT_NEGATIVE("component-kit-negative"),
095        COMPONENT_KIT_POSITIVE("component-kit-positive"),
096        CONNECTIONS("connections"),
097        CREDITS_ENGINE("credits-engine"),
098        CROSS("cross"),
099        CROSSHAIRS("crosshairs"),
100        DATAGRID("datagrid"),
101        DATAPREP("dataprep"),
102        DATASETS("datasets"),
103        DATASTORE("datastore"),
104        DATASTREAMS_COLORED("datastreams-colored"),
105        DATASTREAMS_NEGATIVE("datastreams-negative"),
106        DATASTREAMS_POSITIVE("datastreams-positive"),
107        DATA_FABRIC_COLORED("data-fabric-colored"),
108        DATA_MODELS("data-models"),
109        DB_INPUT("db-input"),
110        DOWNLOAD("download"),
111        DRAG("drag"),
112        DRAG_AND_DROP("drag-and-drop"),
113        ELASTIC("elastic"),
114        ELLIPSIS("ellipsis"),
115        EMPTY_CELL("empty-cell"),
116        EMPTY_CHAR("empty-char"),
117        EMPTY_SPACE("empty-space"),
118        ENVIRONMENT("environment"),
119        EXPANDED("expanded"),
120        EXPORT_HISTORY("export-history"),
121        EYE("eye"),
122        EYE_SLASH("eye-slash"),
123        FIELD_SELECTOR("field-selector"),
124        FILES_O("files-o"),
125        FILE_COG("file-cog"),
126        FILE_COMPRESSED("file-compressed"),
127        FILE_CONNECT_O("file-connect-o"),
128        FILE_CSV_O("file-csv-o"),
129        FILE_DATABASE_O("file-database-o"),
130        FILE_HDFS_O("file-hdfs-o"),
131        FILE_JOB_O("file-job-o"),
132        FILE_JSON_O("file-json-o"),
133        FILE_MOVE("file-move"),
134        FILE_O("file-o"),
135        FILE_S3_O("file-s3-o"),
136        FILE_SALESFORCE("file-salesforce"),
137        FILE_TXT_O("file-txt-o"),
138        FILE_XLSX_O("file-xlsx-o"),
139        FILE_XLS_O("file-xls-o"),
140        FILE_XML_O("file-xml-o"),
141        FILTER("filter"),
142        FILTER_COLUMN("filter-column"),
143        FILTER_ROW("filter-row"),
144        FLINK("flink"),
145        FLINK_O("flink-o"),
146        FLOW("flow"),
147        FLOW_O("flow-o"),
148        FLOW_SOURCE_O("flow-source-o"),
149        FLOW_STEP_O("flow-step-o"),
150        FLOW_TARGET_O("flow-target-o"),
151        FLOW_UNDER_PLAN("flow-under-plan"),
152        FLOW_UNFINISHED("flow-unfinished"),
153        FOLDER("folder"),
154        FOLDER_CLOSED("folder-closed"),
155        FOLDER_SHARED("folder-shared"),
156        FULLSCREEN("fullscreen"),
157        GOOGLE_DATAFLOW("google-dataflow"),
158        GROUP_CIRCLE("group-circle"),
159        HADOOP("hadoop"),
160        HAND_POINTER("hand-pointer"),
161        HIERARCHICAL_VIEW("hierarchical-view"),
162        HOME("home"),
163        INFO_CIRCLE("info-circle"),
164        JMS("jms"),
165        KAFKA("kafka"),
166        LAUNCH("launch"),
167        LAUNCHER("launcher"),
168        LICENSE("license"),
169        LINK("link"),
170        LOCAL_STORAGE("local-storage"),
171        LOCK("lock"),
172        LOCKED("locked"),
173        LOGO("logo"),
174        LOGO_COLORED("logo-colored"),
175        LOGO_SQUARE("logo-square"),
176        MDM_COLORED("mdm-colored"),
177        MDM_NEGATIVE("mdm-negative"),
178        MDM_POSITIVE("mdm-positive"),
179        MINUS_CIRCLE("minus-circle"),
180        MOST_TRUSTED("most-trusted"),
181        NETWORK("network"),
182        NORMALIZE("normalize"),
183        NOTE("note"),
184        OPENER("opener"),
185        OVERVIEW("overview"),
186        PANEL_OPENER_BOTTOM("panel-opener-bottom"),
187        PANEL_OPENER_RIGHT("panel-opener-right"),
188        PENCIL("pencil"),
189        PHONE("phone"),
190        PIE_CHARTS("pie-charts"),
191        PIN("pin"),
192        PLACEHOLDER("placeholder"),
193        PLAY("play"),
194        PLUS("plus"),
195        PLUS_CIRCLE("plus-circle"),
196        POSTGRESQL("postgresql"),
197        POWER_OFF("power-off"),
198        PROJECTS("projects"),
199        PROMOTION_PIPELINES("promotion-pipelines"),
200        PUBSUB("pubsub"),
201        PYTHON("python"),
202        QUESTION_CIRCLE("question-circle"),
203        RAW_DATA("raw-data"),
204        REDO("redo"),
205        REFRESH("refresh"),
206        REMOTE_ENGINE("remote-engine"),
207        REPLICATE("replicate"),
208        ROLES("roles"),
209        SAMPLE("sample"),
210        SCHEDULER("scheduler"),
211        SEARCH("search"),
212        SEMANTIC("semantic"),
213        SHARE_ALT("share-alt"),
214        SHARING_DEFAULT("sharing-default"),
215        SHARING_OWNER("sharing-owner"),
216        SHARING_USER("sharing-user"),
217        SHIELD("shield"),
218        SHOW_UNASSIGNED_TASKS("show_unassigned_tasks"),
219        SLIDERS("sliders"),
220        SMILEY_ANGRY("smiley-angry"),
221        SMILEY_ENTHUSIAST("smiley-enthusiast"),
222        SMILEY_NEUTRAL("smiley-neutral"),
223        SMILEY_SATISFIED("smiley-satisfied"),
224        SMILEY_SLEEP("smiley-sleep"),
225        SMILEY_UNHAPPY("smiley-unhappy"),
226        SORT_19("sort-19"),
227        SORT_91("sort-91"),
228        SORT_ASC("sort-asc"),
229        SORT_AZ("sort-az"),
230        SORT_DESC("sort-desc"),
231        SORT_ZA("sort-za"),
232        SPARK("spark"),
233        STAR("star"),
234        STOP("stop"),
235        STREAMS("streams"),
236        TABLE("table"),
237        TAGS("tags"),
238        TASKS("tasks"),
239        TDC_COLORED("tdc-colored"),
240        TDC_NEGATIVE("tdc-negative"),
241        TDC_POSITIVE("tdc-positive"),
242        TDP_COLORED("tdp-colored"),
243        TDP_NEGATIVE("tdp-negative"),
244        TDP_POSITIVE("tdp-positive"),
245        TDS_COLORED("tds-colored"),
246        TDS_NEGATIVE("tds-negative"),
247        TDS_POSITIVE("tds-positive"),
248        TIC_COLORED("tic-colored"),
249        TIC_NEGATIVE("tic-negative"),
250        TIC_POSITIVE("tic-positive"),
251        TILES("tiles"),
252        TMC_COLORED("tmc-colored"),
253        TMC_NEGATIVE("tmc-negative"),
254        TMC_POSITIVE("tmc-positive"),
255        TRANSFORMER_WINDOW("transformer-window"),
256        TRASH("trash"),
257        TYPE_CONVERTER("type-converter"),
258        UNDO("undo"),
259        UNLOCKED("unlocked"),
260        UPLOAD("upload"),
261        USER_CIRCLE("user-circle"),
262        WARNING("warning"),
263        WEBHOOK("webhook"),
264        WINDOW("window"),
265        WORD("word"),
266        WORKSPACES("workspaces"),
267        WORLD("world"),
268        ZOOMIN("zoomin"),
269        ZOOMOUT("zoomout"),
270        CUSTOM("custom"),
271        DEFAULT("default");
272
273        @Getter
274        private final String key;
275    }
276}