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        CONTAINS("contains"),
098        CREDITS_ENGINE("credits-engine"),
099        CROSS("cross"),
100        CROSSHAIRS("crosshairs"),
101        DATAGRID("datagrid"),
102        DATAPREP("dataprep"),
103        DATASETS("datasets"),
104        DATASTORE("datastore"),
105        DATASTREAMS_COLORED("datastreams-colored"),
106        DATASTREAMS_NEGATIVE("datastreams-negative"),
107        DATASTREAMS_POSITIVE("datastreams-positive"),
108        DATA_FABRIC_COLORED("data-fabric-colored"),
109        DATA_MODELS("data-models"),
110        DB_INPUT("db-input"),
111        DOWNLOAD("download"),
112        DRAG("drag"),
113        DRAG_AND_DROP("drag-and-drop"),
114        ELASTIC("elastic"),
115        ELLIPSIS("ellipsis"),
116        EMPTY_CALENDAR("empty-calendar"),
117        EMPTY_CELL("empty-cell"),
118        EMPTY_CHAR("empty-char"),
119        EMPTY_SPACE("empty-space"),
120        ENVIRONMENT("environment"),
121        EQUAL("equal"),
122        EXPANDED("expanded"),
123        EXPORT_HISTORY("export-history"),
124        EYE("eye"),
125        EYE_SLASH("eye-slash"),
126        FIELDGLASS("fieldglass"),
127        FIELD_SELECTOR("field-selector"),
128        FILES_O("files-o"),
129        FILE_COG("file-cog"),
130        FILE_COMPRESSED("file-compressed"),
131        FILE_CONNECT_O("file-connect-o"),
132        FILE_CSV_O("file-csv-o"),
133        FILE_DATABASE_O("file-database-o"),
134        FILE_HDFS_O("file-hdfs-o"),
135        FILE_JOB_O("file-job-o"),
136        FILE_JSON_O("file-json-o"),
137        FILE_MOVE("file-move"),
138        FILE_O("file-o"),
139        FILE_S3_O("file-s3-o"),
140        FILE_SALESFORCE("file-salesforce"),
141        FILE_TXT_O("file-txt-o"),
142        FILE_XLSX_O("file-xlsx-o"),
143        FILE_XLS_O("file-xls-o"),
144        FILE_XML_O("file-xml-o"),
145        FILTER("filter"),
146        FILTER_COLUMN("filter-column"),
147        FILTER_ROW("filter-row"),
148        FLINK("flink"),
149        FLINK_O("flink-o"),
150        FLOW("flow"),
151        FLOW_O("flow-o"),
152        FLOW_SOURCE_O("flow-source-o"),
153        FLOW_STEP_O("flow-step-o"),
154        FLOW_TARGET_O("flow-target-o"),
155        FLOW_UNDER_PLAN("flow-under-plan"),
156        FLOW_UNFINISHED("flow-unfinished"),
157        FOLDER("folder"),
158        FOLDER_CLOSED("folder-closed"),
159        FOLDER_SHARED("folder-shared"),
160        FOLDER_SHARED_OWNER("folder-shared-owner"),
161        FOLDER_SHARED_USER("folder-shared-user"),
162        FULLSCREEN("fullscreen"),
163        GOOGLE_DATAFLOW("google-dataflow"),
164        GROUP_CIRCLE("group-circle"),
165        HADOOP("hadoop"),
166        HAND_POINTER("hand-pointer"),
167        HIERARCHICAL_VIEW("hierarchical-view"),
168        HOME("home"),
169        INFO_CIRCLE("info-circle"),
170        JMS("jms"),
171        KAFKA("kafka"),
172        LAUNCH("launch"),
173        LAUNCHER("launcher"),
174        LESS_THAN("less-than"),
175        LESS_THAN_EQUAL("less-than-equal"),
176        LICENSE("license"),
177        LINK("link"),
178        LOCAL_STORAGE("local-storage"),
179        LOCK("lock"),
180        LOCKED("locked"),
181        LOGO("logo"),
182        LOGO_COLORED("logo-colored"),
183        LOGO_SQUARE("logo-square"),
184        MARKETO("marketo"),
185        MDM_COLORED("mdm-colored"),
186        MDM_NEGATIVE("mdm-negative"),
187        MDM_POSITIVE("mdm-positive"),
188        MINUS_CIRCLE("minus-circle"),
189        MORE_THAN("more-than"),
190        MORE_THAN_EQUAL("more-than-equal"),
191        MOST_TRUSTED("most-trusted"),
192        NETSUITE("netsuite"),
193        NETWORK("network"),
194        NORMALIZE("normalize"),
195        NOTE("note"),
196        NOT_EQUAL("not-equal"),
197        OPENER("opener"),
198        OVERVIEW("overview"),
199        PANEL_OPENER_BOTTOM("panel-opener-bottom"),
200        PANEL_OPENER_RIGHT("panel-opener-right"),
201        PENCIL("pencil"),
202        PHONE("phone"),
203        PIE_CHARTS("pie-charts"),
204        PIN("pin"),
205        PLACEHOLDER("placeholder"),
206        PLAY("play"),
207        PLUS("plus"),
208        PLUS_CIRCLE("plus-circle"),
209        POSTGRESQL("postgresql"),
210        POWER_OFF("power-off"),
211        PROJECTS("projects"),
212        PROMOTION_PIPELINES("promotion-pipelines"),
213        PUBSUB("pubsub"),
214        PYTHON("python"),
215        QUESTION_CIRCLE("question-circle"),
216        QUOTES("quotes"),
217        RAW_DATA("raw-data"),
218        REDO("redo"),
219        REFRESH("refresh"),
220        REMOTE_ENGINE("remote-engine"),
221        REPLICATE("replicate"),
222        ROLES("roles"),
223        SAMPLE("sample"),
224        SCHEDULER("scheduler"),
225        SEARCH("search"),
226        SEMANTIC("semantic"),
227        SEND("send"),
228        SHARE_ALT("share-alt"),
229        SHARING_DEFAULT("sharing-default"),
230        SHARING_OWNER("sharing-owner"),
231        SHARING_USER("sharing-user"),
232        SHIELD("shield"),
233        SHOW_UNASSIGNED_TASKS("show_unassigned_tasks"),
234        SLIDERS("sliders"),
235        SMILEY_ANGRY("smiley-angry"),
236        SMILEY_ENTHUSIAST("smiley-enthusiast"),
237        SMILEY_NEUTRAL("smiley-neutral"),
238        SMILEY_SATISFIED("smiley-satisfied"),
239        SMILEY_SLEEP("smiley-sleep"),
240        SMILEY_UNHAPPY("smiley-unhappy"),
241        SORT_19("sort-19"),
242        SORT_91("sort-91"),
243        SORT_ASC("sort-asc"),
244        SORT_AZ("sort-az"),
245        SORT_DESC("sort-desc"),
246        SORT_ZA("sort-za"),
247        SPARK("spark"),
248        STAR("star"),
249        STOP("stop"),
250        STREAMS("streams"),
251        TABLE("table"),
252        TAGS("tags"),
253        TASKS("tasks"),
254        TDC_COLORED("tdc-colored"),
255        TDC_NEGATIVE("tdc-negative"),
256        TDC_POSITIVE("tdc-positive"),
257        TDP_COLORED("tdp-colored"),
258        TDP_NEGATIVE("tdp-negative"),
259        TDP_POSITIVE("tdp-positive"),
260        TDS_COLORED("tds-colored"),
261        TDS_NEGATIVE("tds-negative"),
262        TDS_POSITIVE("tds-positive"),
263        TIC_COLORED("tic-colored"),
264        TIC_NEGATIVE("tic-negative"),
265        TIC_POSITIVE("tic-positive"),
266        TILES("tiles"),
267        TMC_COLORED("tmc-colored"),
268        TMC_NEGATIVE("tmc-negative"),
269        TMC_POSITIVE("tmc-positive"),
270        TRANSFORMER_WINDOW("transformer-window"),
271        TRASH("trash"),
272        TYPE_CONVERTER("type-converter"),
273        UNDO("undo"),
274        UNION("union"),
275        UNLOCKED("unlocked"),
276        UPLOAD("upload"),
277        USER_CIRCLE("user-circle"),
278        VERSIONING("versioning"),
279        WARNING("warning"),
280        WEBHOOK("webhook"),
281        WINDOW("window"),
282        WORD("word"),
283        WORKSPACES("workspaces"),
284        WORLD("world"),
285        ZOOMIN("zoomin"),
286        ZOOMOUT("zoomout"),
287        CUSTOM("custom"),
288        DEFAULT("default");
289
290        @Getter
291        private final String key;
292    }
293}