/*
 * Copyright 2011 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.dom.client;

/**
 * Constant strings representing browser events.
 */
public class BrowserEvents {

  public static final String BLUR = "blur";
  public static final String CANPLAYTHROUGH = "canplaythrough";
  public static final String CHANGE = "change";
  public static final String CLICK = "click";
  public static final String CONTEXTMENU = "contextmenu";
  public static final String DBLCLICK = "dblclick";
  public static final String DRAG = "drag";
  public static final String DRAGEND = "dragend";
  public static final String DRAGENTER = "dragenter";
  public static final String DRAGLEAVE = "dragleave";
  public static final String DRAGOVER = "dragover";
  public static final String DRAGSTART = "dragstart";
  public static final String DROP = "drop";
  public static final String ENDED = "ended";
  public static final String ERROR = "error";
  public static final String FOCUS = "focus";
  public static final String FOCUSIN = "focusin";
  public static final String FOCUSOUT = "focusout";
  public static final String GESTURECHANGE = "gesturechange";
  public static final String GESTUREEND = "gestureend";
  public static final String GESTURESTART = "gesturestart";
  public static final String KEYDOWN = "keydown";
  public static final String KEYPRESS = "keypress";
  public static final String KEYUP = "keyup";
  public static final String LOAD = "load";
  public static final String LOADEDMETADATA = "loadedmetadata";
  public static final String LOSECAPTURE = "losecapture";
  public static final String MOUSEDOWN = "mousedown";
  public static final String MOUSEMOVE = "mousemove";
  public static final String MOUSEOUT = "mouseout";
  public static final String MOUSEOVER = "mouseover";
  public static final String MOUSEUP = "mouseup";
  public static final String MOUSEWHEEL = "mousewheel";
  public static final String PROGRESS = "progress";
  public static final String SCROLL = "scroll";
  public static final String TOUCHCANCEL = "touchcancel";
  public static final String TOUCHEND = "touchend";
  public static final String TOUCHMOVE = "touchmove";
  public static final String TOUCHSTART = "touchstart";

  // Prevents instantiation and subclassing.
  private BrowserEvents() {
  }
}
