Merge pull request #108 from elemoine/panel

Fix panel iconOn and iconOff behavior
This commit is contained in:
Éric Lemoine
2011-12-14 07:09:40 -08:00
2 changed files with 40 additions and 2 deletions

View File

@@ -295,7 +295,9 @@ OpenLayers.Control.Panel = OpenLayers.Class(OpenLayers.Control, {
*/
iconOn: function() {
var d = this.panel_div; // "this" refers to a control on panel!
d.className = d.className.replace(/ItemInactive$/, "ItemActive");
var re = new RegExp(this.displayClass + 'ItemInactive');
d.className = d.className.replace(re,
this.displayClass + "ItemActive");
},
/**
@@ -304,7 +306,9 @@ OpenLayers.Control.Panel = OpenLayers.Class(OpenLayers.Control, {
*/
iconOff: function() {
var d = this.panel_div; // "this" refers to a control on panel!
d.className = d.className.replace(/ItemActive$/, "ItemInactive");
var re = new RegExp(this.displayClass + 'ItemActive');
d.className = d.className.replace(re,
this.displayClass + "ItemInactive");
},
/**

View File

@@ -288,6 +288,40 @@
// panel.deactivate();
map.destroy();
}
function test_iconOn_iconOff(t) {
t.plan(2);
var map = new OpenLayers.Map('map');
var panel = new OpenLayers.Control.Panel();
var ctrl = new OpenLayers.Control({displayClass: 'ctrl'});
panel.addControls([ctrl]);
map.addControl(panel);
// add arbitrary classes to the panel div - we want to test
// than iconOn and iconOff do their jobs even when the panel
// div has application-specific classes.
ctrl.panel_div.className =
'ctrlItemInactive fooItemActive fooItemInactive';
panel.iconOn.call(ctrl);
t.eq(ctrl.panel_div.className,
'ctrlItemActive fooItemActive fooItemInactive',
'iconOn behaves as expected');
ctrl.panel_div.className =
'ctrlItemActive fooItemActive fooItemInactive';
panel.iconOff.call(ctrl);
t.eq(ctrl.panel_div.className,
'ctrlItemInactive fooItemActive fooItemInactive',
'iconOff behaves as expected');
map.destroy();
}
</script>
</head>
<body>