Add support to set the 'title' property of a control such that it will

be displayed when hovering over the control in a control.panel via its 
panel_div. r=me (Closes #822)


git-svn-id: http://svn.openlayers.org/trunk/openlayers@5910 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
crschmidt
2008-01-27 14:44:16 +00:00
parent bd07adbb10
commit ea5e96df85
5 changed files with 39 additions and 6 deletions

View File

@@ -69,13 +69,16 @@
map.addLayer(vlayer); map.addLayer(vlayer);
zb = new OpenLayers.Control.ZoomBox(); zb = new OpenLayers.Control.ZoomBox(
{title:"Zoom box: Selecting it you can zoom on an area by clicking and dragging."});
var panel = new OpenLayers.Control.Panel({defaultControl: zb}); var panel = new OpenLayers.Control.Panel({defaultControl: zb});
panel.addControls([ panel.addControls([
new OpenLayers.Control.MouseDefaults(), new OpenLayers.Control.MouseDefaults(
{title:'You can use the default mouse configuration'}),
zb, zb,
new OpenLayers.Control.DrawFeature(vlayer, OpenLayers.Handler.Path), new OpenLayers.Control.DrawFeature(vlayer, OpenLayers.Handler.Path,
new OpenLayers.Control.ZoomToMaxExtent() {title:'Draw a feature'}),
new OpenLayers.Control.ZoomToMaxExtent({title:"Zoom to the max extent"})
]); ]);
map.addControl(panel); map.addControl(panel);

View File

@@ -84,6 +84,13 @@ OpenLayers.Control = OpenLayers.Class({
* Control. * Control.
*/ */
displayClass: "", displayClass: "",
/**
* Property: title
* {string} This property is used for showing a tooltip over the
* Control.
*/
title: "",
/** /**
* Property: active * Property: active
@@ -172,6 +179,9 @@ OpenLayers.Control = OpenLayers.Class({
if (this.div == null) { if (this.div == null) {
this.div = OpenLayers.Util.createDiv(this.id); this.div = OpenLayers.Util.createDiv(this.id);
this.div.className = this.displayClass; this.div.className = this.displayClass;
if (this.title != "") {
this.div.title = this.title;
}
} }
if (px != null) { if (px != null) {
this.position = px.clone(); this.position = px.clone();

View File

@@ -172,6 +172,9 @@ OpenLayers.Control.Panel = OpenLayers.Class(OpenLayers.Control, {
var element = document.createElement("div"); var element = document.createElement("div");
var textNode = document.createTextNode(" "); var textNode = document.createTextNode(" ");
controls[i].panel_div = element; controls[i].panel_div = element;
if (controls[i].title != "") {
controls[i].panel_div.title = controls[i].title;
}
OpenLayers.Event.observe(controls[i].panel_div, "click", OpenLayers.Event.observe(controls[i].panel_div, "click",
OpenLayers.Function.bind(this.onClick, this, controls[i])); OpenLayers.Function.bind(this.onClick, this, controls[i]));
OpenLayers.Event.observe(controls[i].panel_div, "mousedown", OpenLayers.Event.observe(controls[i].panel_div, "mousedown",

View File

@@ -46,7 +46,17 @@
t.ok(!toolControl.active && anotherToolControl.active && toggleControl.active, t.ok(!toolControl.active && anotherToolControl.active && toggleControl.active,
"activated the other tool control, the first one is inactive and the toggle control still active."); "activated the other tool control, the first one is inactive and the toggle control still active.");
} }
function test_02_Control_Panel_titles (t) {
t.plan(2);
var panel = new OpenLayers.Control.Panel();
var toolControl = new OpenLayers.Control.ZoomBox({
title:"Zoom box: Selecting it you can zoom on an area by clicking and dragging."
});
panel.addControls([toolControl]);
t.eq(panel.controls.length, 1, "added a control to the panel");
t.eq(panel.controls[0].title, toolControl.panel_div.title, "the title is correctly set");
}
function test_Control_Panel_getBy(t) { function test_Control_Panel_getBy(t) {
var panel = { var panel = {

View File

@@ -21,7 +21,14 @@
t.ok(control.map === map, "Control.map is set to the map object" ); t.ok(control.map === map, "Control.map is set to the map object" );
t.ok(map.controls[map.controls.length - 1] === control, "map.controls contains control"); t.ok(map.controls[map.controls.length - 1] === control, "map.controls contains control");
} }
function test_Control_title(t) {
t.plan( 1 );
var titleText = 'Title test';
control = new OpenLayers.Control({title:titleText});
t.eq( control.title, titleText, "control.title set correctly" );
}
function test_Control_destroy(t) { function test_Control_destroy(t) {
t.plan(3); t.plan(3);