/*
* Copyright (c) 2013 Bundesamt für Kartographie und Geodäsie.
* See license.txt in the BKG WebMap distribution or repository for the
* full text of the license.
*
* Author: Dirk Thalheim
*/
/**
* @requires OpenLayers/BaseTypes/Class.js
* @requires OpenLayers/Control/Panel.js
* @requires OpenLayers/Control/NavigationHistory.js
* @requires BKGWebMap/Control.js
* @requires BKGWebMap/Util.js
*/
/**
* @classdesc Erweiterte Toolbar zur Anzeige der Navigation, Zoombox und Navigation-History Steuerelemente.
*
* @constructor BKGWebMap.Control.NavToolbar
* @param {object} options - Optionen für das Controlelement
*/
BKGWebMap.Control.NavToolbar = OpenLayers.Class(OpenLayers.Control.Panel, {
/**
* Optionen für die Navigation
* @memberOf BKGWebMap.Control.NavToolbar
*/
navigationOptions: {title: 'Karte verschieben'},
/**
* Optionen für die Zoombox
* @memberOf BKGWebMap.Control.NavToolbar
*/
zoomBoxOptions: {title: 'Karte vergrößern'},
/**
* Optionen für die Navigationshistorie
* @memberOf BKGWebMap.Control.NavToolbar
*/
historyOptions: {
previousOptions: { title: 'Letzte Ansicht' },
nextOptions: { title: 'Letzte Ansicht' }
},
/**
* Optionen für Kartenextendzoom
* @memberOf BKGWebMap.Control.NavToolbar
*/
zoomToExtendOptions: { title: 'Auf Kartenausdehnung zoomen' },
initialize:function(options) {
OpenLayers.Control.Panel.prototype.initialize.apply(this, [options]);
this.history = new OpenLayers.Control.NavigationHistory(this.historyOptions);
var navigation = new OpenLayers.Control.Navigation(this.navigationOptions);
this.defaultControl = (this.defaultControl) ? this.defaultControl : navigation;
var controls = [
new OpenLayers.Control.ZoomToMaxExtent(this.zoomToExtendOptions),
navigation,
new OpenLayers.Control.ZoomBox(this.zoomBoxOptions),
this.history.previous,
this.history.next
];
if(options && options.otherControls) {
controls = controls.concat(options.otherControls);
}
this.addControls(controls);
},
setMap: function(map) {
// Falls schon ein Navigation-Control vorhanden ist, muss dies entfernt werden,
// sonst kommt es zum Überspringen von Zoomlevels!
var navControls = map.getControlsByClass("OpenLayers.Control.Navigation");
BKGWebMap.Util.each( navControls, function(index, control) {
map.removeControl(control);
control.destroy();
});
// Die Historie muss der Map hinzugefügt werden:
map.addControl(this.history);
OpenLayers.Control.NavToolbar.prototype.setMap.apply(this, arguments);
},
/**
* Method: draw
* calls the default draw, and then activates mouse defaults.
* @memberOf BKGWebMap.Control.NavToolbar
*/
draw: function() {
var div = OpenLayers.Control.Panel.prototype.draw.apply(this, arguments);
if (this.defaultControl === null) {
this.defaultControl = this.navigation;
}
return div;
},
CLASS_NAME: "BKGWebMap.Control.NavToolbar"
});
/**
* Fügt die StandardToolbar zum Navigieren als Steuerelement der Liste hinzu.
* @param {Array<OpenLayers.Control>} controls - Liste der Steuerelemente, in die die neue erzeugten Steuerelemente
* eingefügt werden sollen.
* @param {object} config - Konfiguration für Toolbar (s. Konstruktor OpenLayers.Control.NavToolbar).
* @param {object} config.otherControls - Konfiguration für weitere Steuerelemente für die Toolbar.
*/
BKGWebMap.Control.FACTORIES['defaultToolPanel'] = function(controls, config) {
if (!config) return;
config = (typeof config === 'boolean') ? {} : config;
if (config.controls) {
config.otherControls = BKGWebMap.Control.create(config.controls);
delete config.controls;
}
controls.push(new BKGWebMap.Control.NavToolbar(config));
};