com.dimdim.conference.ui.model.client.helper.FlashXmlCallInterface.java Source code

Java tutorial

Introduction

Here is the source code for com.dimdim.conference.ui.model.client.helper.FlashXmlCallInterface.java

Source

/*
 **************************************************************************
 *                                                                        *
 *               DDDDD   iii             DDDDD   iii                      *
 *               DD  DD      mm mm mmmm  DD  DD      mm mm mmmm           *
 *               DD   DD iii mmm  mm  mm DD   DD iii mmm  mm  mm          *
 *               DD   DD iii mmm  mm  mm DD   DD iii mmm  mm  mm          *
 *               DDDDDD  iii mmm  mm  mm DDDDDD  iii mmm  mm  mm          *
 *                                                                        *
 **************************************************************************
 **************************************************************************
 *                                                                        *
 * Part of the DimDim V 1.0 Codebase (http://www.dimdim.com)             *
 *                                                                        *
 * Copyright (c) 2007 Dimdim Inc. All Rights Reserved.                 *
 *                                                                        *
 *                                                                        *
 * This code is licensed under the DimDim License                         *
 * For details please visit http://www.dimdim.com/license                 *
 *                                                                        *
 **************************************************************************
 */

package com.dimdim.conference.ui.model.client.helper;

import java.util.HashMap;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.Timer;
import com.dimdim.conference.ui.model.client.JSInterface;
import com.dimdim.conference.ui.model.client.JSCallbackListener;

/**
 * @author Jayant Pandit
 * @email Jayant.Pandit@communiva.com
 *
 */
public class FlashXmlCallInterface implements JSCallbackListener {
    private static FlashXmlCallInterface theInterface;

    public static FlashXmlCallInterface getInterface() {
        if (FlashXmlCallInterface.theInterface == null) {
            FlashXmlCallInterface.theInterface = new FlashXmlCallInterface();
        }
        return FlashXmlCallInterface.theInterface;
    }

    private HashMap urlListeners;
    //   private   int      checkCounter = 0;
    private Timer responseChecker;

    private FlashXmlCallInterface() {
        urlListeners = new HashMap();

        JSInterface.addCallbackListener(this);
    }

    public void addUrlListener(String code, FlashXmlCallListener listener) {
        this.urlListeners.put(code, listener);
    }

    public void removeUrlListener(String code) {
        this.urlListeners.remove(code);
    }

    public String getListenerName() {
        return "DMS";
    }

    public void handleCallFromJS(String data) {
    }

    public void handleCallFromJS2(String data1, String data2) {
    }

    public void handleCallFromJS3(String code, String result, String response) {
        stopResponseChecker();
        FlashXmlCallListener listener = (FlashXmlCallListener) this.urlListeners.get(code);
        //      if (listener != null)
        //      {
        //         listener.onInterfaceResponse("handleCallFromJS3:"+code+":"+result+":"+response);
        //      }
        try {
            cleanupResponse();
        } catch (Exception e) {

        }
        listener = (FlashXmlCallListener) this.urlListeners.get(code);
        if (listener != null) {
            listener.onCompletion(result, response);
        }
    }

    public void startResponseChecker(final String code, FlashXmlCallListener listener, final int waitMillis) {
        if (listener != null) {
            this.addUrlListener(code, listener);
        }

        stopResponseChecker();

        this.responseChecker = new Timer() {
            public void run() {
                FlashXmlCallListener listener = (FlashXmlCallListener) urlListeners.get(code);
                if (listener != null) {
                    listener.onCompletion("timeout", "No response from server. Please contact support@dimdim.com");
                }
            }
        };
        responseChecker.schedule(waitMillis);
    }

    public void stopResponseChecker() {
        if (this.responseChecker != null) {
            this.responseChecker.cancel();
            this.responseChecker = null;
        }
    }

    public void callXmlUrlInFlash(final String code, final String url, final int waitMillis) {
        //      this.checkCounter = 0;
        try {
            cleanupResponse();
        } catch (Exception e) {

        }
        this.startResponseChecker(code, null, waitMillis);
        callXmlUrlInJS(code, url + "&cflag=" + System.currentTimeMillis());
    }

    private native void callXmlUrlInJS(String code, String url)/*-{
                                                               $wnd.callDMS(url);
                                                               }-*/;

    //   private   native   String   runResponseCheckInJS(String code)/*-{
    //      return   $wnd.checkDMSResponse(code);
    //   }-*/;
    private native void cleanupResponse()/*-{
                                         $wnd.clearDMSResponse();
                                         }-*/;
}