Multiple level inheritance using google closure

Multiple level inheritance using google closure, with OpenLayers 3 in my own SDK.

by João Rodrigues

HTML

<!DOCTYPE html>
<html>
    <head>
        <title>TODO supply a title</title>
        
        <link rel="stylesheet" href="http://ol3js.org/en/master/css/ol.css" type="text/css">
        <script src="http://ol3js.org/en/master/build/ol.js" type="text/javascript"></script>
        <script>
            window.onload = function() {
                
                <!--
                    I want to be able to instantiate the ol.Map
                    using my defined class myMap
                -->
                new myMap({
                    layers: [
                        new ol.layer.Tile({
                            source: new ol.source.OSM()
                        })
                    ],
                    renderer: 'canvas',
                    target: 'map',
                    view: new ol.View2D({
                        center: [0, 0],
                        zoom: 2
                    })
                });
            };
        </script>
    </head>
    <body>
        <div id="map"></div>
    </body>
</html>

CSS

.map {
    height:400px;
    width:200px;
}

JavaScript

// external file sdk.js

xgis = {};


// xgis.map
xgis.map = function(options) {
    // map definitions ...
};
// Inherits from ol.Map
goog.inherits(xgis.map, ol.Map);


// xgis.layer
xgis.layer = function(options) {
    // base layer definitions
};


// xgis.layer.osm
xgis.layer.osm = function(options) {
    goog.base(this, {
        source: new ol.source.OSM()
    });
    sigga.layer.call(this, options);
};
// Inherits from ol.layer.Tile
goog.inherits(xgis.layer.osm, ol.layer.Tile);
/**
 * Copies all the members of a source object to a target object.
 * i.e, inherits ALSO from xgis.layer (the base layer class)
 */
goog.mixin(xgis.layer.osm.prototype, xgis.layer.prototype);



// My method
xgis.layer.prototype.getvisible = function() {
    // Used the method of the parent class from ol3
    return this.superClass_.getVisible();
};