forked from openlayers/ol2
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[examples] add an accessible-panel example
- Loading branch information
Showing
2 changed files
with
188 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | ||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> | ||
<meta name="apple-mobile-web-app-capable" content="yes"> | ||
<title>Custom and accessible panel</title> | ||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css"> | ||
<link rel="stylesheet" href="style.css" type="text/css"> | ||
<style type="text/css"> | ||
|
||
.olControlPanel button { | ||
position: relative; | ||
display: block; | ||
margin: 2px; | ||
border: 1px solid; | ||
padding: 0 5px; | ||
border-radius: 4px; | ||
height: 35px; | ||
background-color: white; | ||
float: left; | ||
overflow: visible; /* needed to remove padding from buttons in IE */ | ||
} | ||
.olControlPanel button span { | ||
padding-left: 25px; | ||
} | ||
.olControlPanel button span:first-child { | ||
padding-left: 0; | ||
display: block; | ||
position: absolute; | ||
left: 2px; | ||
} | ||
.olControlPanel .olControlDrawFeatureItemActive span:first-child { | ||
background-image: url("../theme/default/img/draw_line_on.png"); | ||
height: 22px; | ||
width: 24px; | ||
top: 5px; | ||
} | ||
.olControlPanel .olControlDrawFeatureItemInactive span:first-child { | ||
background-image: url("../theme/default/img/draw_line_off.png"); | ||
height: 22px; | ||
width: 24px; | ||
top: 5px; | ||
} | ||
.olControlPanel .olControlZoomBoxItemInactive span:first-child { | ||
background-image: url("../img/drag-rectangle-off.png"); | ||
height: 29px; | ||
width: 29px; | ||
top: 2px; | ||
} | ||
.olControlPanel .olControlZoomBoxItemActive span:first-child { | ||
background-image: url("../img/drag-rectangle-on.png"); | ||
height: 29px; | ||
width: 29px; | ||
top: 2px; | ||
} | ||
.olControlPanel .olControlZoomToMaxExtentItemInactive span:first-child { | ||
background-image: url("../img/zoom-world-mini.png"); | ||
height: 18px; | ||
width: 18px; | ||
top: 8px; | ||
} | ||
.olControlPanel .navHistory span:first-child { | ||
background-image: url("../theme/default/img/navigation_history.png"); | ||
height: 24px; | ||
width: 24px; | ||
top: 4px; | ||
} | ||
.olControlPanel .navHistoryPreviousItemActive span:first-child { | ||
background-position: 0 0; | ||
} | ||
.olControlPanel .navHistoryPreviousItemInactive span:first-child { | ||
background-position: 0 -24px; | ||
} | ||
.olControlPanel .navHistoryNextItemActive span:first-child { | ||
background-position: -24px 0; | ||
} | ||
.olControlPanel .navHistoryNextItemInactive span:first-child { | ||
background-position: -24px -24px; | ||
} | ||
|
||
</style> | ||
<script src="../lib/OpenLayers.js"></script> | ||
<script src="accessible-panel.js"></script> | ||
</head> | ||
<body onload="init()"> | ||
<h1 id="title">Custom and accessible panel</h1> | ||
<div id="tags"> | ||
panels, CSS, style, accessibility, button | ||
</div> | ||
<p id="shortdesc"> | ||
Create a custom and accessible panel, styled entirely with | ||
CSS. | ||
</p> | ||
<div id="panel"></div> | ||
<div id="map" class="smallmap"></div> | ||
|
||
<div id="docs"> | ||
|
||
<p>Accessibility: | ||
|
||
<ul> | ||
<li>The buttons are actual HTML buttons. You can therefore | ||
use the TAB key to give the focus to the panel's buttons, and the "ENTER" | ||
key to activate or trigger the corresponding control.</li> | ||
<li>The buttons include text and titles (displayed when a button | ||
is hovered).</li> | ||
<li>If you remove colors from the page (for example using FireFox's <a | ||
href="https://addons.mozilla.org/en-US/firefox/addon/no-color/">No | ||
Color extension</a>) the buttons are still visible, and | ||
accessible using the keyboard.</li> | ||
</ul> | ||
</p> | ||
|
||
<p>By default a panel creates buttons as divs. In this example the | ||
<code>createControlMarkup</code> panel function is overridden to create | ||
a more accessible markup for the buttons. See the <a | ||
href="accessible-panel.js" target="_blank"> accessible-panel.js | ||
source</a> to see how this is done.</p> | ||
|
||
</div> | ||
|
||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
var lon = 5; | ||
var lat = 40; | ||
var zoom = 5; | ||
var map, layer; | ||
|
||
function init() { | ||
map = new OpenLayers.Map( 'map', { controls: [] } ); | ||
layer = new OpenLayers.Layer.WMS( "OpenLayers WMS", | ||
"http://vmap0.tiles.osgeo.org/wms/vmap0", {layers: 'basic'} ); | ||
map.addLayer(layer); | ||
|
||
vlayer = new OpenLayers.Layer.Vector( "Editable" ); | ||
map.addLayer(vlayer); | ||
|
||
zb = new OpenLayers.Control.ZoomBox({ | ||
title: "Zoom box: zoom clicking and dragging", | ||
text: "Zoom" | ||
}); | ||
|
||
var panel = new OpenLayers.Control.Panel({ | ||
defaultControl: zb, | ||
createControlMarkup: function(control) { | ||
var button = document.createElement('button'), | ||
iconSpan = document.createElement('span'), | ||
textSpan = document.createElement('span'); | ||
iconSpan.innerHTML = ' '; | ||
button.appendChild(iconSpan); | ||
if (control.text) { | ||
textSpan.innerHTML = control.text; | ||
} | ||
button.appendChild(textSpan); | ||
return button; | ||
} | ||
}); | ||
|
||
panel.addControls([ | ||
zb, | ||
new OpenLayers.Control.DrawFeature(vlayer, OpenLayers.Handler.Path, | ||
{title:'Draw a feature', text: 'Draw'}), | ||
new OpenLayers.Control.ZoomToMaxExtent({ | ||
title:"Zoom to the max extent", | ||
text: "World" | ||
}) | ||
]); | ||
|
||
nav = new OpenLayers.Control.NavigationHistory({ | ||
previousOptions: { | ||
title: "Go to previous map position", | ||
text: "Prev" | ||
}, | ||
nextOptions: { | ||
title: "Go to next map position", | ||
text: "Next" | ||
}, | ||
displayClass: "navHistory" | ||
}); | ||
// parent control must be added to the map | ||
map.addControl(nav); | ||
panel.addControls([nav.next, nav.previous]); | ||
|
||
map.addControl(panel); | ||
|
||
map.setCenter(new OpenLayers.LonLat(lon, lat), zoom); | ||
} |