com.qualogy.qafe.gwt.client.component.DialogComponent.java Source code

Java tutorial

Introduction

Here is the source code for com.qualogy.qafe.gwt.client.component.DialogComponent.java

Source

/**
 * Copyright 2008-2015 Qualogy Solutions B.V.
 *
 * 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.qualogy.qafe.gwt.client.component;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.logical.shared.CloseEvent;
import com.google.gwt.event.logical.shared.CloseHandler;
import com.google.gwt.event.logical.shared.OpenEvent;
import com.google.gwt.event.logical.shared.OpenHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DisclosurePanel;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.widgetideas.client.GlassPanel;
import com.google.gwt.widgetideas.table.client.overrides.FlexTable;
import com.qualogy.qafe.gwt.client.factory.MainFactoryActions;
import com.qualogy.qafe.gwt.client.vo.functions.dialog.GenericDialogGVO;

@SuppressWarnings("deprecation")
public class DialogComponent {

    private static GlassPanel glassPanel = new GlassPanel(true);

    public DialogComponent() {
    }

    public static void showDialog(final String dialogTitle, String dialogMessage, String dialogType,
            String detailedMessage, int left, int top) {
        final ShowPanelComponent dialogBox = new ShowPanelComponent(false, true, left, top);
        final boolean expandAndShrinkDisclosureInCenter = left > 0 ? false : true;
        boolean showSendReportButton = false;

        FlexTable dialogComponentMainContainer = new FlexTable();

        Label close = new Label("X");
        close.setStyleName("qafe_close_on_showPanel");
        close.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                dialogBox.hide();
            }
        });

        Label dialogTitleLabel = new Label(dialogTitle);
        if (dialogMessage != null && dialogMessage.length() > 1000) {
            detailedMessage = dialogMessage;
            dialogMessage = dialogTitle;

        }
        HTML dialogMessageHTML = new HTML(dialogMessage);

        String imageURL = null;
        if (dialogType.equals(GenericDialogGVO.TYPE_ALERT)) {
            imageURL = "images/alertDialogIcon.png";
        } else if (dialogType.equals(GenericDialogGVO.TYPE_ERROR)) {
            showSendReportButton = true;
            imageURL = "images/errorDialogIcon.png";
        } else {
            imageURL = "images/infoDialogIcon.png";
        }
        Image dialogTypeImage = new Image(imageURL);

        FlexTable buttonsHolder = new FlexTable();
        Button okButton = new Button("OK");
        okButton.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                glassPanel.removeFromParent();
                dialogBox.hide();
            }
        });
        okButton.setWidth("90px");
        buttonsHolder.setWidget(0, 1, okButton);

        if (detailedMessage != null) {
            if (showSendReportButton) {
                Button sendReportButton = new Button("Send Report");
                final String detailedMessageFinal = detailedMessage;
                final String dialogMessageFinal = dialogMessage;
                sendReportButton.addClickHandler(new ClickHandler() {
                    public void onClick(ClickEvent event) {
                        MainFactoryActions.notify("QAFE ERROR Report[" + dialogTitle + "]",
                                dialogMessageFinal + "     \n" + detailedMessageFinal);
                        glassPanel.removeFromParent();
                        dialogBox.hide();
                    }
                });
                sendReportButton.setWidth("90px");
                buttonsHolder.setWidget(0, 2, sendReportButton);
            }

            final ScrollPanel scrollPanel = new ScrollPanel(new HTML(detailedMessage));
            if (dialogMessage != null && dialogMessage.length() > 100) {
                scrollPanel.setSize("1000px", "200px");
            } else {
                scrollPanel.setSize("500px", "200px");
            }
            DisclosurePanel disclosurePanel = new DisclosurePanel("Details");
            disclosurePanel.add(scrollPanel);
            disclosurePanel.addOpenHandler(new OpenHandler<DisclosurePanel>() {
                public void onOpen(OpenEvent<DisclosurePanel> arg0) {
                    if (expandAndShrinkDisclosureInCenter) {
                        dialogBox.center();
                    }
                }
            });
            disclosurePanel.addCloseHandler(new CloseHandler<DisclosurePanel>() {
                public void onClose(CloseEvent<DisclosurePanel> arg0) {
                    if (expandAndShrinkDisclosureInCenter) {
                        dialogBox.center();
                    }
                }
            });
            dialogComponentMainContainer.setWidget(3, 1, disclosurePanel);

        }

        dialogComponentMainContainer.setWidget(0, 3, close);
        dialogComponentMainContainer.setWidget(1, 0, dialogTitleLabel);
        dialogComponentMainContainer.setWidget(2, 0, dialogTypeImage);
        dialogComponentMainContainer.setWidget(2, 1, dialogMessageHTML);
        dialogComponentMainContainer.setWidget(4, 1, buttonsHolder);

        dialogComponentMainContainer.getFlexCellFormatter().setWidth(2, 0, "40px");
        dialogComponentMainContainer.getFlexCellFormatter().setColSpan(1, 0, 2);
        dialogComponentMainContainer.getFlexCellFormatter().setColSpan(3, 1, 2);
        dialogComponentMainContainer.getFlexCellFormatter().setColSpan(4, 1, 1);

        dialogBox.add(dialogComponentMainContainer);
        RootPanel.get().add(glassPanel, 0, 0);
        if (left == 0 && top == 0) {
            dialogBox.center();
        } else {
            dialogBox.setVisible(false);
            dialogBox.show();
            int dialogHalfWidth = (int) (dialogBox.getOffsetWidth() / 3);
            int dialogHalfHeight = (int) (dialogBox.getOffsetHeight() / 3);
            left = left - dialogHalfWidth < 0 ? 0 : left - dialogHalfWidth;
            top = top - dialogHalfHeight;
            dialogBox.setPopupPosition(left, top);
            dialogBox.setVisible(true);
        }
    }
}