/*
 * 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 INPUT = "input";
  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() {
  }
}
