001 package org.gwtbootstrap3.client.ui;
002
003 /*
004 * #%L
005 * GwtBootstrap3
006 * %%
007 * Copyright (C) 2013 GwtBootstrap3
008 * %%
009 * Licensed under the Apache License, Version 2.0 (the "License");
010 * you may not use this file except in compliance with the License.
011 * You may obtain a copy of the License at
012 *
013 * http://www.apache.org/licenses/LICENSE-2.0
014 *
015 * Unless required by applicable law or agreed to in writing, software
016 * distributed under the License is distributed on an "AS IS" BASIS,
017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
018 * See the License for the specific language governing permissions and
019 * limitations under the License.
020 * #L%
021 */
022
023 import org.gwtbootstrap3.client.ui.base.ComplexWidget;
024 import org.gwtbootstrap3.client.ui.base.HasType;
025 import org.gwtbootstrap3.client.ui.base.helper.StyleHelper;
026 import org.gwtbootstrap3.client.ui.constants.ElementTags;
027 import org.gwtbootstrap3.client.ui.constants.IconFlip;
028 import org.gwtbootstrap3.client.ui.constants.IconRotate;
029 import org.gwtbootstrap3.client.ui.constants.IconSize;
030 import org.gwtbootstrap3.client.ui.constants.IconType;
031 import org.gwtbootstrap3.client.ui.constants.Styles;
032
033 import com.google.gwt.dom.client.Document;
034 import com.google.gwt.uibinder.client.UiConstructor;
035
036 /**
037 * Simple put, an icon.
038 *
039 * @author Sven Jacobs
040 * @see org.gwtbootstrap3.client.ui.constants.IconType
041 */
042 public class Icon extends ComplexWidget implements HasType<IconType> {
043
044 public Icon() {
045 setElement(Document.get().createElement(ElementTags.I));
046 addStyleName(Styles.FONT_AWESOME_BASE);
047 }
048
049 @UiConstructor
050 public Icon(final IconType type) {
051 this();
052 setType(type);
053 }
054
055 @Override
056 public void setType(final IconType type) {
057 StyleHelper.addUniqueEnumStyleName(this, IconType.class, type);
058 }
059
060 @Override
061 public IconType getType() {
062 return IconType.fromStyleName(getStyleName());
063 }
064
065 public void setLight(final boolean light) {
066 StyleHelper.toggleStyleName(this, light, Styles.ICON_LIGHT);
067 }
068
069 public boolean isLight() {
070 return StyleHelper.containsStyle(Styles.ICON_LIGHT, getStyleName());
071 }
072
073 public void setMuted(final boolean muted) {
074 StyleHelper.toggleStyleName(this, muted, Styles.ICON_MUTED);
075 }
076
077 public boolean isMuted() {
078 return StyleHelper.containsStyle(Styles.ICON_MUTED, getStyleName());
079 }
080
081 public void setBorder(final boolean border) {
082 StyleHelper.toggleStyleName(this, border, Styles.ICON_BORDER);
083 }
084
085 public boolean isBorder() {
086 return StyleHelper.containsStyle(Styles.ICON_BORDER, getStyleName());
087 }
088
089 public void setStackBase(final boolean stackBase) {
090 StyleHelper.toggleStyleName(this, stackBase, Styles.ICON_STACK_BASE);
091 }
092
093 public boolean isStackBase() {
094 return StyleHelper.containsStyle(Styles.ICON_STACK_BASE, getStyleName());
095 }
096
097 public void setFixedWidth(final boolean fixedWidth) {
098 StyleHelper.toggleStyleName(this, fixedWidth, Styles.ICON_FIXED_WIDTH);
099 }
100
101 public boolean isFixedWidth() {
102 return StyleHelper.containsStyle(Styles.ICON_FIXED_WIDTH, getStyleName());
103 }
104
105 public void setStackTop(final boolean stackTop) {
106 StyleHelper.toggleStyleName(this, stackTop, Styles.ICON_STACK_TOP);
107 }
108
109 public boolean isStackTop() {
110 return StyleHelper.containsStyle(Styles.ICON_STACK_TOP, getStyleName());
111 }
112
113 public void setSpin(final boolean spin) {
114 StyleHelper.toggleStyleName(this, spin, Styles.ICON_SPIN);
115 }
116
117 public boolean isSpin() {
118 return StyleHelper.containsStyle(Styles.ICON_SPIN, getStyleName());
119 }
120
121 public void setRotate(final IconRotate iconRotate) {
122 if (iconRotate == null) {
123 return;
124 }
125
126 StyleHelper.addUniqueEnumStyleName(this, IconRotate.class, iconRotate);
127 }
128
129 public IconRotate getRotate() {
130 return IconRotate.fromStyleName(getStyleName());
131 }
132
133 public void setFlip(final IconFlip iconFlip) {
134 if (iconFlip == null) {
135 return;
136 }
137
138 StyleHelper.addUniqueEnumStyleName(this, IconFlip.class, iconFlip);
139 }
140
141 public IconFlip getFlip() {
142 return IconFlip.fromStyleName(getStyleName());
143 }
144
145 public void setSize(final IconSize iconSize) {
146 if (iconSize == null) {
147 return;
148 }
149
150 StyleHelper.addUniqueEnumStyleName(this, IconSize.class, iconSize);
151 }
152
153 public IconSize getSize() {
154 return IconSize.fromStyleName(getStyleName());
155 }
156 }