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.VisibilityChange;
021 import com.google.gwt.dom.client.Element;
022
023 //@formatter:off
024 /**
025 * Popover that
026 *
027 * @since 2.0.4.0
028 *
029 * @author Dominik Mayer
030 * @author ohashi keisuke
031 *
032 * @see <a href="http://twitter.github.com/bootstrap/javascript.html#popovers">Bootstrap documentation</a>
033 * @see Tooltip
034 */
035 //@formatter:on
036 public class Popover extends HoverBase {
037
038 private String content;
039 private String heading;
040
041 /**
042 * Creates an empty Popover.
043 */
044 public Popover() {
045 super();
046 placement = Placement.RIGHT;
047 }
048
049 /**
050 * {@inheritDoc}
051 */
052 public void setText(String content) {
053 this.content = content;
054 }
055
056 /**
057 * {@inheritDoc}
058 */
059 public String getText() {
060 return this.content;
061 }
062
063 public void setHeading(String heading) {
064 this.heading = heading;
065 }
066
067 public String getHeading() {
068 return this.heading;
069 }
070
071 /**
072 * {@inheritDoc}
073 */
074 @Override
075 public void reconfigure() {
076
077 removeDataIfExists();
078
079 setDataAttribute(getWidget().getElement(), "original-title", heading);
080
081 setDataAttribute(getWidget().getElement(), "content", content);
082
083 configure(getWidget().getElement(), getAnimation(), getPlacement().get(),
084 getTrigger().get(), getShowDelay(), getHideDelay());
085 }
086
087 /**
088 * {@inheritDoc}
089 */
090 @Override
091 protected void changeVisibility(VisibilityChange visibilityChange) {
092 changeVisibility(getWidget().getElement(), visibilityChange.get());
093 }
094
095 private native void configure(Element element, boolean animated,
096 String placement, String trigger, int showDelay, int hideDelay) /*-{
097 $wnd.jQuery(element).popover({
098 animation : animated,
099 placement : placement,
100 trigger : trigger,
101 delay : {
102 show : showDelay,
103 hide : hideDelay
104 }
105 });
106 }-*/;
107
108 private native void changeVisibility(Element e, String visibility) /*-{
109 $wnd.jQuery(e).popover(visibility);
110 }-*/;
111
112 @Override
113 protected String getDataName() {
114 return "popover";
115 }
116 }