001/*
002 * #%L
003 * GwtMaterial
004 * %%
005 * Copyright (C) 2015 - 2017 GwtMaterialDesign
006 * %%
007 * Licensed under the Apache License, Version 2.0 (the "License");
008 * you may not use this file except in compliance with the License.
009 * You may obtain a copy of the License at
010 * 
011 *      http://www.apache.org/licenses/LICENSE-2.0
012 * 
013 * Unless required by applicable law or agreed to in writing, software
014 * distributed under the License is distributed on an "AS IS" BASIS,
015 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
016 * See the License for the specific language governing permissions and
017 * limitations under the License.
018 * #L%
019 */
020package gwt.material.design.client.constants;
021
022import com.google.gwt.user.client.ui.UIObject;
023import gwt.material.design.client.base.helper.EnumHelper;
024
025/**
026 * Color constants.
027 *
028 * @see <a href="http://gwtmaterialdesign.github.io/gwt-material-demo/#colors">Colors</a>
029 * @see <a href="https://material.io/guidelines/style/color.html#">Material Design Specification</a>
030 * @see <a href="https://material.io/color/">Color Tool</a>
031 * @author kevzlou7979
032 */
033public enum Color implements CssType {
034    DEFAULT(""),
035    BLACK("black"),
036    WHITE("white"),
037    TRANSPARENT("transparent"),
038    // Blue Grey
039    BLUE_GREY_LIGHTEN_5("blue-grey lighten-5"),
040    BLUE_GREY_LIGHTEN_4("blue-grey lighten-4"),
041    BLUE_GREY_LIGHTEN_3("blue-grey lighten-3"),
042    BLUE_GREY_LIGHTEN_2("blue-grey lighten-2"),
043    BLUE_GREY_LIGHTEN_1("blue-grey lighten-1"),
044    BLUE_GREY("blue-grey"),
045    BLUE_GREY_DARKEN_1("blue-grey darken-1"),
046    BLUE_GREY_DARKEN_2("blue-grey darken-2"),
047    BLUE_GREY_DARKEN_3("blue-grey darken-3"),
048    BLUE_GREY_DARKEN_4("blue-grey darken-4"),
049    // Grey
050    GREY_LIGHTEN_5("grey lighten-5"),
051    GREY_LIGHTEN_4("grey lighten-4"),
052    GREY_LIGHTEN_3("grey lighten-3"),
053    GREY_LIGHTEN_2("grey lighten-2"),
054    GREY_LIGHTEN_1("grey lighten-1"),
055    GREY("grey"),
056    GREY_DARKEN_1("grey darken-1"),
057    GREY_DARKEN_2("grey darken-2"),
058    GREY_DARKEN_3("grey darken-3"),
059    GREY_DARKEN_4("grey darken-4"),
060    // Brown
061    BROWN_LIGHTEN_5("brown lighten-5"),
062    BROWN_LIGHTEN_4("brown lighten-4"),
063    BROWN_LIGHTEN_3("brown lighten-3"),
064    BROWN_LIGHTEN_2("brown lighten-2"),
065    BROWN_LIGHTEN_1("brown lighten-1"),
066    BROWN("brown"),
067    BROWN_DARKEN_1("brown darken-1"),
068    BROWN_DARKEN_2("brown darken-2"),
069    BROWN_DARKEN_3("brown darken-3"),
070    BROWN_DARKEN_4("brown darken-4"),
071    // Deep Orange
072    DEEP_ORANGE_LIGHTEN_5("deep-orange lighten-5"),
073    DEEP_ORANGE_LIGHTEN_4("deep-orange lighten-4"),
074    DEEP_ORANGE_LIGHTEN_3("deep-orange lighten-3"),
075    DEEP_ORANGE_LIGHTEN_2("deep-orange lighten-2"),
076    DEEP_ORANGE_LIGHTEN_1("deep-orange lighten-1"),
077    DEEP_ORANGE("deep-orange"),
078    DEEP_ORANGE_DARKEN_1("deep-orange darken-1"),
079    DEEP_ORANGE_DARKEN_2("deep-orange darken-2"),
080    DEEP_ORANGE_DARKEN_3("deep-orange darken-3"),
081    DEEP_ORANGE_DARKEN_4("deep-orange darken-4"),
082    DEEP_ORANGE_ACCENT_1("deep-orange accent-1"),
083    DEEP_ORANGE_ACCENT_2("deep-orange accent-2"),
084    DEEP_ORANGE_ACCENT_3("deep-orange accent-3"),
085    DEEP_ORANGE_ACCENT_4("deep-orange accent-4"),
086    // Orange
087    ORANGE_LIGHTEN_5("orange lighten-5"),
088    ORANGE_LIGHTEN_4("orange lighten-4"),
089    ORANGE_LIGHTEN_3("orange lighten-3"),
090    ORANGE_LIGHTEN_2("orange lighten-2"),
091    ORANGE_LIGHTEN_1("orange lighten-1"),
092    ORANGE("orange"),
093    ORANGE_DARKEN_1("orange darken-1"),
094    ORANGE_DARKEN_2("orange darken-2"),
095    ORANGE_DARKEN_3("orange darken-3"),
096    ORANGE_DARKEN_4("orange darken-4"),
097    ORANGE_ACCENT_1("orange accent-1"),
098    ORANGE_ACCENT_2("orange accent-2"),
099    ORANGE_ACCENT_3("orange accent-3"),
100    ORANGE_ACCENT_4("orange accent-4"),
101    // amber
102    AMBER_LIGHTEN_5("amber lighten-5"),
103    AMBER_LIGHTEN_4("amber lighten-4"),
104    AMBER_LIGHTEN_3("amber lighten-3"),
105    AMBER_LIGHTEN_2("amber lighten-2"),
106    AMBER_LIGHTEN_1("amber lighten-1"),
107    AMBER("amber"),
108    AMBER_DARKEN_1("amber darken-1"),
109    AMBER_DARKEN_2("amber darken-2"),
110    AMBER_DARKEN_3("amber darken-3"),
111    AMBER_DARKEN_4("amber darken-4"),
112    AMBER_ACCENT_1("amber accent-1"),
113    AMBER_ACCENT_2("amber accent-2"),
114    AMBER_ACCENT_3("amber accent-3"),
115    AMBER_ACCENT_4("amber accent-4"),
116    // Yellow
117    YELLOW_LIGHTEN_5("yellow lighten-5"),
118    YELLOW_LIGHTEN_4("yellow lighten-4"),
119    YELLOW_LIGHTEN_3("yellow lighten-3"),
120    YELLOW_LIGHTEN_2("yellow lighten-2"),
121    YELLOW_LIGHTEN_1("yellow lighten-1"),
122    YELLOW("yellow"),
123    YELLOW_DARKEN_1("yellow darken-1"),
124    YELLOW_DARKEN_2("yellow darken-2"),
125    YELLOW_DARKEN_3("yellow darken-3"),
126    YELLOW_DARKEN_4("yellow darken-4"),
127    YELLOW_ACCENT_1("yellow accent-1"),
128    YELLOW_ACCENT_2("yellow accent-2"),
129    YELLOW_ACCENT_3("yellow accent-3"),
130    YELLOW_ACCENT_4("yellow accent-4"),
131    // Lime
132    LIME_LIGHTEN_5("lime lighten-5"),
133    LIME_LIGHTEN_4("lime lighten-4"),
134    LIME_LIGHTEN_3("lime lighten-3"),
135    LIME_LIGHTEN_2("lime lighten-2"),
136    LIME_LIGHTEN_1("lime lighten-1"),
137    LIME("lime"),
138    LIME_DARKEN_1("lime darken-1"),
139    LIME_DARKEN_2("lime darken-2"),
140    LIME_DARKEN_3("lime darken-3"),
141    LIME_DARKEN_4("lime darken-4"),
142    LIME_ACCENT_1("lime accent-1"),
143    LIME_ACCENT_2("lime accent-2"),
144    LIME_ACCENT_3("lime accent-3"),
145    LIME_ACCENT_4("lime accent-4"),
146    // Light Green
147    LIGHT_GREEN_LIGHTEN_5("light-green lighten-5"),
148    LIGHT_GREEN_LIGHTEN_4("light-green lighten-4"),
149    LIGHT_GREEN_LIGHTEN_3("light-green lighten-3"),
150    LIGHT_GREEN_LIGHTEN_2("light-green lighten-2"),
151    LIGHT_GREEN_LIGHTEN_1("light-green lighten-1"),
152    LIGHT_GREEN("light-green"),
153    LIGHT_GREEN_DARKEN_1("light-green darken-1"),
154    LIGHT_GREEN_DARKEN_2("light-green darken-2"),
155    LIGHT_GREEN_DARKEN_3("light-green darken-3"),
156    LIGHT_GREEN_DARKEN_4("light-green darken-4"),
157    LIGHT_GREEN_ACCENT_1("light-green accent-1"),
158    LIGHT_GREEN_ACCENT_2("light-green accent-2"),
159    LIGHT_GREEN_ACCENT_3("light-green accent-3"),
160    LIGHT_GREEN_ACCENT_4("light-green accent-4"),
161    // Green
162    GREEN_LIGHTEN_5("green lighten-5"),
163    GREEN_LIGHTEN_4("green lighten-4"),
164    GREEN_LIGHTEN_3("green lighten-3"),
165    GREEN_LIGHTEN_2("green lighten-2"),
166    GREEN_LIGHTEN_1("green lighten-1"),
167    GREEN("green"),
168    GREEN_DARKEN_1("green darken-1"),
169    GREEN_DARKEN_2("green darken-2"),
170    GREEN_DARKEN_3("green darken-3"),
171    GREEN_DARKEN_4("green darken-4"),
172    GREEN_ACCENT_1("green accent-1"),
173    GREEN_ACCENT_2("green accent-2"),
174    GREEN_ACCENT_3("green accent-3"),
175    GREEN_ACCENT_4("green accent-4"),
176    // Teal
177    TEAL_LIGHTEN_5("teal lighten-5"),
178    TEAL_LIGHTEN_4("teal lighten-4"),
179    TEAL_LIGHTEN_3("teal lighten-3"),
180    TEAL_LIGHTEN_2("teal lighten-2"),
181    TEAL_LIGHTEN_1("teal lighten-1"),
182    TEAL("teal"),
183    TEAL_DARKEN_1("teal darken-1"),
184    TEAL_DARKEN_2("teal darken-2"),
185    TEAL_DARKEN_3("teal darken-3"),
186    TEAL_DARKEN_4("teal darken-4"),
187    TEAL_ACCENT_1("teal accent-1"),
188    TEAL_ACCENT_2("teal accent-2"),
189    TEAL_ACCENT_3("teal accent-3"),
190    TEAL_ACCENT_4("teal accent-4"),
191    // Cyan
192    CYAN_LIGHTEN_5("cyan lighten-5"),
193    CYAN_LIGHTEN_4("cyan lighten-4"),
194    CYAN_LIGHTEN_3("cyan lighten-3"),
195    CYAN_LIGHTEN_2("cyan lighten-2"),
196    CYAN_LIGHTEN_1("cyan lighten-1"),
197    CYAN("cyan"),
198    CYAN_DARKEN_1("cyan darken-1"),
199    CYAN_DARKEN_2("cyan darken-2"),
200    CYAN_DARKEN_3("cyan darken-3"),
201    CYAN_DARKEN_4("cyan darken-4"),
202    CYAN_ACCENT_1("cyan accent-1"),
203    CYAN_ACCENT_2("cyan accent-2"),
204    CYAN_ACCENT_3("cyan accent-3"),
205    CYAN_ACCENT_4("cyan accent-4"),
206    // Light Blue
207    LIGHT_BLUE_LIGHTEN_5("light-blue lighten-5"),
208    LIGHT_BLUE_LIGHTEN_4("light-blue lighten-4"),
209    LIGHT_BLUE_LIGHTEN_3("light-blue lighten-3"),
210    LIGHT_BLUE_LIGHTEN_2("light-blue lighten-2"),
211    LIGHT_BLUE_LIGHTEN_1("light-blue lighten-1"),
212    LIGHT_BLUE("light-blue"),
213    LIGHT_BLUE_DARKEN_1("light-blue darken-1"),
214    LIGHT_BLUE_DARKEN_2("light-blue darken-2"),
215    LIGHT_BLUE_DARKEN_3("light-blue darken-3"),
216    LIGHT_BLUE_DARKEN_4("light-blue darken-4"),
217    LIGHT_BLUE_ACCENT_1("light-blue accent-1"),
218    LIGHT_BLUE_ACCENT_2("light-blue accent-2"),
219    LIGHT_BLUE_ACCENT_3("light-blue accent-3"),
220    LIGHT_BLUE_ACCENT_4("light-blue accent-4"),
221    // Blue
222    BLUE_LIGHTEN_5("blue lighten-5"),
223    BLUE_LIGHTEN_4("blue lighten-4"),
224    BLUE_LIGHTEN_3("blue lighten-3"),
225    BLUE_LIGHTEN_2("blue lighten-2"),
226    BLUE_LIGHTEN_1("blue lighten-1"),
227    BLUE("blue"),
228    BLUE_DARKEN_1("blue darken-1"),
229    BLUE_DARKEN_2("blue darken-2"),
230    BLUE_DARKEN_3("blue darken-3"),
231    BLUE_DARKEN_4("blue darken-4"),
232    BLUE_ACCENT_1("blue accent-1"),
233    BLUE_ACCENT_2("blue accent-2"),
234    BLUE_ACCENT_3("blue accent-3"),
235    BLUE_ACCENT_4("blue accent-4"),
236    // Indigo
237    INDIGO_LIGHTEN_5("indigo lighten-5"),
238    INDIGO_LIGHTEN_4("indigo lighten-4"),
239    INDIGO_LIGHTEN_3("indigo lighten-3"),
240    INDIGO_LIGHTEN_2("indigo lighten-2"),
241    INDIGO_LIGHTEN_1("indigo lighten-1"),
242    INDIGO("indigo"),
243    INDIGO_DARKEN_1("indigo darken-1"),
244    INDIGO_DARKEN_2("indigo darken-2"),
245    INDIGO_DARKEN_3("indigo darken-3"),
246    INDIGO_DARKEN_4("indigo darken-4"),
247    INDIGO_ACCENT_1("indigo accent-1"),
248    INDIGO_ACCENT_2("indigo accent-2"),
249    INDIGO_ACCENT_3("indigo accent-3"),
250    INDIGO_ACCENT_4("indigo accent-4"),
251    // Deep Purple
252    DEEP_PURPLE_LIGHTEN_5("deep-purple lighten-5"),
253    DEEP_PURPLE_LIGHTEN_4("deep-purple lighten-4"),
254    DEEP_PURPLE_LIGHTEN_3("deep-purple lighten-3"),
255    DEEP_PURPLE_LIGHTEN_2("deep-purple lighten-2"),
256    DEEP_PURPLE_LIGHTEN_1("deep-purple lighten-1"),
257    DEEP_PURPLE("deep-purple"),
258    DEEP_PURPLE_DARKEN_1("deep-purple darken-1"),
259    DEEP_PURPLE_DARKEN_2("deep-purple darken-2"),
260    DEEP_PURPLE_DARKEN_3("deep-purple darken-3"),
261    DEEP_PURPLE_DARKEN_4("deep-purple darken-4"),
262    DEEP_PURPLE_ACCENT_1("deep-purple accent-1"),
263    DEEP_PURPLE_ACCENT_2("deep-purple accent-2"),
264    DEEP_PURPLE_ACCENT_3("deep-purple accent-3"),
265    DEEP_PURPLE_ACCENT_4("deep-purple accent-4"),
266    // Purple
267    PURPLE_LIGHTEN_5("purple lighten-5"),
268    PURPLE_LIGHTEN_4("purple lighten-4"),
269    PURPLE_LIGHTEN_3("purple lighten-3"),
270    PURPLE_LIGHTEN_2("purple lighten-2"),
271    PURPLE_LIGHTEN_1("purple lighten-1"),
272    PURPLE("purple"),
273    PURPLE_DARKEN_1("purple darken-1"),
274    PURPLE_DARKEN_2("purple darken-2"),
275    PURPLE_DARKEN_3("purple darken-3"),
276    PURPLE_DARKEN_4("purple darken-4"),
277    PURPLE_ACCENT_1("purple accent-1"),
278    PURPLE_ACCENT_2("purple accent-2"),
279    PURPLE_ACCENT_3("purple accent-3"),
280    PURPLE_ACCENT_4("purple accent-4"),
281    // Pink
282    PINK_LIGHTEN_5("pink lighten-5"),
283    PINK_LIGHTEN_4("pink lighten-4"),
284    PINK_LIGHTEN_3("pink lighten-3"),
285    PINK_LIGHTEN_2("pink lighten-2"),
286    PINK_LIGHTEN_1("pink lighten-1"),
287    PINK("pink"),
288    PINK_DARKEN_1("pink darken-1"),
289    PINK_DARKEN_2("pink darken-2"),
290    PINK_DARKEN_3("pink darken-3"),
291    PINK_DARKEN_4("pink darken-4"),
292    PINK_ACCENT_1("pink accent-1"),
293    PINK_ACCENT_2("pink accent-2"),
294    PINK_ACCENT_3("pink accent-3"),
295    PINK_ACCENT_4("pink accent-4"),
296    // Red
297    RED_LIGHTEN_5("red lighten-5"),
298    RED_LIGHTEN_4("red lighten-4"),
299    RED_LIGHTEN_3("red lighten-3"),
300    RED_LIGHTEN_2("red lighten-2"),
301    RED_LIGHTEN_1("red lighten-1"),
302    RED("red"),
303    RED_DARKEN_1("red darken-1"),
304    RED_DARKEN_2("red darken-2"),
305    RED_DARKEN_3("red darken-3"),
306    RED_DARKEN_4("red darken-4"),
307    RED_ACCENT_1("red accent-1"),
308    RED_ACCENT_2("red accent-2"),
309    RED_ACCENT_3("red accent-3"),
310    RED_ACCENT_4("red accent-4");
311
312    private final String cssClass;
313
314    Color(final String cssClass) {
315        this.cssClass = cssClass;
316    }
317
318    @Override
319    public String getCssName() {
320        return cssClass;
321    }
322
323    public static Color fromStyleName(final String styleName) {
324        return EnumHelper.fromStyleName(styleName, Color.class, Color.DEFAULT);
325    }
326
327    public static void clearStyles(final UIObject uiObject) {
328        for(String style : uiObject.getStyleName().split(" ")) {
329            Color color = fromStyleName(style);
330            if(color != Color.DEFAULT) {
331                uiObject.removeStyleName(style);
332            } else {
333                // check if we are a shade
334                if (Shade.isShade(style)) {
335                    uiObject.removeStyleName(style);
336                }
337            }
338        }
339    }
340}