/* * Copyright (c) 2011 PonySDK * Owners: * Luciano Broussal <luciano.broussal AT gmail.com> * Mathieu Barbier <mathieu.barbier AT gmail.com> * Nicolas Ciaravola <nicolas.ciaravola.pro AT gmail.com> * * WebSite: * http://code.google.com/p/pony-sdk/ * * 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.ponysdk.core.ui.rich; import com.ponysdk.core.model.PHorizontalAlignment; import com.ponysdk.core.ui.basic.Element; import com.ponysdk.core.ui.basic.IsPWidget; import com.ponysdk.core.ui.basic.PFlexTable; import com.ponysdk.core.ui.basic.PPopupPanel; import com.ponysdk.core.ui.basic.PSimplePanel; import com.ponysdk.core.ui.basic.PWidget; import com.ponysdk.core.ui.basic.event.PClickEvent; import com.ponysdk.core.ui.basic.event.PClickHandler; public class PClosableDialogBox extends PPopupPanel { private final PSimplePanel captionContainer; private final PSimplePanel closeContainer; private final PSimplePanel contentContainer; public PClosableDialogBox(final String caption) { this(false, Element.newPLabel(caption), Element.newPImage("images/close_16.png")); } public PClosableDialogBox(final boolean modal, final IsPWidget captionWidget, final IsPWidget closeWidget) { super(false); setModal(modal); setStyleName("pony-closable-dialog-box"); captionContainer = Element.newPSimplePanel(); closeContainer = Element.newPSimplePanel(); contentContainer = Element.newPSimplePanel(); captionContainer.setStyleName("caption"); closeContainer.setStyleName("close"); contentContainer.setStyleName("content"); final PFlexTable layout = Element.newPFlexTable(); layout.addStyleName("layout"); layout.setWidget(0, 0, captionContainer); layout.setWidget(0, 1, closeContainer); layout.setWidget(1, 0, contentContainer); layout.getCellFormatter().setColSpan(1, 0, 2); layout.getCellFormatter().setHorizontalAlignment(0, 0, PHorizontalAlignment.ALIGN_LEFT); layout.getCellFormatter().setHorizontalAlignment(0, 1, PHorizontalAlignment.ALIGN_RIGHT); layout.getRowFormatter().addStyleName(0, "header"); closeContainer.addDomHandler((PClickHandler) 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((offsetWidth, offsetHeight, windowWidth, windowHeight) -> setPopupPosition( (windowWidth - offsetWidth) / 2, (windowHeight - offsetHeight) / 2)); } }