From 93041becbe13d770c35259245be7e8a912c4fb86 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Tue, 9 Apr 2013 15:47:33 -0600 Subject: [PATCH] Toggle css class and use css content for anchor --- css/ol.css | 7 +++++++ src/ol/control/fullscreencontrol.js | 19 ++++++++++++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/css/ol.css b/css/ol.css index f239b22d94..9f7f54350c 100644 --- a/css/ol.css +++ b/css/ol.css @@ -52,6 +52,13 @@ text-decoration: none; width: 22px; } +a.ol-full-screen-false:after { + content: "\2194"; +} +a.ol-full-screen-true:after { + content: "\00d7"; +} + .ol-full-screen div { border-radius: 2px; } diff --git a/src/ol/control/fullscreencontrol.js b/src/ol/control/fullscreencontrol.js index f1c1cf82b9..42106a1904 100644 --- a/src/ol/control/fullscreencontrol.js +++ b/src/ol/control/fullscreencontrol.js @@ -3,6 +3,7 @@ goog.provide('ol.control.FullScreen'); goog.require('goog.asserts'); goog.require('goog.dom'); goog.require('goog.dom.TagName'); +goog.require('goog.dom.classes'); goog.require('goog.dom.fullscreen'); goog.require('goog.events'); goog.require('goog.events.EventType'); @@ -20,16 +21,23 @@ ol.control.FullScreen = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; + /** + * @private + * @type {string} + */ + this.cssClassName_ = 'ol-full-screen'; + var aElement = goog.dom.createDom(goog.dom.TagName.A, { - 'href': '#fullScreen' - }, '\u00d7'); + 'href': '#fullScreen', + 'class': this.cssClassName_ + '-' + goog.dom.fullscreen.isFullScreen() + }); goog.events.listen(aElement, [ goog.events.EventType.CLICK, goog.events.EventType.TOUCHEND ], this.handleClick_, false, this); var element = goog.dom.createDom(goog.dom.TagName.DIV, { - 'class': 'ol-full-screen ' + ol.css.CLASS_UNSELECTABLE + 'class': this.cssClassName_ + ' ' + ol.css.CLASS_UNSELECTABLE }, aElement); goog.base(this, { @@ -61,11 +69,16 @@ ol.control.FullScreen.prototype.handleClick_ = function(browserEvent) { if (!goog.dom.fullscreen.isSupported()) { return; } + var opened = this.cssClassName_ + '-true'; + var closed = this.cssClassName_ + '-false'; + var anchor = goog.dom.getFirstElementChild(this.element); if (goog.dom.fullscreen.isFullScreen()) { + goog.dom.classes.swap(anchor, opened, closed); goog.dom.fullscreen.exitFullScreen(); } else { var element = map.getTarget(); goog.asserts.assert(!goog.isNull(element)); + goog.dom.classes.swap(anchor, closed, opened); if (this.keys_) { goog.dom.fullscreen.requestFullScreenWithKeys(element); } else {