All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.gwt.user.client.impl.WindowImpl Maven / Gradle / Ivy

There is a newer version: 2.10.0
Show newest version
/*
 * Copyright 2008 Google Inc.
 * 
 * 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.google.gwt.user.client.impl;

import com.google.gwt.core.client.JavaScriptObject;

/**
 * Native implementation associated with
 * {@link com.google.gwt.user.client.Window}.
 */
public class WindowImpl {
  private JavaScriptObject oldOnResize;
  private JavaScriptObject oldOnScroll;
  private JavaScriptObject oldOnBeforeUnload;
  private JavaScriptObject oldOnUnload;

  public native void disposeWindowCloseHandlers() /*-{
    $wnd.onbeforeunload = [email protected]::oldOnBeforeUnload;
    $wnd.onunload = [email protected]::oldOnUnload;
  }-*/;
  
  public native void disposeWindowResizeHandlers() /*-{
     $wnd.onresize = [email protected]::oldOnResize;
   }-*/;
  
  public native void disposeWindowScrollHandlers() /*-{
     $wnd.onscroll = [email protected]::oldOnScroll;
   }-*/;

  public native String getHash() /*-{
    return $wnd.location.hash;
  }-*/;

  public native String getQueryString() /*-{
    return $wnd.location.search;
  }-*/;
  
  public native void initWindowCloseHandler() /*-{
    var oldOnBeforeUnload = [email protected]::oldOnBeforeUnload = $wnd.onbeforeunload;
    var oldOnUnload =  [email protected]::oldOnUnload = $wnd.onunload;
    
    // Old mozilla doesn't like $entry's explicit return statement and
    // will always pop up a confirmation dialog.  This is worked around by
    // just wrapping the call to onClosing(), which still has the semantics
    // that we want.
    $wnd.onbeforeunload = function(evt) {
      var ret, oldRet;
      try {
        ret = $entry(@com.google.gwt.user.client.Window::onClosing())();
      } finally {
        oldRet = oldOnBeforeUnload && oldOnBeforeUnload(evt);
      }
      // Avoid returning null as IE6 will coerce it into a string.
      // Ensure that "" gets returned properly.
      if (ret != null) {
        return ret;
      }
      if (oldRet != null) {
        return oldRet;
      }
      // returns undefined.
    };
    
    $wnd.onunload = $entry(function(evt) {
      try {
        @com.google.gwt.user.client.Window::onClosed()();
      } finally {
        oldOnUnload && oldOnUnload(evt);
        $wnd.onresize = null;
        $wnd.onscroll = null;
        $wnd.onbeforeunload = null;
        $wnd.onunload = null;
      }
    });
  }-*/;

  public native void initWindowResizeHandler() /*-{
    var oldOnResize = [email protected]::oldOnResize = $wnd.onresize;
    $wnd.onresize = $entry(function(evt) {
      try {
        @com.google.gwt.user.client.Window::onResize()();
      } finally {
        oldOnResize && oldOnResize(evt);
      }
    });
  }-*/;

  public native void initWindowScrollHandler() /*-{
    var oldOnScroll =  [email protected]::oldOnScroll = $wnd.onscroll;
    $wnd.onscroll = $entry(function(evt) {
      try {
        @com.google.gwt.user.client.Window::onScroll()();
      } finally {
        oldOnScroll && oldOnScroll(evt);
      }
    });
  }-*/;
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy