lets have clone() just take no arguments and return an exact copy. then we can add modify functions that can be used to set the particular things the user wants changed, and s/he can do it him/herself. also a change here is that layer.options will always be initialized, never null.

git-svn-id: http://svn.openlayers.org/trunk/openlayers@882 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
euzuro
2006-07-04 17:48:50 +00:00
parent 199ad05b5c
commit 63e0b37c67
2 changed files with 50 additions and 21 deletions

View File

@@ -51,10 +51,10 @@ OpenLayers.Layer.prototype = {
if (arguments.length > 0) {
//store a copy of the custom options for later cloning
this.options = options;
this.options = (options == null) ? new Object : options;
//add options to layer
Object.extend(this, options);
Object.extend(this, this.options);
this.name = name;
if (this.div == null) {
@@ -77,30 +77,34 @@ OpenLayers.Layer.prototype = {
},
/**
* @param {String} newName
* @param {Hash} newOptions
*
* @returns A clone of this OpenLayers.Layer
* @returns An exact clone of this OpenLayers.Layer
* @type OpenLayers.Layer
*/
clone: function (newName, newOptions) {
if (newName == null) {
newName = this.name;
}
var mergedOptions = null;
if ( (this.options != null) || (newOptions != null) ) {
// only merge options if there were or will be
mergedOptions = Object.extend( {}, this.options);
Object.extend(mergedOptions, newOptions);
}
var clone = new OpenLayers.Layer(newName, mergedOptions);
clone: function () {
var clone = new OpenLayers.Layer(this.name,
this.options);
return clone;
},
/**
* @param {String} newName
*/
setName: function(newName) {
this.name = newName;
},
/**
* @param {Hash} newOptions
*/
addOptions: function (newOptions) {
if (newOptions != null) {
Object.extend(this.options, newOptions);
}
},
/**
* @params {OpenLayers.Bounds} bound

View File

@@ -5,13 +5,37 @@
var layer;
function test_01_Layer_constructor (t) {
t.plan( 2 );
t.plan( 6 );
var options = { chicken: 151, foo: "bar" };
var layer = new OpenLayers.Layer('Test Layer', options);
t.ok( layer instanceof OpenLayers.Layer, "new OpenLayers.Layer returns object" );
t.eq( layer.name, "Test Layer", "layer.name is correct" );
t.ok( ((layer.options["chicken"] == 151) && (layer.options["foo"] == "bar")), "layer.options correctly set" );
layer = new OpenLayers.Layer('Test Layer');
t.ok( layer instanceof OpenLayers.Layer, "new OpenLayers.Layer returns object" );
t.eq( layer.name, "Test Layer", "layer.name is correct" );
t.ok( layer.options instanceof Object, "layer.options correctly not set to null" );
}
function test_02_Layer_clone (t) {
t.plan( 3 );
var options = { chicken: 151, foo: "bar" };
var layer = new OpenLayers.Layer('Test Layer', options);
var clone = layer.clone();
t.ok( clone instanceof OpenLayers.Layer, "new OpenLayers.Layer returns object" );
t.eq( clone.name, "Test Layer", "default clone.name is correct" );
t.ok( ((clone.options["chicken"] == 151) && (clone.options["foo"] == "bar")), "clone.options correctly set" );
}
/**
*
function test_02_Layer_clone (t) {
t.plan( 7 );
@@ -55,6 +79,7 @@
(clone.options["clear"] == "skies")), "clone.options correctly merged" );
}
*/
function test_99_Layer_destroy (t) {
t.plan( 1 );