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        ARROW_LEFT("arrow-left"),
058        ARROW_RIGHT("arrow-right"),
059        AWS_KINESIS("aws-kinesis"),
060        BADGE("badge"),
061        BEAM("beam"),
062        BELL("bell"),
063        BELL_NOTIFICATION("bell-notification"),
064        BIGQUERY("bigquery"),
065        BLOCK("block"),
066        BOARD("board"),
067        BUBBLES("bubbles"),
068        BURGER("burger"),
069        CAMPAIGNS("campaigns"),
070        CARET_DOWN("caret-down"),
071        CASSANDRA("cassandra"),
072        CHAIN("chain"),
073        CHECK("check"),
074        CHECK_CIRCLE("check-circle"),
075        CHECK_PLUS("check-plus"),
076        CHEVRON_END("chevron-end"),
077        CHEVRON_LEFT("chevron-left"),
078        CLOCK("clock"),
079        CLOUD_ENGINE("cloud-engine"),
080        CLOUD_UPGRADE("cloud-upgrade"),
081        CLUSTER("cluster"),
082        COG("cog"),
083        COMPONENT_KIT_NEGATIVE("component-kit-negative"),
084        COMPONENT_KIT_POSITIVE("component-kit-positive"),
085        CONNECTIONS("connections"),
086        CREDITS_ENGINE("credits-engine"),
087        CROSS("cross"),
088        CROSSHAIRS("crosshairs"),
089        DATAGRID("datagrid"),
090        DATAPREP("dataprep"),
091        DATASETS("datasets"),
092        DATASTORE("datastore"),
093        DATASTREAMS_COLORED("datastreams-colored"),
094        DATASTREAMS_NEGATIVE("datastreams-negative"),
095        DATASTREAMS_POSITIVE("datastreams-positive"),
096        DATA_FABRIC_COLORED("data-fabric-colored"),
097        DATA_MODELS("data-models"),
098        DB_INPUT("db-input"),
099        DOWNLOAD("download"),
100        DRAG("drag"),
101        ELASTIC("elastic"),
102        ELLIPSIS("ellipsis"),
103        ENVIRONMENT("environment"),
104        EXPANDED("expanded"),
105        EXPORT_HISTORY("export-history"),
106        EYE("eye"),
107        EYE_SLASH("eye-slash"),
108        FIELD_SELECTOR("field-selector"),
109        FILES_O("files-o"),
110        FILE_COG("file-cog"),
111        FILE_COMPRESSED("file-compressed"),
112        FILE_CONNECT_O("file-connect-o"),
113        FILE_CSV_O("file-csv-o"),
114        FILE_DATABASE_O("file-database-o"),
115        FILE_HDFS_O("file-hdfs-o"),
116        FILE_JOB_O("file-job-o"),
117        FILE_JSON_O("file-json-o"),
118        FILE_MOVE("file-move"),
119        FILE_O("file-o"),
120        FILE_S3_O("file-s3-o"),
121        FILE_SALESFORCE("file-salesforce"),
122        FILE_TXT_O("file-txt-o"),
123        FILE_XLSX_O("file-xlsx-o"),
124        FILE_XLS_O("file-xls-o"),
125        FILE_XML_O("file-xml-o"),
126        FILTER("filter"),
127        FILTER_COLUMN("filter-column"),
128        FILTER_ROW("filter-row"),
129        FLINK("flink"),
130        FLINK_O("flink-o"),
131        FLOW("flow"),
132        FLOW_O("flow-o"),
133        FLOW_SOURCE_O("flow-source-o"),
134        FLOW_STEP_O("flow-step-o"),
135        FLOW_TARGET_O("flow-target-o"),
136        FLOW_UNDER_PLAN("flow-under-plan"),
137        FLOW_UNFINISHED("flow-unfinished"),
138        FOLDER("folder"),
139        FOLDER_CLOSED("folder-closed"),
140        FOLDER_SHARED("folder-shared"),
141        FULLSCREEN("fullscreen"),
142        GOOGLE_DATAFLOW("google-dataflow"),
143        GROUP_CIRCLE("group-circle"),
144        HADOOP("hadoop"),
145        HAND_POINTER("hand-pointer"),
146        HIERARCHICAL_VIEW("hierarchical-view"),
147        HOME("home"),
148        INFO_CIRCLE("info-circle"),
149        KAFKA("kafka"),
150        LAUNCH("launch"),
151        LAUNCHER("launcher"),
152        LICENSE("license"),
153        LINK("link"),
154        LOCK("lock"),
155        LOCKED("locked"),
156        LOGO("logo"),
157        LOGO_SQUARE("logo-square"),
158        MDM_COLORED("mdm-colored"),
159        MDM_NEGATIVE("mdm-negative"),
160        MDM_POSITIVE("mdm-positive"),
161        MOST_TRUSTED("most-trusted"),
162        NETWORK("network"),
163        NORMALIZE("normalize"),
164        NOTE("note"),
165        OPENER("opener"),
166        OVERVIEW("overview"),
167        PANEL_OPENER_BOTTOM("panel-opener-bottom"),
168        PANEL_OPENER_RIGHT("panel-opener-right"),
169        PENCIL("pencil"),
170        PHONE("phone"),
171        PIE_CHARTS("pie-charts"),
172        PIN("pin"),
173        PLACEHOLDER("placeholder"),
174        PLAY("play"),
175        PLUS("plus"),
176        PLUS_CIRCLE("plus-circle"),
177        POSTGRESQL("postgresql"),
178        POWER_OFF("power-off"),
179        PROJECTS("projects"),
180        PUBSUB("pubsub"),
181        PYTHON("python"),
182        QUESTION_CIRCLE("question-circle"),
183        RAW_DATA("raw-data"),
184        REDO("redo"),
185        REFRESH("refresh"),
186        REMOTE_ENGINE("remote-engine"),
187        REPLICATE("replicate"),
188        ROLES("roles"),
189        SAMPLE("sample"),
190        SCHEDULER("scheduler"),
191        SEARCH("search"),
192        SEMANTIC("semantic"),
193        SHARE_ALT("share-alt"),
194        SHARING_DEFAULT("sharing-default"),
195        SHARING_OWNER("sharing-owner"),
196        SHARING_USER("sharing-user"),
197        SHIELD("shield"),
198        SHOW_UNASSIGNED_TASKS("show_unassigned_tasks"),
199        SLIDERS("sliders"),
200        SMILEY_ANGRY("smiley-angry"),
201        SMILEY_ENTHUSIAST("smiley-enthusiast"),
202        SMILEY_NEUTRAL("smiley-neutral"),
203        SMILEY_SATISFIED("smiley-satisfied"),
204        SMILEY_SLEEP("smiley-sleep"),
205        SMILEY_UNHAPPY("smiley-unhappy"),
206        SORT_19("sort-19"),
207        SORT_91("sort-91"),
208        SORT_ASC("sort-asc"),
209        SORT_AZ("sort-az"),
210        SORT_DESC("sort-desc"),
211        SORT_ZA("sort-za"),
212        SPARK("spark"),
213        STAR("star"),
214        STOP("stop"),
215        STREAMS("streams"),
216        TABLE("table"),
217        TASKS("tasks"),
218        TDC_COLORED("tdc-colored"),
219        TDC_NEGATIVE("tdc-negative"),
220        TDC_POSITIVE("tdc-positive"),
221        TDP_COLORED("tdp-colored"),
222        TDP_NEGATIVE("tdp-negative"),
223        TDP_POSITIVE("tdp-positive"),
224        TDS_COLORED("tds-colored"),
225        TDS_NEGATIVE("tds-negative"),
226        TDS_POSITIVE("tds-positive"),
227        TIC_COLORED("tic-colored"),
228        TIC_NEGATIVE("tic-negative"),
229        TIC_POSITIVE("tic-positive"),
230        TILES("tiles"),
231        TMC_COLORED("tmc-colored"),
232        TMC_NEGATIVE("tmc-negative"),
233        TMC_POSITIVE("tmc-positive"),
234        TRANSFORMER_WINDOW("transformer-window"),
235        TRASH("trash"),
236        TYPE_CONVERTER("type-converter"),
237        UNDO("undo"),
238        UNLOCKED("unlocked"),
239        UPLOAD("upload"),
240        USER_CIRCLE("user-circle"),
241        WARNING("warning"),
242        WEBHOOK("webhook"),
243        WINDOW("window"),
244        WORKSPACES("workspaces"),
245        WORLD("world"),
246        ZOOMIN("zoomin"),
247        ZOOMOUT("zoomout"),
248        CUSTOM("custom"),
249        DEFAULT("default");
250
251        @Getter
252        private final String key;
253    }
254}