Rename ol.MVCObject to ol.Object

This commit is contained in:
Tom Payne
2012-07-06 20:25:37 +02:00
committed by Tom Payne
parent 4bdaf293b0
commit 438d5f2484
7 changed files with 129 additions and 131 deletions

View File

@@ -6,7 +6,7 @@ goog.require('ol.Extent');
goog.require('ol.Layer');
goog.require('ol.LayerView');
goog.require('ol.MVCArray');
goog.require('ol.MVCObject');
goog.require('ol.Object');
goog.require('ol.Projection');
goog.require('ol.TileBounds');
goog.require('ol.TileCoord');

View File

@@ -1,7 +1,7 @@
goog.provide('ol.Camera');
goog.require('goog.math.Coordinate');
goog.require('ol.MVCObject');
goog.require('ol.Object');
/**
@@ -18,14 +18,14 @@ ol.CameraProperty_ = {
/**
* @constructor
* @extends {ol.MVCObject}
* @extends {ol.Object}
*/
ol.Camera = function() {
goog.base(this);
};
goog.inherits(ol.Camera, ol.MVCObject);
goog.inherits(ol.Camera, ol.Object);
/**

View File

@@ -1,7 +1,7 @@
goog.provide('ol.Layer');
goog.require('ol.Extent');
goog.require('ol.MVCObject');
goog.require('ol.Object');
goog.require('ol.Projection');
@@ -19,14 +19,14 @@ ol.LayerProperty_ = {
/**
* @constructor
* @extends {ol.MVCObject}
* @extends {ol.Object}
*/
ol.Layer = function() {
goog.base(this);
};
goog.inherits(ol.Layer, ol.MVCObject);
goog.inherits(ol.Layer, ol.Object);
/**

View File

@@ -1,6 +1,6 @@
goog.provide('ol.LayerView');
goog.require('ol.MVCObject');
goog.require('ol.Object');
/**
@@ -16,7 +16,7 @@ ol.LayerViewProperty_ = {
/**
* @constructor
* @extends {ol.MVCObject}
* @extends {ol.Object}
*/
ol.LayerView = function() {
@@ -26,7 +26,7 @@ ol.LayerView = function() {
this.setOpacity(1);
};
goog.inherits(ol.LayerView, ol.MVCObject);
goog.inherits(ol.LayerView, ol.Object);
/**

View File

@@ -11,7 +11,7 @@ goog.provide('ol.MVCArrayEventType');
goog.require('goog.array');
goog.require('goog.asserts');
goog.require('goog.events.Event');
goog.require('ol.MVCObject');
goog.require('ol.Object');
/**
@@ -54,7 +54,7 @@ goog.inherits(ol.MVCArrayEvent, goog.events.Event);
/**
* @constructor
* @extends {ol.MVCObject}
* @extends {ol.Object}
* @param {Array=} opt_array Array.
*/
ol.MVCArray = function(opt_array) {
@@ -70,7 +70,7 @@ ol.MVCArray = function(opt_array) {
this.updateLength_();
};
goog.inherits(ol.MVCArray, ol.MVCObject);
goog.inherits(ol.MVCArray, ol.Object);
/**

View File

@@ -5,7 +5,7 @@
* @see https://developers.google.com/maps/documentation/javascript/reference
*/
goog.provide('ol.MVCObject');
goog.provide('ol.Object');
goog.require('goog.array');
goog.require('goog.events');
@@ -14,9 +14,9 @@ goog.require('goog.object');
/**
* @typedef {{target: ol.MVCObject, key: string}}
* @typedef {{target: ol.Object, key: string}}
*/
ol.MVCObjectAccessor;
ol.ObjectAccessor;
@@ -24,32 +24,32 @@ ol.MVCObjectAccessor;
* @constructor
* @extends {goog.events.EventTarget}
*/
ol.MVCObject = function() {
ol.Object = function() {
goog.base(this);
};
goog.inherits(ol.MVCObject, goog.events.EventTarget);
goog.inherits(ol.Object, goog.events.EventTarget);
/**
* @param {string} str String.
* @return {string} Capitalized string.
*/
ol.MVCObject.capitalize = function(str) {
ol.Object.capitalize = function(str) {
return str.substr(0, 1).toUpperCase() + str.substr(1);
};
/**
* @param {ol.MVCObject|Object} arg Argument.
* @return {ol.MVCObject} MVCObject.
* @param {ol.Object|Object} arg Argument.
* @return {ol.Object} Object.
*/
ol.MVCObject.create = function(arg) {
if (arg instanceof ol.MVCObject) {
ol.Object.create = function(arg) {
if (arg instanceof ol.Object) {
return arg;
} else {
var mvcObject = new ol.MVCObject();
mvcObject.setOptions(arg);
return mvcObject;
var object = new ol.Object();
object.setOptions(arg);
return object;
}
};
@@ -58,7 +58,7 @@ ol.MVCObject.create = function(arg) {
* @private
* @type {Object.<string, string>}
*/
ol.MVCObject.getterNameCache_ = {};
ol.Object.getterNameCache_ = {};
/**
@@ -66,10 +66,9 @@ ol.MVCObject.getterNameCache_ = {};
* @private
* @return {string} Capitalized string.
*/
ol.MVCObject.getGetterName_ = function(str) {
return ol.MVCObject.getterNameCache_[str] ||
(ol.MVCObject.getterNameCache_[str] =
'get' + ol.MVCObject.capitalize(str));
ol.Object.getGetterName_ = function(str) {
return ol.Object.getterNameCache_[str] ||
(ol.Object.getterNameCache_[str] = 'get' + ol.Object.capitalize(str));
};
@@ -77,7 +76,7 @@ ol.MVCObject.getGetterName_ = function(str) {
* @private
* @type {Object.<string, string>}
*/
ol.MVCObject.setterNameCache_ = {};
ol.Object.setterNameCache_ = {};
/**
@@ -85,47 +84,46 @@ ol.MVCObject.setterNameCache_ = {};
* @private
* @return {string} Capitalized string.
*/
ol.MVCObject.getSetterName_ = function(str) {
return ol.MVCObject.setterNameCache_[str] ||
(ol.MVCObject.setterNameCache_[str] =
'set' + ol.MVCObject.capitalize(str));
ol.Object.getSetterName_ = function(str) {
return ol.Object.setterNameCache_[str] ||
(ol.Object.setterNameCache_[str] = 'set' + ol.Object.capitalize(str));
};
/**
* @param {ol.MVCObject} obj Object.
* @return {Object.<string, ol.MVCObjectAccessor>} Accessors.
* @param {ol.Object} obj Object.
* @return {Object.<string, ol.ObjectAccessor>} Accessors.
*/
ol.MVCObject.getAccessors = function(obj) {
return obj['gm_accessors_'] || (obj['gm_accessors_'] = {});
ol.Object.getAccessors = function(obj) {
return obj['ol_accessors_'] || (obj['ol_accessors_'] = {});
};
/**
* @param {ol.MVCObject} obj Object.
* @param {ol.Object} obj Object.
* @return {Object.<string, ?number>} Listeners.
*/
ol.MVCObject.getListeners = function(obj) {
return obj['gm_bindings_'] || (obj['gm_bindings_'] = {});
ol.Object.getListeners = function(obj) {
return obj['ol_bindings_'] || (obj['ol_bindings_'] = {});
};
/**
* @param {string} key Key.
* @param {ol.MVCObject} target Target.
* @param {ol.Object} target Target.
* @param {string=} opt_targetKey Target key.
* @param {boolean=} opt_noNotify No notify.
*/
ol.MVCObject.prototype.bindTo =
ol.Object.prototype.bindTo =
function(key, target, opt_targetKey, opt_noNotify) {
var targetKey = goog.isDef(opt_targetKey) ? opt_targetKey : key;
this.unbind(key);
var eventType = targetKey.toLowerCase() + '_changed';
var listeners = ol.MVCObject.getListeners(this);
var listeners = ol.Object.getListeners(this);
listeners[key] = goog.events.listen(target, eventType, function() {
this.notifyInternal_(key);
}, undefined, this);
var accessors = ol.MVCObject.getAccessors(this);
var accessors = ol.Object.getAccessors(this);
accessors[key] = {target: target, key: targetKey};
var noNotify = goog.isDef(opt_noNotify) ? opt_noNotify : false;
if (!noNotify) {
@@ -137,7 +135,7 @@ ol.MVCObject.prototype.bindTo =
/**
* @param {string} key Key.
*/
ol.MVCObject.prototype.changed = function(key) {
ol.Object.prototype.changed = function(key) {
};
@@ -145,13 +143,13 @@ ol.MVCObject.prototype.changed = function(key) {
* @param {string} key Key.
* @return {*} Value.
*/
ol.MVCObject.prototype.get = function(key) {
var accessors = ol.MVCObject.getAccessors(this);
ol.Object.prototype.get = function(key) {
var accessors = ol.Object.getAccessors(this);
if (goog.object.containsKey(accessors, key)) {
var accessor = accessors[key];
var target = accessor.target;
var targetKey = accessor.key;
var getterName = ol.MVCObject.getGetterName_(targetKey);
var getterName = ol.Object.getGetterName_(targetKey);
if (target[getterName]) {
return target[getterName]();
} else {
@@ -166,8 +164,8 @@ ol.MVCObject.prototype.get = function(key) {
/**
* @param {string} key Key.
*/
ol.MVCObject.prototype.notify = function(key) {
var accessors = ol.MVCObject.getAccessors(this);
ol.Object.prototype.notify = function(key) {
var accessors = ol.Object.getAccessors(this);
if (goog.object.containsKey(accessors, key)) {
var accessor = accessors[key];
var target = accessor.target;
@@ -183,7 +181,7 @@ ol.MVCObject.prototype.notify = function(key) {
* @param {string} key Key.
* @private
*/
ol.MVCObject.prototype.notifyInternal_ = function(key) {
ol.Object.prototype.notifyInternal_ = function(key) {
var changedMethodName = key + '_changed';
if (this[changedMethodName]) {
this[changedMethodName]();
@@ -199,13 +197,13 @@ ol.MVCObject.prototype.notifyInternal_ = function(key) {
* @param {string} key Key.
* @param {*} value Value.
*/
ol.MVCObject.prototype.set = function(key, value) {
var accessors = ol.MVCObject.getAccessors(this);
ol.Object.prototype.set = function(key, value) {
var accessors = ol.Object.getAccessors(this);
if (goog.object.containsKey(accessors, key)) {
var accessor = accessors[key];
var target = accessor.target;
var targetKey = accessor.key;
var setterName = ol.MVCObject.getSetterName_(targetKey);
var setterName = ol.Object.getSetterName_(targetKey);
if (target[setterName]) {
target[setterName](value);
} else {
@@ -221,9 +219,9 @@ ol.MVCObject.prototype.set = function(key, value) {
/**
* @param {Object.<string, *>} options Options.
*/
ol.MVCObject.prototype.setOptions = function(options) {
ol.Object.prototype.setOptions = function(options) {
goog.object.forEach(options, function(value, key) {
var setterName = ol.MVCObject.getSetterName_(key);
var setterName = ol.Object.getSetterName_(key);
if (this[setterName]) {
this[setterName](value);
} else {
@@ -236,20 +234,20 @@ ol.MVCObject.prototype.setOptions = function(options) {
/**
* @param {Object.<string, *>} values Values.
*/
ol.MVCObject.prototype.setValues = ol.MVCObject.prototype.setOptions;
ol.Object.prototype.setValues = ol.Object.prototype.setOptions;
/**
* @param {string} key Key.
*/
ol.MVCObject.prototype.unbind = function(key) {
var listeners = ol.MVCObject.getListeners(this);
ol.Object.prototype.unbind = function(key) {
var listeners = ol.Object.getListeners(this);
var listener = listeners[key];
if (listener) {
delete listeners[key];
goog.events.unlistenByKey(listener);
var value = this.get(key);
var accessors = ol.MVCObject.getAccessors(this);
var accessors = ol.Object.getAccessors(this);
delete accessors[key];
this[key] = value;
}
@@ -258,8 +256,8 @@ ol.MVCObject.prototype.unbind = function(key) {
/**
*/
ol.MVCObject.prototype.unbindAll = function() {
var listeners = ol.MVCObject.getListeners(this);
ol.Object.prototype.unbindAll = function() {
var listeners = ol.Object.getListeners(this);
var keys = goog.object.getKeys(listeners);
goog.array.forEach(keys, function(key) {
this.unbind(key);

View File

@@ -1,21 +1,21 @@
goog.require('goog.testing.jsunit');
goog.require('ol.MVCObject');
goog.require('ol.Object');
function testModel() {
var m = new ol.MVCObject();
var m = new ol.Object();
assertNotNullNorUndefined(m);
}
function testGetUndefined() {
var m = new ol.MVCObject();
var m = new ol.Object();
assertUndefined(m.get('k'));
}
function testGetSetGet() {
var m = new ol.MVCObject();
var m = new ol.Object();
assertUndefined(m.get('k'));
m.set('k', 1);
assertEquals(1, m.get('k'));
@@ -23,7 +23,7 @@ function testGetSetGet() {
function testSetValues() {
var m = new ol.MVCObject();
var m = new ol.Object();
m.setValues({
k1: 1,
k2: 2
@@ -33,7 +33,7 @@ function testSetValues() {
}
function testNotifyCallback() {
var m = new ol.MVCObject();
var m = new ol.Object();
var callbackCalled;
m.changed = function() {
callbackCalled = true;
@@ -44,7 +44,7 @@ function testNotifyCallback() {
function testNotifyKeyCallback() {
var m = new ol.MVCObject();
var m = new ol.Object();
var callbackCalled = false;
m.k_changed = function() {
callbackCalled = true;
@@ -55,7 +55,7 @@ function testNotifyKeyCallback() {
function testNotifyKeyEvent() {
var m = new ol.MVCObject();
var m = new ol.Object();
var eventDispatched = false;
goog.events.listen(m, 'k_changed', function() {
eventDispatched = true;
@@ -66,7 +66,7 @@ function testNotifyKeyEvent() {
function testSetNotifyCallback() {
var m = new ol.MVCObject();
var m = new ol.Object();
var callbackCalled;
m.changed = function() {
callbackCalled = true;
@@ -77,7 +77,7 @@ function testSetNotifyCallback() {
function testSetNotifyKeyCallback() {
var m = new ol.MVCObject();
var m = new ol.Object();
var callbackCalled = false;
m.k_changed = function(v) {
callbackCalled = true;
@@ -88,8 +88,8 @@ function testSetNotifyKeyCallback() {
function testBindSetNotifyKeyCallback() {
var m = new ol.MVCObject();
var n = new ol.MVCObject();
var m = new ol.Object();
var n = new ol.Object();
var callbackCalled = false;
n.k_changed = function(v) {
callbackCalled = true;
@@ -101,7 +101,7 @@ function testBindSetNotifyKeyCallback() {
function testSetNotifyKeyEvent() {
var m = new ol.MVCObject();
var m = new ol.Object();
var eventDispatched = false;
goog.events.listen(m, 'k_changed', function() {
eventDispatched = true;
@@ -112,8 +112,8 @@ function testSetNotifyKeyEvent() {
function testSetBind() {
var m = new ol.MVCObject();
var n = new ol.MVCObject();
var m = new ol.Object();
var n = new ol.Object();
m.set('k', 1);
assertEquals(1, m.get('k'));
assertUndefined(n.get('k'));
@@ -124,8 +124,8 @@ function testSetBind() {
function testBindSet() {
var m = new ol.MVCObject();
var n = new ol.MVCObject();
var m = new ol.Object();
var n = new ol.Object();
n.bindTo('k', m);
m.set('k', 1);
assertEquals(1, m.get('k'));
@@ -134,8 +134,8 @@ function testBindSet() {
function testBindSetBackwards() {
var m = new ol.MVCObject();
var n = new ol.MVCObject();
var m = new ol.Object();
var n = new ol.Object();
n.bindTo('k', m);
n.set('k', 1);
assertEquals(1, m.get('k'));
@@ -144,8 +144,8 @@ function testBindSetBackwards() {
function testSetBindBackwards() {
var m = new ol.MVCObject();
var n = new ol.MVCObject();
var m = new ol.Object();
var n = new ol.Object();
n.set('k', 1);
n.bindTo('k', m);
assertUndefined(m.get('k'));
@@ -154,8 +154,8 @@ function testSetBindBackwards() {
function testBindSetUnbind() {
var m = new ol.MVCObject();
var n = new ol.MVCObject();
var m = new ol.Object();
var n = new ol.Object();
n.bindTo('k', m);
n.set('k', 1);
assertEquals(1, m.get('k'));
@@ -170,8 +170,8 @@ function testBindSetUnbind() {
function testUnbindAll() {
var m = new ol.MVCObject();
var n = new ol.MVCObject();
var m = new ol.Object();
var n = new ol.Object();
n.bindTo('k', m);
n.set('k', 1);
assertEquals(m.get('k'), 1);
@@ -186,8 +186,8 @@ function testUnbindAll() {
function testBindNotify() {
var m = new ol.MVCObject();
var n = new ol.MVCObject();
var m = new ol.Object();
var n = new ol.Object();
m.bindTo('k', n);
mCallbackCalled = false;
m.k_changed = function() {
@@ -204,8 +204,8 @@ function testBindNotify() {
function testBindBackwardsNotify() {
var m = new ol.MVCObject();
var n = new ol.MVCObject();
var m = new ol.Object();
var n = new ol.Object();
n.bindTo('k', m);
mCallbackCalled = false;
m.k_changed = function() {
@@ -222,8 +222,8 @@ function testBindBackwardsNotify() {
function testBindRename() {
var m = new ol.MVCObject();
var n = new ol.MVCObject();
var m = new ol.Object();
var n = new ol.Object();
n.bindTo('kn', m, 'km');
m.set('km', 1);
assertEquals(m.get('km'), 1);
@@ -232,8 +232,8 @@ function testBindRename() {
function testBindRenameCallbacks() {
var m = new ol.MVCObject();
var n = new ol.MVCObject();
var m = new ol.Object();
var n = new ol.Object();
var kmCallbackCalled = false;
m.km_changed = function() {
kmCallbackCalled = true;
@@ -252,9 +252,9 @@ function testBindRenameCallbacks() {
function testTransitiveBindForwards() {
var m = new ol.MVCObject();
var n = new ol.MVCObject();
var o = new ol.MVCObject();
var m = new ol.Object();
var n = new ol.Object();
var o = new ol.Object();
n.bindTo('kn', m, 'km');
o.bindTo('ko', n, 'kn');
m.set('km', 1);
@@ -265,9 +265,9 @@ function testTransitiveBindForwards() {
function testTransitiveBindBackwards() {
var m = new ol.MVCObject();
var n = new ol.MVCObject();
var o = new ol.MVCObject();
var m = new ol.Object();
var n = new ol.Object();
var o = new ol.Object();
n.bindTo('kn', m, 'km');
o.bindTo('ko', n, 'kn');
o.set('ko', 1);
@@ -279,7 +279,7 @@ function testTransitiveBindBackwards() {
function testInheritance() {
var C = function() {};
C.prototype = new ol.MVCObject();
C.prototype = new ol.Object();
var callbackCalled;
C.prototype.k_changed = function() {
callbackCalled = true;
@@ -293,10 +293,10 @@ function testInheritance() {
function testMrideyAccessors() {
// http://blog.mridey.com/2010/03/maps-javascript-api-v3-more-about.html
var a = new ol.MVCObject();
var a = new ol.Object();
a.set('level', 2);
assertEquals(2, a.get('level'));
var b = new ol.MVCObject();
var b = new ol.Object();
b.setValues({
level: 2,
index: 3,
@@ -308,16 +308,16 @@ function testMrideyAccessors() {
function testMrideyBinding() {
// http://blog.mridey.com/2010/03/maps-javascript-api-v3-more-about.html
var a = new ol.MVCObject();
var a = new ol.Object();
a.set('level', 2);
var b = new ol.MVCObject();
var b = new ol.Object();
b.bindTo('index', a, 'level');
assertEquals(2, b.get('index'));
a.set('level', 3);
assertEquals(3, b.get('index'));
b.set('index', 4);
assertEquals(4, a.get('level'));
var c = new ol.MVCObject();
var c = new ol.Object();
c.bindTo('zoom', a, 'level');
assertEquals(4, c.get('zoom'));
b.unbind('index');
@@ -329,8 +329,8 @@ function testMrideyBinding() {
function testCircularBind() {
var a = new ol.MVCObject();
var b = new ol.MVCObject();
var a = new ol.Object();
var b = new ol.Object();
a.bindTo('k', b);
assertThrows(function() {
b.bindTo('k', a);
@@ -339,8 +339,8 @@ function testCircularBind() {
function testPriority() {
var a = new ol.MVCObject();
var b = new ol.MVCObject();
var a = new ol.Object();
var b = new ol.Object();
a.set('k', 1);
b.set('k', 2);
a.bindTo('k', b);
@@ -350,8 +350,8 @@ function testPriority() {
function testPriorityUndefined() {
var a = new ol.MVCObject();
var b = new ol.MVCObject();
var a = new ol.Object();
var b = new ol.Object();
a.set('k', 1);
a.bindTo('k', b);
assertUndefined(a.get('k'));
@@ -360,7 +360,7 @@ function testPriorityUndefined() {
function testSetter() {
var a = new ol.MVCObject();
var a = new ol.Object();
var x;
var setterCalled;
a.setX = function(value) {
@@ -374,14 +374,14 @@ function testSetter() {
function testSetterBind() {
var a = new ol.MVCObject();
var a = new ol.Object();
var x;
var setterCalled;
a.setX = function(value) {
this.x = value;
setterCalled = true;
};
var b = new ol.MVCObject();
var b = new ol.Object();
b.bindTo('x', a);
b.set('x', 1);
assertEquals(1, a.get('x'));
@@ -391,7 +391,7 @@ function testSetterBind() {
function testGetter() {
var a = new ol.MVCObject();
var a = new ol.Object();
var getterCalled;
a.getX = function() {
getterCalled = true;
@@ -403,13 +403,13 @@ function testGetter() {
function testGetterBind() {
var a = new ol.MVCObject();
var a = new ol.Object();
var getterCalled;
a.getX = function() {
getterCalled = true;
return 1;
};
var b = new ol.MVCObject();
var b = new ol.Object();
b.bindTo('x', a);
assertEquals(1, b.get('x'));
assertTrue(getterCalled);
@@ -417,7 +417,7 @@ function testGetterBind() {
function testBindSelf() {
var a = new ol.MVCObject();
var a = new ol.Object();
assertThrows(function() {
a.bindTo('k', a);
});
@@ -425,7 +425,7 @@ function testBindSelf() {
function testChangedKey() {
var a = new ol.MVCObject();
var a = new ol.Object();
var changedKey;
a.changed = function(key) {
changedKey = key;
@@ -437,14 +437,14 @@ function testChangedKey() {
function testCreateFromObject() {
var obj = {k: 1};
var mvcObject = ol.MVCObject.create(obj);
assertTrue(mvcObject instanceof ol.MVCObject);
assertEquals(1, mvcObject.get('k'));
var obj = ol.Object.create(obj);
assertTrue(obj instanceof ol.Object);
assertEquals(1, obj.get('k'));
}
function testCreateFromMVCObject() {
var mvcObject1 = new ol.MVCObject();
var mvcObject2 = ol.MVCObject.create(mvcObject1);
assertTrue(mvcObject2 === mvcObject1);
function testCreateFromObject() {
var obj1 = new ol.Object();
var obj2 = ol.Object.create(obj1);
assertTrue(obj2 === obj1);
}