Package nz.org.winters.appspot.acrareporter.client.ui

Source Code of nz.org.winters.appspot.acrareporter.client.ui.EMailTemplateSend$DialogCallback

package nz.org.winters.appspot.acrareporter.client.ui;

/*
* Copyright 2013 Mathew Winters

* 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.
*/
import java.util.ArrayList;
import java.util.List;

import nz.org.winters.appspot.acrareporter.client.RemoteDataServiceAsync;
import nz.org.winters.appspot.acrareporter.shared.LoginInfo;
import nz.org.winters.appspot.acrareporter.shared.Utils;
import nz.org.winters.appspot.acrareporter.store.ACRALog;
import nz.org.winters.appspot.acrareporter.store.AppPackage;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.TextArea;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;

public class EMailTemplateSend extends Composite
{
  private static UIConstants constants = (UIConstants) GWT.create(UIConstants.class);

  public interface DialogCallback
  {
    public void result(boolean ok);
  }

  private static EMailTemplateSendUiBinder uiBinder = GWT.create(EMailTemplateSendUiBinder.class);
  @UiField
  TextArea                                 textBody;
  @UiField
  TextArea                                 textEMailAddresses;
  @UiField
  TextBox                                  textSubject;

  private DialogCallback                   mCallback;
  private RemoteDataServiceAsync           remoteService;
  private List<String>                     reportIds;
  //private AppPackage                 appPackage;
  private LoginInfo                        loginInfo;

  interface EMailTemplateSendUiBinder extends UiBinder<Widget, EMailTemplateSend>
  {
  }

  public EMailTemplateSend(LoginInfo loginInfo, AppPackage appPackage, List<String> reportIds, RemoteDataServiceAsync remoteService, DialogCallback callback)
  {
    mCallback = callback;
    this.reportIds = reportIds;
    this.remoteService = remoteService;
    this.loginInfo = loginInfo;
   // this.appPackage = appPackage;

    initWidget(uiBinder.createAndBindUi(this));

    textSubject.setText(appPackage.EMailSubject);
    textBody.setText(appPackage.EMailTemplate);

    startLoading();
    remoteService.findEMailAddresses(reportIds, new AsyncCallback<String>()
    {

      @Override
      public void onSuccess(String result)
      {
        textEMailAddresses.setText(result);
        stopLoading();

      }

      @Override
      public void onFailure(Throwable caught)
      {
        Window.alert(caught.toString());
        stopLoading();

      }
    });
  }

  public EMailTemplateSend(LoginInfo loginInfo, AppPackage appPackage, ACRALog acraLog, RemoteDataServiceAsync remoteService, DialogCallback callback)
  {
    mCallback = callback;
    this.remoteService = remoteService;
    this.reportIds = new ArrayList<String>();
    this.reportIds.add(acraLog.REPORT_ID);
    this.loginInfo = loginInfo;
  //  this.appPackage = appPackage;

    initWidget(uiBinder.createAndBindUi(this));

    // populate.
    textSubject.setText(appPackage.EMailSubject);
    textBody.setText(appPackage.EMailTemplate);
    textEMailAddresses.setText(Utils.findEMail(acraLog.USER_EMAIL, acraLog.USER_COMMENT));
  }

  @UiHandler("buttonOK")
  void onButtonOKClick(ClickEvent event)
  {
    // send the e-mail via server..
    startLoading();
    remoteService.sendFixedEMail(loginInfo, reportIds, textEMailAddresses.getText(), textSubject.getText(), textBody.getText(), new AsyncCallback<Void>()
    {

      @Override
      public void onSuccess(Void result)
      {
        stopLoading();
        mCallback.result(true);
      }

      @Override
      public void onFailure(Throwable caught)
      {
        stopLoading();
        Window.alert(caught.toString());
      }
    });
  }

  @UiHandler("buttonCancel")
  void onButtonCancelClick(ClickEvent event)
  {
    mCallback.result(false);
  }

  public static void doDialog(LoginInfo loginInfo, AppPackage appPackage, List<String> reportIds, final RemoteDataServiceAsync remoteService, final DialogCallback callback)
  {
    final DialogBox dialogBox = new DialogBox();
    dialogBox.setText(constants.emailLabelSend(appPackage.AppName));

    // Create a table to layout the content
    EMailTemplateSend pet = new EMailTemplateSend(loginInfo, appPackage, reportIds, remoteService, new EMailTemplateSend.DialogCallback()
    {

      @Override
      public void result(boolean ok)
      {
        if (ok)
        {
          dialogBox.hide();
        } else
        {
          dialogBox.hide();
        }

      }
    });

    pet.setWidth("100%");
    dialogBox.setWidget(pet);
    dialogBox.center();
    dialogBox.show();

  }

  public static void doDialog(LoginInfo loginInfo, AppPackage appPackage, ACRALog acraLog, final RemoteDataServiceAsync remoteService, final DialogCallback callback)
  {
    final DialogBox dialogBox = new DialogBox();
    dialogBox.setText(constants.emailLabelSend(appPackage.AppName));

    // Create a table to layout the content
    EMailTemplateSend pet = new EMailTemplateSend(loginInfo, appPackage, acraLog, remoteService, new EMailTemplateSend.DialogCallback()
    {

      @Override
      public void result(boolean ok)
      {
        if (ok)
        {
          dialogBox.hide();
        } else
        {
          dialogBox.hide();
        }

      }
    });

    pet.setWidth("680px");
    dialogBox.setWidget(pet);
    dialogBox.center();
    dialogBox.show();

  }

  public void startLoading()
  {
    AppLoadingView.getInstance().start();

  }

  public void stopLoading()
  {
    AppLoadingView.getInstance().stop();
  }

}
TOP

Related Classes of nz.org.winters.appspot.acrareporter.client.ui.EMailTemplateSend$DialogCallback

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.