17a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luopackage autotest.common.ui;
27a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo
37a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luoimport com.google.gwt.event.dom.client.MouseOverHandler;
47a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luoimport com.google.gwt.event.dom.client.MouseOverEvent;
57a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luoimport com.google.gwt.event.dom.client.MouseOutHandler;
67a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luoimport com.google.gwt.event.dom.client.MouseOutEvent;
77a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luoimport com.google.gwt.user.client.Window;
87a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luoimport com.google.gwt.user.client.ui.Label;
97a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luoimport com.google.gwt.user.client.ui.PopupPanel;
107a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo
117a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luopublic class ToolTip extends Label implements MouseOverHandler, MouseOutHandler {
127a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo    protected PopupPanel popup;
137a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo    protected final int LEFT_OFFSET = 20;
147a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo    protected final int TOP_OFFSET = -20;
157a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo
167a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo    public ToolTip(String labelMessage, String toolTipMessage) {
177a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo        super(labelMessage);
187a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo        popup = new PopupPanel();
197a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo        setStyleName("tooltip_label");
207a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo        popup.setStyleName("tooltip");
217a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo        popup.add(new Label(toolTipMessage));
227a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo        addMouseOverHandler(this);
237a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo        addMouseOutHandler(this);
247a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo    }
257a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo
267a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo    public void showAtWindow(int left, int top) {
277a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo        popup.setPopupPosition(left + Window.getScrollLeft() + LEFT_OFFSET,
287a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo                               top + Window.getScrollTop() + TOP_OFFSET);
297a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo        popup.show();
307a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo    }
317a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo
327a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo    public void hide() {
337a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo        popup.hide();
347a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo    }
357a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo
367a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo    public void onMouseOver(MouseOverEvent event) {
377a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo        showAtWindow(event.getClientX(), event.getClientY());
387a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo    }
397a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo
407a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo    public void onMouseOut(MouseOutEvent event) {
417a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo        hide();
427a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo    }
437a776a607e84e5101818142f67cae3d81c18dcd0Jiaxi Luo}
44