org.rstudio.core.client.widget.FullscreenPopupPanel.java Source code

Java tutorial

Introduction

Here is the source code for org.rstudio.core.client.widget.FullscreenPopupPanel.java

Source

/*
 * FullscreenPopupPanel.java
 *
 * Copyright (C) 2009-12 by RStudio, Inc.
 *
 * Unless you have received this program directly from RStudio pursuant
 * to the terms of a commercial license agreement with RStudio, then
 * this program is licensed to you under the terms of version 3 of the
 * GNU Affero General Public License. This program is distributed WITHOUT
 * ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT,
 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the
 * AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details.
 *
 */

package org.rstudio.core.client.widget;

import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.Style;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.resources.client.ImageResource.ImageOptions;
import com.google.gwt.resources.client.ImageResource.RepeatStyle;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.LayoutPanel;
import com.google.gwt.user.client.ui.Widget;

public class FullscreenPopupPanel extends ModalPopupPanel {
    public FullscreenPopupPanel(Widget titleWidget, Widget mainWidget, boolean closeOnEscape) {
        this(titleWidget, mainWidget, 0, closeOnEscape);
    }

    public FullscreenPopupPanel(Widget titleWidget, Widget mainWidget, int margin, boolean closeOnEscape) {
        super(false, false, closeOnEscape);

        NineUpBorder border = new NineUpBorder(RES, 32, 20, 17, 20);
        if (titleWidget != null)
            addTitleWidget(border, titleWidget);
        addCloseButton(border);
        border.setSize("100%", "100%");
        border.setFillColor("white");
        border.setWidget(mainWidget);
        setWidget(border);
        setGlassEnabled(true);

        Style popupStyle = getElement().getStyle();
        popupStyle.setZIndex(1001);
        popupStyle.setPosition(Style.Position.ABSOLUTE);
        popupStyle.setTop(margin, Unit.PX);
        popupStyle.setBottom(margin, Unit.PX);
        popupStyle.setLeft(margin, Unit.PX);
        popupStyle.setRight(margin, Unit.PX);

        Style contentStyle = ((Element) getElement().getFirstChild()).getStyle();
        contentStyle.setWidth(100, Unit.PCT);
        contentStyle.setHeight(100, Unit.PCT);
    }

    private void addTitleWidget(NineUpBorder border, Widget titleWidget) {
        LayoutPanel layoutPanel = border.getLayoutPanel();
        layoutPanel.add(titleWidget);
        layoutPanel.setWidgetTopHeight(titleWidget, 13, Unit.PX, 21, Unit.PX);
        layoutPanel.setWidgetLeftRight(titleWidget, 27, Unit.PX, 27 + RES.close().getWidth() + 15, Unit.PX);
    }

    private void addCloseButton(NineUpBorder border) {
        Image closeIcon = new Image(RES.close());
        closeIcon.getElement().getStyle().setCursor(Style.Cursor.POINTER);
        closeIcon.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                close();
            }
        });

        LayoutPanel layoutPanel = border.getLayoutPanel();
        layoutPanel.add(closeIcon);
        layoutPanel.setWidgetTopHeight(closeIcon, 15, Unit.PX, closeIcon.getHeight(), Unit.PX);
        layoutPanel.setWidgetRightWidth(closeIcon, 27, Unit.PX, closeIcon.getWidth(), Unit.PX);
    }

    interface Resources extends NineUpBorder.Resources, ClientBundle {
        @Override
        @Source("NineUpBorder.css")
        Styles styles();

        @Override
        @Source("fullscreenPopupTopLeft.png")
        ImageResource topLeft();

        @Override
        @Source("fullscreenPopupTop.png")
        @ImageOptions(repeatStyle = RepeatStyle.Horizontal)
        ImageResource top();

        @Override
        @Source("fullscreenPopupTopRight.png")
        ImageResource topRight();

        @Override
        @Source("fullscreenPopupLeft.png")
        @ImageOptions(repeatStyle = RepeatStyle.Vertical)
        ImageResource left();

        @Override
        @Source("fullscreenPopupRight.png")
        @ImageOptions(repeatStyle = RepeatStyle.Vertical)
        ImageResource right();

        @Override
        @Source("fullscreenPopupBottomLeft.png")
        ImageResource bottomLeft();

        @Override
        @Source("fullscreenPopupBottom.png")
        @ImageOptions(repeatStyle = RepeatStyle.Horizontal)
        ImageResource bottom();

        @Override
        @Source("fullscreenPopupBottomRight.png")
        ImageResource bottomRight();

        @Source("fullscreenPopupClose.png")
        ImageResource close();
    }

    public interface Styles extends NineUpBorder.Styles {
    }

    private static final Resources RES = GWT.<Resources>create(Resources.class);
}