001 /* 002 * Copyright 2012 GWT-Bootstrap 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 */ 016 package com.github.gwtbootstrap.client.ui.base; 017 018 import com.google.gwt.user.client.ui.UIObject; 019 020 /** 021 * The Helper class for {@link HasStyle} interface. 022 * 023 * @since 2.0.4.0 024 * 025 * @see HasStyle 026 * @see Style 027 * 028 * @author ohashi keisuke 029 * @author Carlos A Becker 030 */ 031 public class StyleHelper { 032 033 /** 034 * Adds the provided style to the widget. 035 * 036 * @param widget 037 * the widget to be added style. 038 * @param style 039 * the style to be added to the Widget. 040 */ 041 public static <T extends UIObject> void addStyle(T widget, Style style) { 042 if (!style.get().isEmpty()) { 043 widget.addStyleName(style.get()); 044 } 045 } 046 047 /** 048 * Replaces the widget's style with the provided one. 049 * 050 * @param widget 051 * the widget to be applied style. 052 * @param style 053 * the style to be applied to the Widget. 054 */ 055 public static <T extends UIObject> void setStyle(T widget, Style style) { 056 widget.setStyleName(style.get()); 057 } 058 059 /** 060 * Removes the provided style from the widget. 061 * 062 * @param widget 063 * the widget to be removed style. 064 * @param style 065 * the style to be removed from the Widget. 066 */ 067 public static <T extends UIObject> void removeStyle(T widget, Style style) { 068 String styleString = style.get(); 069 070 if (!styleString.isEmpty()) { 071 widget.removeStyleName(styleString); 072 } 073 } 074 075 /** 076 * Change the style. 077 * @param widget the widget to be changed style. 078 * @param style the style to be applied to the widget. 079 * @param styleEnums other styles. 080 */ 081 public static <S extends Enum<S> & Style> void changeStyle(UIObject widget, S style,Class<S> styleEnums) { 082 assert styleEnums != null : "styleEnums should not be null."; 083 084 changeStyle(widget, style, styleEnums.getEnumConstants()); 085 } 086 087 /** 088 * Change the style. 089 * @param widget the widget to be changed style. 090 * @param style the style to be applied to the widget. 091 * @param otherStyles other styles. 092 */ 093 public static <S extends Style> void changeStyle(UIObject widget,S style,S[] otherStyles) { 094 095 assert widget != null && style != null && otherStyles != null : "any args should not be null."; 096 097 for(S s : otherStyles) { 098 removeStyle(widget, s); 099 } 100 101 addStyle(widget, style); 102 } 103 104 }