227 lines
6.7 KiB
JavaScript
227 lines
6.7 KiB
JavaScript
goog.provide('ol.events.condition');
|
|
|
|
goog.require('ol.MapBrowserEventType');
|
|
goog.require('ol.asserts');
|
|
goog.require('ol.functions');
|
|
goog.require('ol.has');
|
|
|
|
|
|
/**
|
|
* Return `true` if only the alt-key is pressed, `false` otherwise (e.g. when
|
|
* additionally the shift-key is pressed).
|
|
*
|
|
* @param {ol.MapBrowserEvent} mapBrowserEvent Map browser event.
|
|
* @return {boolean} True if only the alt key is pressed.
|
|
* @api
|
|
*/
|
|
ol.events.condition.altKeyOnly = function(mapBrowserEvent) {
|
|
var originalEvent = mapBrowserEvent.originalEvent;
|
|
return (
|
|
originalEvent.altKey &&
|
|
!(originalEvent.metaKey || originalEvent.ctrlKey) &&
|
|
!originalEvent.shiftKey);
|
|
};
|
|
|
|
|
|
/**
|
|
* Return `true` if only the alt-key and shift-key is pressed, `false` otherwise
|
|
* (e.g. when additionally the platform-modifier-key is pressed).
|
|
*
|
|
* @param {ol.MapBrowserEvent} mapBrowserEvent Map browser event.
|
|
* @return {boolean} True if only the alt and shift keys are pressed.
|
|
* @api
|
|
*/
|
|
ol.events.condition.altShiftKeysOnly = function(mapBrowserEvent) {
|
|
var originalEvent = mapBrowserEvent.originalEvent;
|
|
return (
|
|
originalEvent.altKey &&
|
|
!(originalEvent.metaKey || originalEvent.ctrlKey) &&
|
|
originalEvent.shiftKey);
|
|
};
|
|
|
|
|
|
/**
|
|
* Return always true.
|
|
*
|
|
* @param {ol.MapBrowserEvent} mapBrowserEvent Map browser event.
|
|
* @return {boolean} True.
|
|
* @function
|
|
* @api
|
|
*/
|
|
ol.events.condition.always = ol.functions.TRUE;
|
|
|
|
|
|
/**
|
|
* Return `true` if the event is a `click` event, `false` otherwise.
|
|
*
|
|
* @param {ol.MapBrowserEvent} mapBrowserEvent Map browser event.
|
|
* @return {boolean} True if the event is a map `click` event.
|
|
* @api
|
|
*/
|
|
ol.events.condition.click = function(mapBrowserEvent) {
|
|
return mapBrowserEvent.type == ol.MapBrowserEventType.CLICK;
|
|
};
|
|
|
|
|
|
/**
|
|
* Return `true` if the event has an "action"-producing mouse button.
|
|
*
|
|
* By definition, this includes left-click on windows/linux, and left-click
|
|
* without the ctrl key on Macs.
|
|
*
|
|
* @param {ol.MapBrowserEvent} mapBrowserEvent Map browser event.
|
|
* @return {boolean} The result.
|
|
*/
|
|
ol.events.condition.mouseActionButton = function(mapBrowserEvent) {
|
|
var originalEvent = mapBrowserEvent.originalEvent;
|
|
return originalEvent.button == 0 &&
|
|
!(ol.has.WEBKIT && ol.has.MAC && originalEvent.ctrlKey);
|
|
};
|
|
|
|
|
|
/**
|
|
* Return always false.
|
|
*
|
|
* @param {ol.MapBrowserEvent} mapBrowserEvent Map browser event.
|
|
* @return {boolean} False.
|
|
* @function
|
|
* @api
|
|
*/
|
|
ol.events.condition.never = ol.functions.FALSE;
|
|
|
|
|
|
/**
|
|
* Return `true` if the browser event is a `pointermove` event, `false`
|
|
* otherwise.
|
|
*
|
|
* @param {ol.MapBrowserEvent} mapBrowserEvent Map browser event.
|
|
* @return {boolean} True if the browser event is a `pointermove` event.
|
|
* @api
|
|
*/
|
|
ol.events.condition.pointerMove = function(mapBrowserEvent) {
|
|
return mapBrowserEvent.type == 'pointermove';
|
|
};
|
|
|
|
|
|
/**
|
|
* Return `true` if the event is a map `singleclick` event, `false` otherwise.
|
|
*
|
|
* @param {ol.MapBrowserEvent} mapBrowserEvent Map browser event.
|
|
* @return {boolean} True if the event is a map `singleclick` event.
|
|
* @api
|
|
*/
|
|
ol.events.condition.singleClick = function(mapBrowserEvent) {
|
|
return mapBrowserEvent.type == ol.MapBrowserEventType.SINGLECLICK;
|
|
};
|
|
|
|
|
|
/**
|
|
* Return `true` if the event is a map `dblclick` event, `false` otherwise.
|
|
*
|
|
* @param {ol.MapBrowserEvent} mapBrowserEvent Map browser event.
|
|
* @return {boolean} True if the event is a map `dblclick` event.
|
|
* @api
|
|
*/
|
|
ol.events.condition.doubleClick = function(mapBrowserEvent) {
|
|
return mapBrowserEvent.type == ol.MapBrowserEventType.DBLCLICK;
|
|
};
|
|
|
|
|
|
/**
|
|
* Return `true` if no modifier key (alt-, shift- or platform-modifier-key) is
|
|
* pressed.
|
|
*
|
|
* @param {ol.MapBrowserEvent} mapBrowserEvent Map browser event.
|
|
* @return {boolean} True only if there no modifier keys are pressed.
|
|
* @api
|
|
*/
|
|
ol.events.condition.noModifierKeys = function(mapBrowserEvent) {
|
|
var originalEvent = mapBrowserEvent.originalEvent;
|
|
return (
|
|
!originalEvent.altKey &&
|
|
!(originalEvent.metaKey || originalEvent.ctrlKey) &&
|
|
!originalEvent.shiftKey);
|
|
};
|
|
|
|
|
|
/**
|
|
* Return `true` if only the platform-modifier-key (the meta-key on Mac,
|
|
* ctrl-key otherwise) is pressed, `false` otherwise (e.g. when additionally
|
|
* the shift-key is pressed).
|
|
*
|
|
* @param {ol.MapBrowserEvent} mapBrowserEvent Map browser event.
|
|
* @return {boolean} True if only the platform modifier key is pressed.
|
|
* @api
|
|
*/
|
|
ol.events.condition.platformModifierKeyOnly = function(mapBrowserEvent) {
|
|
var originalEvent = mapBrowserEvent.originalEvent;
|
|
return (
|
|
!originalEvent.altKey &&
|
|
(ol.has.MAC ? originalEvent.metaKey : originalEvent.ctrlKey) &&
|
|
!originalEvent.shiftKey);
|
|
};
|
|
|
|
|
|
/**
|
|
* Return `true` if only the shift-key is pressed, `false` otherwise (e.g. when
|
|
* additionally the alt-key is pressed).
|
|
*
|
|
* @param {ol.MapBrowserEvent} mapBrowserEvent Map browser event.
|
|
* @return {boolean} True if only the shift key is pressed.
|
|
* @api
|
|
*/
|
|
ol.events.condition.shiftKeyOnly = function(mapBrowserEvent) {
|
|
var originalEvent = mapBrowserEvent.originalEvent;
|
|
return (
|
|
!originalEvent.altKey &&
|
|
!(originalEvent.metaKey || originalEvent.ctrlKey) &&
|
|
originalEvent.shiftKey);
|
|
};
|
|
|
|
|
|
/**
|
|
* Return `true` if the target element is not editable, i.e. not a `<input>`-,
|
|
* `<select>`- or `<textarea>`-element, `false` otherwise.
|
|
*
|
|
* @param {ol.MapBrowserEvent} mapBrowserEvent Map browser event.
|
|
* @return {boolean} True only if the target element is not editable.
|
|
* @api
|
|
*/
|
|
ol.events.condition.targetNotEditable = function(mapBrowserEvent) {
|
|
var target = mapBrowserEvent.originalEvent.target;
|
|
var tagName = target.tagName;
|
|
return (
|
|
tagName !== 'INPUT' &&
|
|
tagName !== 'SELECT' &&
|
|
tagName !== 'TEXTAREA');
|
|
};
|
|
|
|
|
|
/**
|
|
* Return `true` if the event originates from a mouse device.
|
|
*
|
|
* @param {ol.MapBrowserEvent} mapBrowserEvent Map browser event.
|
|
* @return {boolean} True if the event originates from a mouse device.
|
|
* @api
|
|
*/
|
|
ol.events.condition.mouseOnly = function(mapBrowserEvent) {
|
|
ol.asserts.assert(mapBrowserEvent.pointerEvent, 56); // mapBrowserEvent must originate from a pointer event
|
|
// see http://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType
|
|
return /** @type {ol.MapBrowserEvent} */ (mapBrowserEvent).pointerEvent.pointerType == 'mouse';
|
|
};
|
|
|
|
|
|
/**
|
|
* Return `true` if the event originates from a primary pointer in
|
|
* contact with the surface or if the left mouse button is pressed.
|
|
* @see http://www.w3.org/TR/pointerevents/#button-states
|
|
*
|
|
* @param {ol.MapBrowserEvent} mapBrowserEvent Map browser event.
|
|
* @return {boolean} True if the event originates from a primary pointer.
|
|
* @api
|
|
*/
|
|
ol.events.condition.primaryAction = function(mapBrowserEvent) {
|
|
var pointerEvent = mapBrowserEvent.pointerEvent;
|
|
return pointerEvent.isPrimary && pointerEvent.button === 0;
|
|
};
|