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;
017
018 import com.github.gwtbootstrap.client.ui.base.HoverBase;
019 import com.github.gwtbootstrap.client.ui.constants.Placement;
020 import com.github.gwtbootstrap.client.ui.constants.Trigger;
021 import com.github.gwtbootstrap.client.ui.constants.VisibilityChange;
022 import com.google.gwt.dom.client.Element;
023 import com.google.gwt.user.client.ui.Widget;
024
025 //@formatter:off
026 /**
027 * Link with a small tooltip with additional information.
028 * <p>
029 * Technically it's an html {@code <a>} tag. The text of the popup will be the
030 * content of the anchor's <code>title</code> attribute.
031 *
032 * @since 2.0.4.0
033 *
034 * @author Dominik Mayer
035 *
036 * @see <a href="http://twitter.github.com/bootstrap/javascript.html#tooltips">Bootstrap documentation</a>
037 * @see Popover
038 */
039 //@formatter:on
040 public class Tooltip extends HoverBase {
041
042 private String tooltip;
043
044 /**
045 * Creates an empty link without text and tooltip text.
046 */
047 public Tooltip() {
048 super();
049 }
050
051 /**
052 * Creates a link with the
053 *
054 * @param tooltip get
055 */
056 public Tooltip(String tooltip) {
057 this();
058 setText(tooltip);
059 }
060
061 /**
062 * Sets the text that should appear in the tooltip.
063 *
064 * @param tooltop
065 * the text
066 */
067 public void setText(String tooltop) {
068 this.tooltip = tooltop;
069 }
070
071 public String getText() {
072 return this.tooltip;
073 }
074
075 /**
076 * {@inheritDoc}
077 */
078 @Override
079 public void reconfigure() {
080
081 removeDataIfExists();
082
083 setDataAttribute(getWidget().getElement(), "original-title", tooltip);
084
085 configure(getWidget().getElement(), getAnimation(), getPlacement().get(),
086 getTrigger().get(), getShowDelay(), getHideDelay());
087 }
088
089 /**
090 * {@inheritDoc}
091 */
092 @Override
093 protected void changeVisibility(VisibilityChange visibilityChange) {
094 changeVisibility(getWidget().getElement(), visibilityChange.get());
095 }
096
097 /**
098 *
099 * @param e
100 * @param animated
101 * @param placement
102 * @param trigger
103 * @param showDelay
104 * @param hideDelay
105 */
106 public static void configure(Widget e,boolean animated,Placement placement,Trigger trigger,int showDelay,int hideDelay) {
107 configure(e.getElement(), animated, placement.get(),trigger.get(), showDelay, hideDelay);
108 }
109
110 private static native void configure(Element element, boolean animated,
111 String placement, String trigger, int showDelay, int hideDelay) /*-{
112 $wnd.jQuery(element).tooltip({
113 animation : animated,
114 placement : placement,
115 trigger : trigger,
116 delay : {
117 show : showDelay,
118 hide : hideDelay
119 }
120 });
121 }-*/;
122
123 public static native void changeVisibility(Element e, String visibility) /*-{
124 $wnd.jQuery(e).tooltip(visibility);
125 }-*/;
126
127 /**
128 * {@inheritDoc}
129 */
130 @Override
131 protected String getDataName() {
132 return "tooltip";
133 }
134
135 }