Package com.freewebsys.core.client

Source Code of com.freewebsys.core.client.SystemMessageDialog$OnButtonAlert

package com.freewebsys.core.client;

import com.freewebsys.core.client.image.XImages;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;

public class SystemMessageDialog extends DialogBox {

  public static final XImages images = (XImages) GWT.create(XImages.class);

  // 取消按钮.都是进行关闭操作的.

  public interface OnButtonAlert {
    void alertEvent();
  }

  public interface OnButtonConfirm {
    void confirmEvent(boolean yesOrNo);
  }

  public interface OnButtonPrompt {
    void promptEvent(String value);
  }

  public interface OnButtonInfo {
    void info();
  }

  public SystemMessageDialog(String title) {
    setText(title);
    setGlassEnabled(true);
    setAnimationEnabled(false);
    // setPixelSize(300, 150);
  }

  private static FlexTable getCommonLayout(int showType, String msg) {

    FlexTable layout = new FlexTable();
    layout.setCellSpacing(6);
    layout.setWidth("260px");
    // layout.setBorderWidth(1);
    switch (showType) {
      case 0:
        layout.setWidget(0, 0, new Image(images.warning()));
        break;
      case 1:
        layout.setWidget(0, 0, new Image(images.question()));
        break;
      case 2:
        layout.setWidget(0, 0, new Image(images.question()));
        break;
    }

    layout.setWidget(0, 1, new HTML(msg));
    FlexCellFormatter cellFormatter = layout.getFlexCellFormatter();
    cellFormatter.setHorizontalAlignment(0, 1,
        HasHorizontalAlignment.ALIGN_CENTER);
    cellFormatter.setColSpan(1, 0, 2);
    cellFormatter.setColSpan(2, 0, 2);
    cellFormatter.setWidth(0, 0, "15%");
    cellFormatter.setWidth(0, 1, "85%");
    cellFormatter.setHorizontalAlignment(1, 0,
        HasHorizontalAlignment.ALIGN_CENTER);
    cellFormatter.setHorizontalAlignment(2, 0,
        HasHorizontalAlignment.ALIGN_CENTER);
    return layout;
  }

  public static void alert(String msg, final OnButtonAlert callback) {
    final SystemMessageDialog dialog = new SystemMessageDialog("提示窗口.");

    FlexTable layout = getCommonLayout(0, msg);
    // 得到通用的布局.

    HorizontalPanel buttonPanel = new HorizontalPanel();
    // 添加button布局.
    buttonPanel.setHorizontalAlignment(HorizontalPanel.ALIGN_CENTER);

    Button okButton = new Button("确定");
    okButton.addClickHandler(new ClickHandler() {
      @Override
      public void onClick(ClickEvent event) {
        callback.alertEvent();
        dialog.hide();
      }
    });

    buttonPanel.add(okButton);

    // 设置成中心对齐.
    layout.setWidget(1, 0, buttonPanel);

    dialog.add(layout);
    dialog.center2();
    dialog.show();

  }

  public static void confirm(String msg, final OnButtonConfirm callback) {
    final SystemMessageDialog dialog = new SystemMessageDialog("提示窗口.");

    FlexTable layout = getCommonLayout(1, msg);
    // 得到通用的布局.

    HorizontalPanel buttonPanel = new HorizontalPanel();
    // 添加button布局.
    buttonPanel.setHorizontalAlignment(HorizontalPanel.ALIGN_CENTER);

    Button yesButton = new Button(" 是 ");
    yesButton.addClickHandler(new ClickHandler() {
      @Override
      public void onClick(ClickEvent event) {
        callback.confirmEvent(true);
        dialog.hide();
      }
    });
    Button noButton = new Button(" 否 ");
    noButton.addClickHandler(new ClickHandler() {
      @Override
      public void onClick(ClickEvent event) {
        callback.confirmEvent(false);
        dialog.hide();
      }
    });

    buttonPanel.add(yesButton);
    buttonPanel.add(new HTML("   "));
    buttonPanel.add(noButton);

    // 设置成中心对齐.
    layout.setWidget(1, 0, buttonPanel);

    dialog.add(layout);
    dialog.center2();
    dialog.show();

  }

  public static void prompt(String msg, final OnButtonPrompt callback) {
    final SystemMessageDialog dialog = new SystemMessageDialog("提示窗口.");

    FlexTable layout = getCommonLayout(2, msg);
    // 得到通用的布局.
    final TextBox textBox = new TextBox();
    layout.setWidget(1, 0, textBox);
    HorizontalPanel buttonPanel = new HorizontalPanel();
    // 添加button布局.
    buttonPanel.setHorizontalAlignment(HorizontalPanel.ALIGN_CENTER);

    Button okButton = new Button("确定");
    okButton.addClickHandler(new ClickHandler() {
      @Override
      public void onClick(ClickEvent event) {
        callback.promptEvent(textBox.getValue());
        dialog.hide();
      }
    });

    Button cancelButton = new Button("取消");
    cancelButton.addClickHandler(new ClickHandler() {
      @Override
      public void onClick(ClickEvent event) {
        dialog.hide();
      }
    });
    buttonPanel.add(okButton);
    buttonPanel.add(new HTML("   "));
    buttonPanel.add(cancelButton);

    // 设置成中心对齐.
    layout.setWidget(2, 0, buttonPanel);

    dialog.add(layout);
    dialog.center2();
    dialog.show();
  }

  public static void info(String msg, final OnButtonInfo callback) {
    final SystemMessageDialog dialog = new SystemMessageDialog("提示窗口.");

    FlexTable layout = getCommonLayout(0, msg);
    // 得到通用的布局.

    HorizontalPanel buttonPanel = new HorizontalPanel();
    // 添加button布局.
    buttonPanel.setHorizontalAlignment(HorizontalPanel.ALIGN_CENTER);

    Button okButton = new Button("确定");
    okButton.addClickHandler(new ClickHandler() {
      @Override
      public void onClick(ClickEvent event) {
        callback.info();
      }
    });

    Button cancelButton = new Button("取消");
    cancelButton.addClickHandler(new ClickHandler() {
      @Override
      public void onClick(ClickEvent event) {
        dialog.hide();
      }
    });
    buttonPanel.add(okButton);
    buttonPanel.add(new HTML("   "));
    buttonPanel.add(cancelButton);

    // 设置成中心对齐.
    layout.setWidget(1, 0, buttonPanel);

    dialog.add(layout);
    dialog.center2();
    dialog.show();
  }

  public void center2() {
    int left = (Window.getClientWidth() - 260) / 2;
    int top = (Window.getClientHeight() - 260) / 2;
    setPopupPosition(Math.max(Window.getScrollLeft() + left, 0), Math.max(
        Window.getScrollTop() + top, 0));
  }
}
TOP

Related Classes of com.freewebsys.core.client.SystemMessageDialog$OnButtonAlert

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.