/**
*
*/
package edu.washington.cs.oneswarm.ui.gwt.client.newui;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.PopupPanel;
import com.google.gwt.user.client.ui.Widget;
public class HelpButton extends HorizontalPanel implements ClickListener {
String helpHtml;
final Image icon = new Image(ImageConstants.ICON_HELP_BUTTON);
private HelpButton.HelpPanel helpPanel;
public HelpButton(String text) {
this.helpHtml = text;
HTML html = new HTML(text);
icon.setTitle("Help: " + html.getText());
super.add(icon);
super.setCellVerticalAlignment(icon, HorizontalPanel.ALIGN_MIDDLE);
icon.addClickListener(this);
}
public void onClick(Widget sender) {
/*
* if this is a second click, and we already show the help, hide it
*/
if (helpPanel != null) {
helpPanel.hide();
helpPanel = null;
} else {
System.out.println("creating help panel with: " + helpHtml);
helpPanel = new HelpPanel(helpHtml, sender);
helpPanel.show();
}
}
public void setTitle(String text) {
icon.setTitle(text);
helpPanel = null;
}
public void setText(String text) {
helpHtml = text;
setTitle(text);
}
static class HelpPanel extends PopupPanel implements ClickListener {
private final Widget parent;
private final String parentText;
private HTML mHTML;
public HelpPanel(String helpHTML, Widget parent) {
super(true, false);
this.parentText = parent.getTitle();
this.parent = parent;
setPopupPosition(parent.getAbsoluteLeft(), Math.max(0, parent.getAbsoluteTop() - 30));
addStyleName("os-HelpBox");
mHTML = new HTML(helpHTML);
mHTML.addClickListener(this);
add(mHTML);
}
public void onBrowserEven(Event e) {
hide();
}
public void show() {
parent.setTitle("");
super.show();
}
protected void onDetach() {
super.onDetach();
parent.setTitle(parentText);
}
public void onClick(Widget sender) {
hide();
}
}
}