Improved regex, added tests

This commit is contained in:
ejn
2012-03-05 12:14:56 +01:00
parent 5674d440c8
commit fbc3b5475d
2 changed files with 41 additions and 6 deletions

View File

@@ -330,9 +330,8 @@ OpenLayers.Control.Panel = OpenLayers.Class(OpenLayers.Control, {
*/
iconOn: function() {
var d = this.panel_div; // "this" refers to a control on panel!
var re = new RegExp(this.displayClass + 'ItemInactive');
d.className = d.className.replace(re,
this.displayClass + "ItemActive");
var re = new RegExp("\\b(" + this.displayClass + "Item)Inactive\\b");
d.className = d.className.replace(re, "$1Active");
},
/**
@@ -341,9 +340,8 @@ OpenLayers.Control.Panel = OpenLayers.Class(OpenLayers.Control, {
*/
iconOff: function() {
var d = this.panel_div; // "this" refers to a control on panel!
var re = new RegExp(this.displayClass + 'ItemActive');
d.className = d.className.replace(re,
this.displayClass + "ItemInactive");
var re = new RegExp("\\b(" + this.displayClass + "Item)Active\\b");
d.className = d.className.replace(re, "$1Inactive");
},
/**

View File

@@ -337,6 +337,43 @@
t.ok(panel2.events.element === div, "Panel outside map has the panel's div as element on its Events instance");
}
function test_iconOniconOff (t) {
t.plan(6);
var map = new OpenLayers.Map("map"),
navControl = new OpenLayers.Control.Navigation({autoActivate: true}),
zbControl = new OpenLayers.Control.ZoomBox(),
panel = new OpenLayers.Control.Panel({defaultControl: navControl}),
navActiveClass, navInactiveClass, zbActiveClass, zbInactiveClass;
panel.addControls([navControl, zbControl]);
map.addControl(panel);
navControl.panel_div.className += " foo";
zbControl.panel_div.className = "bar " + zbControl.panel_div.className;
t.eq(navControl.panel_div.className, "olControlNavigationItemActive olButton foo",
"defaultControl className is set to [displayClass]Active on panel instantiation");
t.eq(zbControl.panel_div.className, "bar olControlZoomBoxItemInactive olButton",
"non-defaultControl className is set to [displayClass]Inactive on panel instantiation");
panel.activateControl(zbControl);
t.eq(zbControl.panel_div.className, "bar olControlZoomBoxItemActive olButton",
"active control class name with preceding secondary class name is set to [displayClass]Active");
t.eq(navControl.panel_div.className, "olControlNavigationItemInactive olButton foo",
"inactive control class name with trailing secondary class name is set to [displayClass]Inactive");
panel.activateControl(navControl);
t.eq(navControl.panel_div.className, "olControlNavigationItemActive olButton foo",
"active control class name with trailing secondary class name is set to [displayClass]Active");
t.eq(zbControl.panel_div.className, "bar olControlZoomBoxItemInactive olButton",
"inactive control class name with preceding secondary class name is set to [displayClass]Inactive");
map.destroy();
}
</script>
</head>
<body>