Package com.ponysdk.ui.server.rich

Source Code of com.ponysdk.ui.server.rich.PClosableDialogBox

package com.ponysdk.ui.server.rich;

import com.ponysdk.impl.theme.PonySDKTheme;
import com.ponysdk.ui.server.basic.IsPWidget;
import com.ponysdk.ui.server.basic.PFlexTable;
import com.ponysdk.ui.server.basic.PImage;
import com.ponysdk.ui.server.basic.PLabel;
import com.ponysdk.ui.server.basic.PPopupPanel;
import com.ponysdk.ui.server.basic.PSimplePanel;
import com.ponysdk.ui.server.basic.PWidget;
import com.ponysdk.ui.server.basic.event.PClickEvent;
import com.ponysdk.ui.server.basic.event.PClickHandler;
import com.ponysdk.ui.terminal.basic.PHorizontalAlignment;

public class PClosableDialogBox extends PPopupPanel {

    private final PSimplePanel captionContainer;

    private final PSimplePanel closeContainer;

    private final PSimplePanel contentContainer;

    public PClosableDialogBox(final String caption) {
        this(false, new PLabel(caption), new PImage("images/close_16.png"));
    }

    public PClosableDialogBox(final boolean modal, final IsPWidget captionWidget, final IsPWidget closeWidget) {
        super(false);
        setModal(modal);

        setStyleName(PonySDKTheme.CLOSABLE_DIALOGBOX);

        captionContainer = new PSimplePanel();
        closeContainer = new PSimplePanel();
        contentContainer = new PSimplePanel();
        captionContainer.setStyleName(PonySDKTheme.CLOSABLE_DIALOGBOX_CAPTION);
        closeContainer.setStyleName(PonySDKTheme.CLOSABLE_DIALOGBOX_CLOSE);
        contentContainer.setStyleName(PonySDKTheme.CLOSABLE_DIALOGBOX_CONTENT);

        final PFlexTable layout = new PFlexTable();
        layout.addStyleName(PonySDKTheme.CLOSABLE_DIALOGBOX_LAYOUT);

        layout.setWidget(0, 0, captionContainer);
        layout.setWidget(0, 1, closeContainer);
        layout.setWidget(1, 0, contentContainer);

        layout.getFlexCellFormatter().setColSpan(1, 0, 2);
        layout.getFlexCellFormatter().setHorizontalAlignment(0, 0, PHorizontalAlignment.ALIGN_LEFT);
        layout.getFlexCellFormatter().setHorizontalAlignment(0, 1, PHorizontalAlignment.ALIGN_RIGHT);
        layout.getFlexCellFormatter().addStyleName(0, 0, PonySDKTheme.CLOSABLE_DIALOGBOX_HEADER);
        layout.getFlexCellFormatter().addStyleName(0, 1, PonySDKTheme.CLOSABLE_DIALOGBOX_HEADER);

        closeContainer.addDomHandler(new PClickHandler() {

            @Override
            public void onClick(final PClickEvent event) {
                hide();
            }
        }, PClickEvent.TYPE);

        super.setWidget(layout);

        captionContainer.setWidget(captionWidget);
        closeContainer.setWidget(closeWidget);
    }

    public void setCaption(final IsPWidget widget) {
        captionContainer.setWidget(widget);
    }

    public void setClose(final IsPWidget widget) {
        closeContainer.setWidget(widget);
    }

    public void setContent(final IsPWidget widget) {
        contentContainer.setWidget(widget);
    }

    @Override
    public void setWidget(final PWidget w) {
        throw new IllegalArgumentException("Use PClosableDialogBox.setContent() to set the content of the popup");
    }

    public void displayAtCenter() {
        setPopupPositionAndShow(new PPositionCallback() {

            @Override
            public void setPosition(final int offsetWidth, final int offsetHeight, final int windowWidth, final int windowHeight) {
                setPopupPosition((windowWidth - offsetWidth) / 2, (windowHeight - offsetHeight) / 2);
            }
        });
    }
}
TOP

Related Classes of com.ponysdk.ui.server.rich.PClosableDialogBox

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.