Java tutorial
/** * 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); } } }