com.google.gwt.examples.PopupPanelExample.java Source code

Java tutorial

Introduction

Here is the source code for com.google.gwt.examples.PopupPanelExample.java

Source

/*
 * Copyright 2007 Google Inc.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.google.gwt.examples;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.PopupPanel;
import com.google.gwt.user.client.ui.RootPanel;

public class PopupPanelExample implements EntryPoint {

    private static class MyPopup extends PopupPanel {

        public MyPopup() {
            // PopupPanel's constructor takes 'auto-hide' as its boolean parameter.
            // If this is set, the panel closes itself automatically when the user
            // clicks outside of it.
            super(true);

            // PopupPanel is a SimplePanel, so you have to set it's widget property to
            // whatever you want its contents to be.
            setWidget(new Label("Click outside of this popup to close it"));
        }
    }

    public void onModuleLoad() {
        Button b1 = new Button("Click me to show popup");
        b1.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                // Instantiate the popup and show it.
                new MyPopup().show();
            }
        });

        RootPanel.get().add(b1);

        Button b2 = new Button("Click me to show popup partway across the screen");

        b2.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                // Create the new popup.
                final MyPopup popup = new MyPopup();
                // Position the popup 1/3rd of the way down and across the screen, and
                // show the popup. Since the position calculation is based on the
                // offsetWidth and offsetHeight of the popup, you have to use the
                // setPopupPositionAndShow(callback) method. The alternative would
                // be to call show(), calculate the left and top positions, and
                // call setPopupPosition(left, top). This would have the ugly side
                // effect of the popup jumping from its original position to its
                // new position.
                popup.setPopupPositionAndShow(new PopupPanel.PositionCallback() {
                    public void setPosition(int offsetWidth, int offsetHeight) {
                        int left = (Window.getClientWidth() - offsetWidth) / 3;
                        int top = (Window.getClientHeight() - offsetHeight) / 3;
                        popup.setPopupPosition(left, top);
                    }
                });
            }
        });

        RootPanel.get().add(b2);
    }
}