diff --git a/demos/side-by-side/side-by-side.js b/demos/side-by-side/side-by-side.js index 2fcfb7e40c..cf15deb693 100644 --- a/demos/side-by-side/side-by-side.js +++ b/demos/side-by-side/side-by-side.js @@ -1,6 +1,6 @@ goog.require('ol.RendererHint'); -goog.require('ol.control.Keyboard'); goog.require('ol.createMap'); +goog.require('ol.interaction.Keyboard'); goog.require('ol.layer.MapQuestOpenAerial'); goog.require('ol.view.Attribution'); @@ -32,8 +32,8 @@ var attributionView = new ol.view.Attribution(domMap); document.getElementById('attribution').appendChild( attributionView.getElement()); -var keyboardControl = new ol.control.Keyboard(); -keyboardControl.addCallback('0', function() { +var keyboardInteraction = new ol.interaction.Keyboard(); +keyboardInteraction.addCallback('0', function() { layer.setBrightness(0); layer.setContrast(0); layer.setHue(0); @@ -41,43 +41,43 @@ keyboardControl.addCallback('0', function() { layer.setOpacity(1); layer.setVisible(true); }); -keyboardControl.addCallback('b', function() { +keyboardInteraction.addCallback('b', function() { layer.setBrightness(layer.getBrightness() - 0.1); }); -keyboardControl.addCallback('B', function() { +keyboardInteraction.addCallback('B', function() { layer.setBrightness(layer.getBrightness() + 0.1); }); -keyboardControl.addCallback('c', function() { +keyboardInteraction.addCallback('c', function() { layer.setContrast(layer.getContrast() - 0.1); }); -keyboardControl.addCallback('C', function() { +keyboardInteraction.addCallback('C', function() { layer.setContrast(layer.getContrast() + 0.1); }); -keyboardControl.addCallback('h', function() { +keyboardInteraction.addCallback('h', function() { layer.setHue(layer.getHue() - 0.1); }); -keyboardControl.addCallback('H', function() { +keyboardInteraction.addCallback('H', function() { layer.setHue(layer.getHue() + 0.1); }); -keyboardControl.addCallback('o', function() { +keyboardInteraction.addCallback('o', function() { layer.setOpacity(layer.getOpacity() - 0.1); }); -keyboardControl.addCallback('O', function() { +keyboardInteraction.addCallback('O', function() { layer.setOpacity(layer.getOpacity() + 0.1); }); -keyboardControl.addCallback('r', function() { +keyboardInteraction.addCallback('r', function() { webglMap.setRotation(0); }); -keyboardControl.addCallback('s', function() { +keyboardInteraction.addCallback('s', function() { layer.setSaturation(layer.getSaturation() - 0.1); }); -keyboardControl.addCallback('S', function() { +keyboardInteraction.addCallback('S', function() { layer.setSaturation(layer.getSaturation() + 0.1); }); -keyboardControl.addCallback('vV', function() { +keyboardInteraction.addCallback('vV', function() { layer.setVisible(!layer.getVisible()); }); -domMap.getControls().push(keyboardControl); +domMap.getInteractions().push(keyboardInteraction); goog.exportSymbol('layer', layer); goog.exportSymbol('layers', layers); diff --git a/src/ol/base/createmap.js b/src/ol/base/createmap.js index dde61bdeb8..e0d90a3c66 100644 --- a/src/ol/base/createmap.js +++ b/src/ol/base/createmap.js @@ -6,19 +6,19 @@ goog.require('ol.Collection'); goog.require('ol.Map'); goog.require('ol.MapProperty'); goog.require('ol.Projection'); -goog.require('ol.control.AltDragRotate'); -goog.require('ol.control.CenterConstraint'); -goog.require('ol.control.Constraints'); -goog.require('ol.control.DblClickZoom'); -goog.require('ol.control.DragPan'); -goog.require('ol.control.KeyboardPan'); -goog.require('ol.control.KeyboardZoom'); -goog.require('ol.control.MouseWheelZoom'); -goog.require('ol.control.ResolutionConstraint'); -goog.require('ol.control.RotationConstraint'); -goog.require('ol.control.ShiftDragZoom'); goog.require('ol.dom'); goog.require('ol.dom.Map'); +goog.require('ol.interaction.AltDragRotate'); +goog.require('ol.interaction.CenterConstraint'); +goog.require('ol.interaction.Constraints'); +goog.require('ol.interaction.DblClickZoom'); +goog.require('ol.interaction.DragPan'); +goog.require('ol.interaction.KeyboardPan'); +goog.require('ol.interaction.KeyboardZoom'); +goog.require('ol.interaction.MouseWheelZoom'); +goog.require('ol.interaction.ResolutionConstraint'); +goog.require('ol.interaction.RotationConstraint'); +goog.require('ol.interaction.ShiftDragZoom'); goog.require('ol.webgl'); goog.require('ol.webgl.Map'); @@ -80,23 +80,24 @@ ol.createMap = function(target, opt_values, opt_rendererHints) { } // FIXME this should be a configuration option - var centerConstraint = ol.control.CenterConstraint.snapToPixel; - var resolutionConstraint = ol.control.ResolutionConstraint.createSnapToPower( - Math.exp(Math.log(2) / 8), ol.Projection.EPSG_3857_HALF_SIZE / 128); - var rotationConstraint = ol.control.RotationConstraint.none; - var constraints = new ol.control.Constraints( + var centerConstraint = ol.interaction.CenterConstraint.snapToPixel; + var resolutionConstraint = + ol.interaction.ResolutionConstraint.createSnapToPower( + Math.exp(Math.log(2) / 8), ol.Projection.EPSG_3857_HALF_SIZE / 128); + var rotationConstraint = ol.interaction.RotationConstraint.none; + var constraints = new ol.interaction.Constraints( centerConstraint, resolutionConstraint, rotationConstraint); - if (!goog.object.containsKey(values, ol.MapProperty.CONTROLS)) { - var controls = new ol.Collection(); - controls.push(new ol.control.AltDragRotate(constraints)); - controls.push(new ol.control.DblClickZoom(constraints)); - controls.push(new ol.control.DragPan(constraints)); - controls.push(new ol.control.KeyboardPan(constraints, 16)); - controls.push(new ol.control.KeyboardZoom(constraints)); - controls.push(new ol.control.MouseWheelZoom(constraints)); - controls.push(new ol.control.ShiftDragZoom(constraints)); - values[ol.MapProperty.CONTROLS] = controls; + if (!goog.object.containsKey(values, ol.MapProperty.INTERACTIONS)) { + var interactions = new ol.Collection(); + interactions.push(new ol.interaction.AltDragRotate(constraints)); + interactions.push(new ol.interaction.DblClickZoom(constraints)); + interactions.push(new ol.interaction.DragPan(constraints)); + interactions.push(new ol.interaction.KeyboardPan(constraints, 16)); + interactions.push(new ol.interaction.KeyboardZoom(constraints)); + interactions.push(new ol.interaction.MouseWheelZoom(constraints)); + interactions.push(new ol.interaction.ShiftDragZoom(constraints)); + values[ol.MapProperty.INTERACTIONS] = interactions; } if (!goog.object.containsKey(values, ol.MapProperty.LAYERS)) { diff --git a/src/ol/base/map.js b/src/ol/base/map.js index ad53eb213a..4e7ab7aa0a 100644 --- a/src/ol/base/map.js +++ b/src/ol/base/map.js @@ -30,9 +30,9 @@ goog.require('goog.object'); goog.require('goog.vec.Mat4'); goog.require('ol.Collection'); goog.require('ol.Color'); -goog.require('ol.Control'); goog.require('ol.Coordinate'); goog.require('ol.Extent'); +goog.require('ol.Interaction'); goog.require('ol.LayerRenderer'); goog.require('ol.MapBrowserEvent'); goog.require('ol.Object'); @@ -48,7 +48,7 @@ goog.require('ol.TransformFunction'); ol.MapProperty = { BACKGROUND_COLOR: 'backgroundColor', CENTER: 'center', - CONTROLS: 'controls', + INTERACTIONS: 'interactions', LAYERS: 'layers', PROJECTION: 'projection', RESOLUTION: 'resolution', @@ -349,18 +349,6 @@ goog.exportProperty( ol.Map.prototype.getCenter); -/** - * @return {ol.Collection} Controls. - */ -ol.Map.prototype.getControls = function() { - return /** @type {ol.Collection} */ this.get(ol.MapProperty.CONTROLS); -}; -goog.exportProperty( - ol.Map.prototype, - 'getControls', - ol.Map.prototype.getControls); - - /** * @param {ol.Pixel} pixel Pixel. * @return {ol.Coordinate|undefined} Coordinate. @@ -396,6 +384,18 @@ ol.Map.prototype.getExtent = function() { }; +/** + * @return {ol.Collection} Interactions. + */ +ol.Map.prototype.getInteractions = function() { + return /** @type {ol.Collection} */ this.get(ol.MapProperty.INTERACTIONS); +}; +goog.exportProperty( + ol.Map.prototype, + 'getInteractions', + ol.Map.prototype.getInteractions); + + /** * @param {ol.Layer} layer Layer. * @protected @@ -581,10 +581,11 @@ ol.Map.prototype.handleBackgroundColorChanged = goog.nullFunction; ol.Map.prototype.handleBrowserEvent = function(browserEvent, opt_type) { var type = opt_type || browserEvent.type; var mapBrowserEvent = new ol.MapBrowserEvent(type, this, browserEvent); - var controls = this.getControls(); - var controlsArray = /** @type {Array.} */ controls.getArray(); - goog.array.every(controlsArray, function(control) { - control.handleMapBrowserEvent(mapBrowserEvent); + var interactions = this.getInteractions(); + var interactionsArray = /** @type {Array.} */ + interactions.getArray(); + goog.array.every(interactionsArray, function(interaction) { + interaction.handleMapBrowserEvent(mapBrowserEvent); return !mapBrowserEvent.defaultPrevented; }); }; @@ -813,15 +814,15 @@ goog.exportProperty( /** - * @param {ol.Collection} controls Controls. + * @param {ol.Collection} interactions Interactions. */ -ol.Map.prototype.setControls = function(controls) { - this.set(ol.MapProperty.CONTROLS, controls); +ol.Map.prototype.setInteractions = function(interactions) { + this.set(ol.MapProperty.INTERACTIONS, interactions); }; goog.exportProperty( ol.Map.prototype, - 'setControls', - ol.Map.prototype.setControls); + 'setInteractions', + ol.Map.prototype.setInteractions); /** diff --git a/src/ol/control/constraints.js b/src/ol/control/constraints.js deleted file mode 100644 index b9f0acc99d..0000000000 --- a/src/ol/control/constraints.js +++ /dev/null @@ -1,35 +0,0 @@ -goog.provide('ol.control.Constraints'); - -goog.require('ol.control.CenterConstraintType'); -goog.require('ol.control.ResolutionConstraintType'); -goog.require('ol.control.RotationConstraintType'); - - - -/** - * @constructor - * @param {ol.control.CenterConstraintType} centerConstraint Center constraint. - * @param {ol.control.ResolutionConstraintType} resolutionConstraint - * Resolution constraint. - * @param {ol.control.RotationConstraintType} rotationConstraint - * Rotation constraint. - */ -ol.control.Constraints = - function(centerConstraint, resolutionConstraint, rotationConstraint) { - - /** - * @type {ol.control.CenterConstraintType} - */ - this.center = centerConstraint; - - /** - * @type {ol.control.ResolutionConstraintType} - */ - this.resolution = resolutionConstraint; - - /** - * @type {ol.control.RotationConstraintType} - */ - this.rotation = rotationConstraint; - -}; diff --git a/src/ol/control/altdragrotate.js b/src/ol/interaction/altdragrotate.js similarity index 65% rename from src/ol/control/altdragrotate.js rename to src/ol/interaction/altdragrotate.js index 7121af6b39..03cbbf6d71 100644 --- a/src/ol/control/altdragrotate.js +++ b/src/ol/interaction/altdragrotate.js @@ -1,32 +1,32 @@ -goog.provide('ol.control.AltDragRotate'); +goog.provide('ol.interaction.AltDragRotate'); goog.require('ol.MapBrowserEvent'); -goog.require('ol.control.Drag'); +goog.require('ol.interaction.Drag'); /** * @constructor - * @extends {ol.control.Drag} - * @param {ol.control.Constraints} constraints Constraints. + * @extends {ol.interaction.Drag} + * @param {ol.interaction.Constraints} constraints Constraints. */ -ol.control.AltDragRotate = function(constraints) { +ol.interaction.AltDragRotate = function(constraints) { goog.base(this, constraints); }; -goog.inherits(ol.control.AltDragRotate, ol.control.Drag); +goog.inherits(ol.interaction.AltDragRotate, ol.interaction.Drag); /** * @private * @type {number} */ -ol.control.AltDragRotate.prototype.startRotation_; +ol.interaction.AltDragRotate.prototype.startRotation_; /** * @inheritDoc */ -ol.control.AltDragRotate.prototype.handleDrag = function(mapBrowserEvent) { +ol.interaction.AltDragRotate.prototype.handleDrag = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; var map = mapBrowserEvent.map; var size = map.getSize(); @@ -40,7 +40,7 @@ ol.control.AltDragRotate.prototype.handleDrag = function(mapBrowserEvent) { /** * @inheritDoc */ -ol.control.AltDragRotate.prototype.handleDragStart = +ol.interaction.AltDragRotate.prototype.handleDragStart = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; var map = mapBrowserEvent.map; diff --git a/src/ol/control/centerconstraint.js b/src/ol/interaction/centerconstraint.js similarity index 78% rename from src/ol/control/centerconstraint.js rename to src/ol/interaction/centerconstraint.js index ad85e13e4c..7532427221 100644 --- a/src/ol/control/centerconstraint.js +++ b/src/ol/interaction/centerconstraint.js @@ -1,5 +1,5 @@ -goog.provide('ol.control.CenterConstraint'); -goog.provide('ol.control.CenterConstraintType'); +goog.provide('ol.interaction.CenterConstraint'); +goog.provide('ol.interaction.CenterConstraintType'); goog.require('ol.Coordinate'); @@ -9,7 +9,7 @@ goog.require('ol.Coordinate'); * (number|undefined), * ol.Coordinate): (ol.Coordinate|undefined)} */ -ol.control.CenterConstraintType; +ol.interaction.CenterConstraintType; /** @@ -18,7 +18,7 @@ ol.control.CenterConstraintType; * @param {ol.Coordinate} delta Delta. * @return {ol.Coordinate|undefined} Center. */ -ol.control.CenterConstraint.none = function(center, resolution, delta) { +ol.interaction.CenterConstraint.none = function(center, resolution, delta) { if (goog.isDefAndNotNull(center) && goog.isDef(resolution)) { var x = center.x + delta.x; var y = center.y + delta.y; @@ -35,7 +35,8 @@ ol.control.CenterConstraint.none = function(center, resolution, delta) { * @param {ol.Coordinate} delta Delta. * @return {ol.Coordinate|undefined} Center. */ -ol.control.CenterConstraint.snapToPixel = function(center, resolution, delta) { +ol.interaction.CenterConstraint.snapToPixel = + function(center, resolution, delta) { if (goog.isDefAndNotNull(center) && goog.isDef(resolution)) { var x = Math.floor((center.x + delta.x) / resolution + 0.5) * resolution; var y = Math.floor((center.y + delta.y) / resolution + 0.5) * resolution; diff --git a/src/ol/interaction/constraints.js b/src/ol/interaction/constraints.js new file mode 100644 index 0000000000..4774b7693f --- /dev/null +++ b/src/ol/interaction/constraints.js @@ -0,0 +1,36 @@ +goog.provide('ol.interaction.Constraints'); + +goog.require('ol.interaction.CenterConstraintType'); +goog.require('ol.interaction.ResolutionConstraintType'); +goog.require('ol.interaction.RotationConstraintType'); + + + +/** + * @constructor + * @param {ol.interaction.CenterConstraintType} centerConstraint + * Center constraint. + * @param {ol.interaction.ResolutionConstraintType} resolutionConstraint + * Resolution constraint. + * @param {ol.interaction.RotationConstraintType} rotationConstraint + * Rotation constraint. + */ +ol.interaction.Constraints = + function(centerConstraint, resolutionConstraint, rotationConstraint) { + + /** + * @type {ol.interaction.CenterConstraintType} + */ + this.center = centerConstraint; + + /** + * @type {ol.interaction.ResolutionConstraintType} + */ + this.resolution = resolutionConstraint; + + /** + * @type {ol.interaction.RotationConstraintType} + */ + this.rotation = rotationConstraint; + +}; diff --git a/src/ol/control/dblclickzoom.js b/src/ol/interaction/dblclickzoom.js similarity index 58% rename from src/ol/control/dblclickzoom.js rename to src/ol/interaction/dblclickzoom.js index 0241916588..2a223c81ac 100644 --- a/src/ol/control/dblclickzoom.js +++ b/src/ol/interaction/dblclickzoom.js @@ -1,27 +1,27 @@ -goog.provide('ol.control.DblClickZoom'); +goog.provide('ol.interaction.DblClickZoom'); goog.require('goog.events.EventType'); -goog.require('ol.Control'); +goog.require('ol.Interaction'); goog.require('ol.MapBrowserEvent'); -goog.require('ol.control.Constraints'); +goog.require('ol.interaction.Constraints'); /** * @constructor - * @extends {ol.Control} - * @param {ol.control.Constraints} constraints Constraints. + * @extends {ol.Interaction} + * @param {ol.interaction.Constraints} constraints Constraints. */ -ol.control.DblClickZoom = function(constraints) { +ol.interaction.DblClickZoom = function(constraints) { goog.base(this, constraints); }; -goog.inherits(ol.control.DblClickZoom, ol.Control); +goog.inherits(ol.interaction.DblClickZoom, ol.Interaction); /** * @inheritDoc */ -ol.control.DblClickZoom.prototype.handleMapBrowserEvent = +ol.interaction.DblClickZoom.prototype.handleMapBrowserEvent = function(mapBrowserEvent) { if (mapBrowserEvent.type == goog.events.EventType.DBLCLICK) { var map = mapBrowserEvent.map; diff --git a/src/ol/control/drag.js b/src/ol/interaction/drag.js similarity index 79% rename from src/ol/control/drag.js rename to src/ol/interaction/drag.js index da2f8eb05c..85dc8f3880 100644 --- a/src/ol/control/drag.js +++ b/src/ol/interaction/drag.js @@ -1,22 +1,22 @@ -goog.provide('ol.control.Drag'); +goog.provide('ol.interaction.Drag'); goog.require('goog.asserts'); goog.require('goog.events.EventType'); goog.require('goog.functions'); -goog.require('ol.Control'); goog.require('ol.Coordinate'); +goog.require('ol.Interaction'); goog.require('ol.MapBrowserEvent'); -goog.require('ol.control.Constraints'); +goog.require('ol.interaction.Constraints'); /** * @constructor - * @extends {ol.Control} - * @param {ol.control.Constraints} constraints Constraints. + * @extends {ol.Interaction} + * @param {ol.interaction.Constraints} constraints Constraints. */ -ol.control.Drag = function(constraints) { +ol.interaction.Drag = function(constraints) { goog.base(this, constraints); @@ -57,14 +57,14 @@ ol.control.Drag = function(constraints) { this.startCoordinate = null; }; -goog.inherits(ol.control.Drag, ol.Control); +goog.inherits(ol.interaction.Drag, ol.Interaction); /** * @param {ol.MapBrowserEvent} mapBrowserEvent Event. * @protected */ -ol.control.Drag.prototype.handleDrag = goog.nullFunction; +ol.interaction.Drag.prototype.handleDrag = goog.nullFunction; /** @@ -72,20 +72,21 @@ ol.control.Drag.prototype.handleDrag = goog.nullFunction; * @protected * @return {boolean} Capture dragging. */ -ol.control.Drag.prototype.handleDragStart = goog.functions.FALSE; +ol.interaction.Drag.prototype.handleDragStart = goog.functions.FALSE; /** * @param {ol.MapBrowserEvent} mapBrowserEvent Event. * @protected */ -ol.control.Drag.prototype.handleDragEnd = goog.nullFunction; +ol.interaction.Drag.prototype.handleDragEnd = goog.nullFunction; /** * @inheritDoc */ -ol.control.Drag.prototype.handleMapBrowserEvent = function(mapBrowserEvent) { +ol.interaction.Drag.prototype.handleMapBrowserEvent = + function(mapBrowserEvent) { var map = mapBrowserEvent.map; if (!map.isDef()) { return; diff --git a/src/ol/control/dragpan.js b/src/ol/interaction/dragpan.js similarity index 55% rename from src/ol/control/dragpan.js rename to src/ol/interaction/dragpan.js index e30fb1fba2..9fe4639823 100644 --- a/src/ol/control/dragpan.js +++ b/src/ol/interaction/dragpan.js @@ -1,29 +1,29 @@ // FIXME cope with rotation -goog.provide('ol.control.DragPan'); +goog.provide('ol.interaction.DragPan'); goog.require('ol.Coordinate'); goog.require('ol.MapBrowserEvent'); -goog.require('ol.control.Constraints'); -goog.require('ol.control.Drag'); +goog.require('ol.interaction.Constraints'); +goog.require('ol.interaction.Drag'); /** * @constructor - * @extends {ol.control.Drag} - * @param {ol.control.Constraints} constraints Constraints. + * @extends {ol.interaction.Drag} + * @param {ol.interaction.Constraints} constraints Constraints. */ -ol.control.DragPan = function(constraints) { +ol.interaction.DragPan = function(constraints) { goog.base(this, constraints); }; -goog.inherits(ol.control.DragPan, ol.control.Drag); +goog.inherits(ol.interaction.DragPan, ol.interaction.Drag); /** * @inheritDoc */ -ol.control.DragPan.prototype.handleDrag = function(mapBrowserEvent) { +ol.interaction.DragPan.prototype.handleDrag = function(mapBrowserEvent) { var map = mapBrowserEvent.map; var resolution = map.getResolution(); var delta = @@ -35,7 +35,7 @@ ol.control.DragPan.prototype.handleDrag = function(mapBrowserEvent) { /** * @inheritDoc */ -ol.control.DragPan.prototype.handleDragStart = function(mapBrowserEvent) { +ol.interaction.DragPan.prototype.handleDragStart = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; if (!browserEvent.shiftKey) { browserEvent.preventDefault(); diff --git a/src/ol/control/control.js b/src/ol/interaction/interaction.js similarity index 78% rename from src/ol/control/control.js rename to src/ol/interaction/interaction.js index 20c02f0aa1..30532e870e 100644 --- a/src/ol/control/control.js +++ b/src/ol/interaction/interaction.js @@ -1,21 +1,21 @@ // FIXME factor out key precondition (shift et. al) -goog.provide('ol.Control'); +goog.provide('ol.Interaction'); goog.require('ol.MapBrowserEvent'); -goog.require('ol.control.Constraints'); +goog.require('ol.interaction.Constraints'); /** * @constructor - * @param {ol.control.Constraints} constraints Constraints. + * @param {ol.interaction.Constraints} constraints Constraints. */ -ol.Control = function(constraints) { +ol.Interaction = function(constraints) { /** * @protected - * @type {ol.control.Constraints} + * @type {ol.interaction.Constraints} */ this.constraints = constraints; @@ -25,14 +25,14 @@ ol.Control = function(constraints) { /** * @param {ol.MapBrowserEvent} mapBrowserEvent Map browser event. */ -ol.Control.prototype.handleMapBrowserEvent = goog.abstractMethod; +ol.Interaction.prototype.handleMapBrowserEvent = goog.abstractMethod; /** * @param {ol.Map} map Map. * @param {ol.Extent} extent Extent. */ -ol.Control.prototype.fitExtent = function(map, extent) { +ol.Interaction.prototype.fitExtent = function(map, extent) { var resolution = map.getResolutionForExtent(extent); resolution = this.constraints.resolution(resolution, 0); var center = extent.getCenter(); @@ -49,7 +49,7 @@ ol.Control.prototype.fitExtent = function(map, extent) { * @param {ol.Coordinate} delta Delta. * @param {ol.Coordinate=} opt_anchor Anchor. */ -ol.Control.prototype.pan = function(map, delta, opt_anchor) { +ol.Interaction.prototype.pan = function(map, delta, opt_anchor) { var center = opt_anchor ? opt_anchor : map.getCenter(); var resolution = map.getResolution(); center = this.constraints.center(center, resolution, delta); @@ -63,7 +63,7 @@ ol.Control.prototype.pan = function(map, delta, opt_anchor) { * @param {number} delta Delta. * @param {ol.Coordinate=} opt_anchor Anchor. */ -ol.Control.prototype.rotate = function(map, rotation, delta, opt_anchor) { +ol.Interaction.prototype.rotate = function(map, rotation, delta, opt_anchor) { // FIXME handle rotation about anchor rotation = this.constraints.rotation(rotation, delta); map.setRotation(rotation); @@ -74,7 +74,7 @@ ol.Control.prototype.rotate = function(map, rotation, delta, opt_anchor) { * @param {ol.Map} map Map. * @param {number|undefined} resolution Resolution. */ -ol.Control.prototype.setResolution = function(map, resolution) { +ol.Interaction.prototype.setResolution = function(map, resolution) { resolution = this.constraints.resolution(resolution, 0); map.setResolution(resolution); }; @@ -86,7 +86,7 @@ ol.Control.prototype.setResolution = function(map, resolution) { * @param {number} delta Delta. * @param {ol.Coordinate=} opt_anchor Anchor. */ -ol.Control.prototype.zoom = function(map, resolution, delta, opt_anchor) { +ol.Interaction.prototype.zoom = function(map, resolution, delta, opt_anchor) { if (goog.isDefAndNotNull(opt_anchor)) { var anchor = opt_anchor; var mapCenter = /** @type {!ol.Coordinate} */ map.getCenter(); diff --git a/src/ol/control/keyboard.js b/src/ol/interaction/keyboard.js similarity index 70% rename from src/ol/control/keyboard.js rename to src/ol/interaction/keyboard.js index e72bfaf803..ba21904668 100644 --- a/src/ol/control/keyboard.js +++ b/src/ol/interaction/keyboard.js @@ -1,16 +1,16 @@ // FIXME this class is ugly and should be removed -goog.provide('ol.control.Keyboard'); +goog.provide('ol.interaction.Keyboard'); -goog.require('ol.Control'); +goog.require('ol.Interaction'); /** * @constructor - * @extends {ol.Control} + * @extends {ol.Interaction} */ -ol.control.Keyboard = function() { +ol.interaction.Keyboard = function() { goog.base(this, null); @@ -21,14 +21,14 @@ ol.control.Keyboard = function() { this.charCodeCallbacks_ = {}; }; -goog.inherits(ol.control.Keyboard, ol.Control); +goog.inherits(ol.interaction.Keyboard, ol.Interaction); /** * @param {string} s String. * @param {Function} callback Callback. */ -ol.control.Keyboard.prototype.addCallback = function(s, callback) { +ol.interaction.Keyboard.prototype.addCallback = function(s, callback) { var i; for (i = 0; i < s.length; ++i) { this.charCodeCallbacks_[s.charCodeAt(i)] = callback; @@ -39,7 +39,7 @@ ol.control.Keyboard.prototype.addCallback = function(s, callback) { /** * @inheritDoc */ -ol.control.Keyboard.prototype.handleMapBrowserEvent = +ol.interaction.Keyboard.prototype.handleMapBrowserEvent = function(mapBrowserEvent) { if (mapBrowserEvent.type == goog.events.KeyHandler.EventType.KEY) { var keyEvent = /** @type {goog.events.KeyEvent} */ diff --git a/src/ol/control/keyboardpan.js b/src/ol/interaction/keyboardpan.js similarity index 78% rename from src/ol/control/keyboardpan.js rename to src/ol/interaction/keyboardpan.js index b222519c31..3d9b1efe7a 100644 --- a/src/ol/control/keyboardpan.js +++ b/src/ol/interaction/keyboardpan.js @@ -1,19 +1,19 @@ -goog.provide('ol.control.KeyboardPan'); +goog.provide('ol.interaction.KeyboardPan'); goog.require('goog.events.KeyCodes'); goog.require('goog.events.KeyHandler.EventType'); -goog.require('ol.Control'); -goog.require('ol.control.Constraints'); +goog.require('ol.Interaction'); +goog.require('ol.interaction.Constraints'); /** * @constructor - * @extends {ol.Control} - * @param {ol.control.Constraints} constraints Constraints. + * @extends {ol.Interaction} + * @param {ol.interaction.Constraints} constraints Constraints. * @param {number} pixelDelta Pixel delta. */ -ol.control.KeyboardPan = function(constraints, pixelDelta) { +ol.interaction.KeyboardPan = function(constraints, pixelDelta) { goog.base(this, constraints); @@ -24,13 +24,13 @@ ol.control.KeyboardPan = function(constraints, pixelDelta) { this.pixelDelta_ = pixelDelta; }; -goog.inherits(ol.control.KeyboardPan, ol.Control); +goog.inherits(ol.interaction.KeyboardPan, ol.Interaction); /** * @inheritDoc */ -ol.control.KeyboardPan.prototype.handleMapBrowserEvent = +ol.interaction.KeyboardPan.prototype.handleMapBrowserEvent = function(mapBrowserEvent) { if (mapBrowserEvent.type == goog.events.KeyHandler.EventType.KEY) { var keyEvent = /** @type {goog.events.KeyEvent} */ diff --git a/src/ol/control/keyboardzoom.js b/src/ol/interaction/keyboardzoom.js similarity index 65% rename from src/ol/control/keyboardzoom.js rename to src/ol/interaction/keyboardzoom.js index 97dff8658b..dd88f90729 100644 --- a/src/ol/control/keyboardzoom.js +++ b/src/ol/interaction/keyboardzoom.js @@ -1,27 +1,27 @@ -goog.provide('ol.control.KeyboardZoom'); +goog.provide('ol.interaction.KeyboardZoom'); goog.require('goog.events.KeyCodes'); goog.require('goog.events.KeyHandler.EventType'); -goog.require('ol.Control'); -goog.require('ol.control.ResolutionConstraintType'); +goog.require('ol.Interaction'); +goog.require('ol.interaction.ResolutionConstraintType'); /** * @constructor - * @extends {ol.Control} - * @param {ol.control.Constraints} constraints Constraints. + * @extends {ol.Interaction} + * @param {ol.interaction.Constraints} constraints Constraints. */ -ol.control.KeyboardZoom = function(constraints) { +ol.interaction.KeyboardZoom = function(constraints) { goog.base(this, constraints); }; -goog.inherits(ol.control.KeyboardZoom, ol.Control); +goog.inherits(ol.interaction.KeyboardZoom, ol.Interaction); /** * @inheritDoc */ -ol.control.KeyboardZoom.prototype.handleMapBrowserEvent = +ol.interaction.KeyboardZoom.prototype.handleMapBrowserEvent = function(mapBrowserEvent) { if (mapBrowserEvent.type == goog.events.KeyHandler.EventType.KEY) { var keyEvent = /** @type {goog.events.KeyEvent} */ diff --git a/src/ol/control/mousewheelzoom.js b/src/ol/interaction/mousewheelzoom.js similarity index 71% rename from src/ol/control/mousewheelzoom.js rename to src/ol/interaction/mousewheelzoom.js index 9b55cab962..23a92750d5 100644 --- a/src/ol/control/mousewheelzoom.js +++ b/src/ol/interaction/mousewheelzoom.js @@ -1,27 +1,27 @@ -goog.provide('ol.control.MouseWheelZoom'); +goog.provide('ol.interaction.MouseWheelZoom'); goog.require('goog.events.MouseWheelEvent'); goog.require('goog.events.MouseWheelHandler.EventType'); goog.require('ol.MapBrowserEvent'); -goog.require('ol.control.Constraints'); +goog.require('ol.interaction.Constraints'); /** * @constructor - * @extends {ol.Control} - * @param {ol.control.Constraints} constraints Constraints. + * @extends {ol.Interaction} + * @param {ol.interaction.Constraints} constraints Constraints. */ -ol.control.MouseWheelZoom = function(constraints) { +ol.interaction.MouseWheelZoom = function(constraints) { goog.base(this, constraints); }; -goog.inherits(ol.control.MouseWheelZoom, ol.Control); +goog.inherits(ol.interaction.MouseWheelZoom, ol.Interaction); /** * @inheritDoc */ -ol.control.MouseWheelZoom.prototype.handleMapBrowserEvent = +ol.interaction.MouseWheelZoom.prototype.handleMapBrowserEvent = function(mapBrowserEvent) { if (mapBrowserEvent.type == goog.events.MouseWheelHandler.EventType.MOUSEWHEEL) { diff --git a/src/ol/control/resolutionconstraint.js b/src/ol/interaction/resolutionconstraint.js similarity index 75% rename from src/ol/control/resolutionconstraint.js rename to src/ol/interaction/resolutionconstraint.js index 140abbf544..79eb7b800c 100644 --- a/src/ol/control/resolutionconstraint.js +++ b/src/ol/interaction/resolutionconstraint.js @@ -1,5 +1,5 @@ -goog.provide('ol.control.ResolutionConstraint'); -goog.provide('ol.control.ResolutionConstraintType'); +goog.provide('ol.interaction.ResolutionConstraint'); +goog.provide('ol.interaction.ResolutionConstraintType'); goog.require('goog.math'); goog.require('ol.array'); @@ -8,16 +8,16 @@ goog.require('ol.array'); /** * @typedef {function((number|undefined), number): (number|undefined)} */ -ol.control.ResolutionConstraintType; +ol.interaction.ResolutionConstraintType; /** * @param {number} power Power. * @param {number} maxResolution Maximum resolution. * @param {number=} opt_minResolution Minimum resolution. - * @return {ol.control.ResolutionConstraintType} Zoom function. + * @return {ol.interaction.ResolutionConstraintType} Zoom function. */ -ol.control.ResolutionConstraint.createContinuous = +ol.interaction.ResolutionConstraint.createContinuous = function(power, maxResolution, opt_minResolution) { var minResolution = opt_minResolution || 0; return function(resolution, delta) { @@ -33,9 +33,9 @@ ol.control.ResolutionConstraint.createContinuous = /** * @param {Array.} resolutions Resolutions. - * @return {ol.control.ResolutionConstraintType} Zoom function. + * @return {ol.interaction.ResolutionConstraintType} Zoom function. */ -ol.control.ResolutionConstraint.createSnapToResolutions = +ol.interaction.ResolutionConstraint.createSnapToResolutions = function(resolutions) { return function(resolution, delta) { if (goog.isDef(resolution)) { @@ -53,9 +53,9 @@ ol.control.ResolutionConstraint.createSnapToResolutions = * @param {number} power Power. * @param {number} maxResolution Maximum resolution. * @param {number=} opt_maxLevel Maximum level. - * @return {ol.control.ResolutionConstraintType} Zoom function. + * @return {ol.interaction.ResolutionConstraintType} Zoom function. */ -ol.control.ResolutionConstraint.createSnapToPower = +ol.interaction.ResolutionConstraint.createSnapToPower = function(power, maxResolution, opt_maxLevel) { return function(resolution, delta) { if (goog.isDef(resolution)) { diff --git a/src/ol/control/resolutionconstraint_test.js b/src/ol/interaction/resolutionconstraint_test.js similarity index 88% rename from src/ol/control/resolutionconstraint_test.js rename to src/ol/interaction/resolutionconstraint_test.js index 89c8707ad0..6d61f256f0 100644 --- a/src/ol/control/resolutionconstraint_test.js +++ b/src/ol/interaction/resolutionconstraint_test.js @@ -1,10 +1,10 @@ goog.require('goog.testing.jsunit'); -goog.require('ol.control.ResolutionConstraint'); +goog.require('ol.interaction.ResolutionConstraint'); function testSnapToResolutionsZero() { var resolutionConstraint = - ol.control.ResolutionConstraint.createSnapToResolutions( + ol.interaction.ResolutionConstraint.createSnapToResolutions( [1000, 500, 250, 100]); assertEquals(1000, resolutionConstraint(1000, 0)); assertEquals(500, resolutionConstraint(500, 0)); @@ -15,7 +15,7 @@ function testSnapToResolutionsZero() { function testSnapToResolutionsZoomIn() { var resolutionConstraint = - ol.control.ResolutionConstraint.createSnapToResolutions( + ol.interaction.ResolutionConstraint.createSnapToResolutions( [1000, 500, 250, 100]); assertEquals(500, resolutionConstraint(1000, 1)); assertEquals(250, resolutionConstraint(500, 1)); @@ -26,7 +26,7 @@ function testSnapToResolutionsZoomIn() { function testSnapToResolutionsZoomOut() { var resolutionConstraint = - ol.control.ResolutionConstraint.createSnapToResolutions( + ol.interaction.ResolutionConstraint.createSnapToResolutions( [1000, 500, 250, 100]); assertEquals(1000, resolutionConstraint(1000, -1)); assertEquals(1000, resolutionConstraint(500, -1)); @@ -37,7 +37,7 @@ function testSnapToResolutionsZoomOut() { function testSnapToResolutionsNearestZero() { var resolutionConstraint = - ol.control.ResolutionConstraint.createSnapToResolutions( + ol.interaction.ResolutionConstraint.createSnapToResolutions( [1000, 500, 250, 100]); assertEquals(1000, resolutionConstraint(1050, 0)); assertEquals(1000, resolutionConstraint(950, 0)); @@ -52,7 +52,7 @@ function testSnapToResolutionsNearestZero() { function testSnapToResolutionsNearestZoomIn() { var resolutionConstraint = - ol.control.ResolutionConstraint.createSnapToResolutions( + ol.interaction.ResolutionConstraint.createSnapToResolutions( [1000, 500, 250, 100]); assertEquals(500, resolutionConstraint(1050, 1)); assertEquals(500, resolutionConstraint(950, 1)); @@ -67,7 +67,7 @@ function testSnapToResolutionsNearestZoomIn() { function testSnapToResolutionsNearestZoomOut() { var resolutionConstraint = - ol.control.ResolutionConstraint.createSnapToResolutions( + ol.interaction.ResolutionConstraint.createSnapToResolutions( [1000, 500, 250, 100]); assertEquals(1000, resolutionConstraint(1050, -1)); assertEquals(1000, resolutionConstraint(950, -1)); @@ -82,7 +82,7 @@ function testSnapToResolutionsNearestZoomOut() { function testSnapToPowerZero() { var resolutionConstraint = - ol.control.ResolutionConstraint.createSnapToPower(2, 1024, 10); + ol.interaction.ResolutionConstraint.createSnapToPower(2, 1024, 10); assertEquals(1024, resolutionConstraint(1024, 0)); assertEquals(512, resolutionConstraint(512, 0)); assertEquals(256, resolutionConstraint(256, 0)); @@ -99,7 +99,7 @@ function testSnapToPowerZero() { function testSnapToPowerZoomIn() { var resolutionConstraint = - ol.control.ResolutionConstraint.createSnapToPower(2, 1024, 10); + ol.interaction.ResolutionConstraint.createSnapToPower(2, 1024, 10); assertEquals(512, resolutionConstraint(1024, 1)); assertEquals(256, resolutionConstraint(512, 1)); assertEquals(128, resolutionConstraint(256, 1)); @@ -116,7 +116,7 @@ function testSnapToPowerZoomIn() { function testSnapToPowerZoomOut() { var resolutionConstraint = - ol.control.ResolutionConstraint.createSnapToPower(2, 1024, 10); + ol.interaction.ResolutionConstraint.createSnapToPower(2, 1024, 10); assertEquals(1024, resolutionConstraint(1024, -1)); assertEquals(1024, resolutionConstraint(512, -1)); assertEquals(512, resolutionConstraint(256, -1)); @@ -133,7 +133,7 @@ function testSnapToPowerZoomOut() { function testSnapToPowerNearestZero() { var resolutionConstraint = - ol.control.ResolutionConstraint.createSnapToPower(2, 1024, 10); + ol.interaction.ResolutionConstraint.createSnapToPower(2, 1024, 10); assertEquals(1024, resolutionConstraint(1050, 0)); assertEquals(1024, resolutionConstraint(9050, 0)); assertEquals(512, resolutionConstraint(550, 0)); diff --git a/src/ol/control/rotationconstraint.js b/src/ol/interaction/rotationconstraint.js similarity index 62% rename from src/ol/control/rotationconstraint.js rename to src/ol/interaction/rotationconstraint.js index dde5403272..a978999a2d 100644 --- a/src/ol/control/rotationconstraint.js +++ b/src/ol/interaction/rotationconstraint.js @@ -1,11 +1,11 @@ -goog.provide('ol.control.RotationConstraint'); -goog.provide('ol.control.RotationConstraintType'); +goog.provide('ol.interaction.RotationConstraint'); +goog.provide('ol.interaction.RotationConstraintType'); /** * @typedef {function((number|undefined), number): (number|undefined)} */ -ol.control.RotationConstraintType; +ol.interaction.RotationConstraintType; /** @@ -13,7 +13,7 @@ ol.control.RotationConstraintType; * @param {number} delta Delta. * @return {number|undefined} Rotation. */ -ol.control.RotationConstraint.none = function(rotation, delta) { +ol.interaction.RotationConstraint.none = function(rotation, delta) { if (goog.isDef(rotation)) { return rotation + delta; } else { @@ -24,9 +24,9 @@ ol.control.RotationConstraint.none = function(rotation, delta) { /** * @param {number} n N. - * @return {ol.control.RotationConstraintType} Rotation constraint. + * @return {ol.interaction.RotationConstraintType} Rotation constraint. */ -ol.control.RotationConstraint.createSnapToN = function(n) { +ol.interaction.RotationConstraint.createSnapToN = function(n) { var theta = 2 * Math.PI / n; return function(rotation, delta) { if (goog.isDef(rotation)) { diff --git a/src/ol/control/shiftdragrotateandzoom.js b/src/ol/interaction/shiftdragrotateandzoom.js similarity index 69% rename from src/ol/control/shiftdragrotateandzoom.js rename to src/ol/interaction/shiftdragrotateandzoom.js index 3a1f276c20..748209c412 100644 --- a/src/ol/control/shiftdragrotateandzoom.js +++ b/src/ol/interaction/shiftdragrotateandzoom.js @@ -1,41 +1,41 @@ -goog.provide('ol.control.ShiftDragRotateAndZoom'); +goog.provide('ol.interaction.ShiftDragRotateAndZoom'); goog.require('goog.math.Vec2'); goog.require('ol.MapBrowserEvent'); -goog.require('ol.control.Constraints'); -goog.require('ol.control.Drag'); +goog.require('ol.interaction.Constraints'); +goog.require('ol.interaction.Drag'); /** * @constructor - * @extends {ol.control.Drag} - * @param {ol.control.Constraints} constraints Constraints. + * @extends {ol.interaction.Drag} + * @param {ol.interaction.Constraints} constraints Constraints. */ -ol.control.ShiftDragRotateAndZoom = function(constraints) { +ol.interaction.ShiftDragRotateAndZoom = function(constraints) { goog.base(this, constraints); }; -goog.inherits(ol.control.ShiftDragRotateAndZoom, ol.control.Drag); +goog.inherits(ol.interaction.ShiftDragRotateAndZoom, ol.interaction.Drag); /** * @private * @type {number} */ -ol.control.ShiftDragRotateAndZoom.prototype.startRatio_; +ol.interaction.ShiftDragRotateAndZoom.prototype.startRatio_; /** * @private * @type {number} */ -ol.control.ShiftDragRotateAndZoom.prototype.startRotation_; +ol.interaction.ShiftDragRotateAndZoom.prototype.startRotation_; /** * @inheritDoc */ -ol.control.ShiftDragRotateAndZoom.prototype.handleDrag = +ol.interaction.ShiftDragRotateAndZoom.prototype.handleDrag = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; var map = mapBrowserEvent.map; @@ -54,7 +54,7 @@ ol.control.ShiftDragRotateAndZoom.prototype.handleDrag = /** * @inheritDoc */ -ol.control.ShiftDragRotateAndZoom.prototype.handleDragStart = +ol.interaction.ShiftDragRotateAndZoom.prototype.handleDragStart = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; var map = mapBrowserEvent.map; diff --git a/src/ol/control/shiftdragzoom.js b/src/ol/interaction/shiftdragzoom.js similarity index 63% rename from src/ol/control/shiftdragzoom.js rename to src/ol/interaction/shiftdragzoom.js index 71a04fd680..a10e887d17 100644 --- a/src/ol/control/shiftdragzoom.js +++ b/src/ol/interaction/shiftdragzoom.js @@ -1,11 +1,11 @@ // FIXME draw drag box -goog.provide('ol.control.ShiftDragZoom'); +goog.provide('ol.interaction.ShiftDragZoom'); goog.require('ol.Extent'); goog.require('ol.MapBrowserEvent'); -goog.require('ol.control.Constraints'); -goog.require('ol.control.Drag'); +goog.require('ol.interaction.Constraints'); +goog.require('ol.interaction.Drag'); /** @@ -24,19 +24,20 @@ ol.SHIFT_DRAG_ZOOM_HYSTERESIS_PIXELS_SQUARED = /** * @constructor - * @extends {ol.control.Drag} - * @param {ol.control.Constraints} constraints Constraints. + * @extends {ol.interaction.Drag} + * @param {ol.interaction.Constraints} constraints Constraints. */ -ol.control.ShiftDragZoom = function(constraints) { +ol.interaction.ShiftDragZoom = function(constraints) { goog.base(this, constraints); }; -goog.inherits(ol.control.ShiftDragZoom, ol.control.Drag); +goog.inherits(ol.interaction.ShiftDragZoom, ol.interaction.Drag); /** * @inheritDoc */ -ol.control.ShiftDragZoom.prototype.handleDragEnd = function(mapBrowserEvent) { +ol.interaction.ShiftDragZoom.prototype.handleDragEnd = + function(mapBrowserEvent) { if (this.deltaX * this.deltaX + this.deltaY * this.deltaY >= ol.SHIFT_DRAG_ZOOM_HYSTERESIS_PIXELS_SQUARED) { var map = mapBrowserEvent.map; @@ -51,7 +52,8 @@ ol.control.ShiftDragZoom.prototype.handleDragEnd = function(mapBrowserEvent) { /** * @inheritDoc */ -ol.control.ShiftDragZoom.prototype.handleDragStart = function(mapBrowserEvent) { +ol.interaction.ShiftDragZoom.prototype.handleDragStart = + function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; if (browserEvent.shiftKey) { browserEvent.preventDefault();