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 */ 016package com.github.gwtbootstrap.client.ui; 017 018import com.github.gwtbootstrap.client.ui.base.HoverBase; 019import com.github.gwtbootstrap.client.ui.constants.Placement; 020import com.github.gwtbootstrap.client.ui.constants.Trigger; 021import com.github.gwtbootstrap.client.ui.constants.VisibilityChange; 022import com.google.gwt.dom.client.Element; 023import 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 040public 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 //@formatter:off 111 public static native void configure(String selector,String text, boolean animated, 112 String placement, String trigger, int showDelay, int hideDelay) /*-{ 113 $wnd.jQuery(selector).tooltip({ 114 title : text, 115 animation : animated, 116 placement : placement, 117 trigger : trigger, 118 delay : { 119 show : showDelay, 120 hide : hideDelay 121 } 122 }); 123 }-*/; 124 125 public static native void configure(Element element, boolean animated, 126 String placement, String trigger, int showDelay, int hideDelay) /*-{ 127 $wnd.jQuery(element).tooltip({ 128 animation : animated, 129 placement : placement, 130 trigger : trigger, 131 delay : { 132 show : showDelay, 133 hide : hideDelay 134 } 135 }); 136 }-*/; 137 138 public static native void changeVisibility(Element e, String visibility) /*-{ 139 $wnd.jQuery(e).tooltip(visibility); 140 }-*/; 141 //@formatter:on 142 143 /** 144 * {@inheritDoc} 145 */ 146 @Override 147 protected String getDataName() { 148 return "tooltip"; 149 } 150 151}