Changeset 253


Ignore:
Timestamp:
03/23/09 22:35:14 (9 years ago)
Author:
tschaub
Message:

pulling out application configuration

Location:
apps/opengeo/geoexplorer/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • apps/opengeo/geoexplorer/trunk/debug.html

    r251 r253  
    2020        <script type="text/javascript" src="lib/GeoExplorer/dispatch.js"></script>
    2121
    22         <script>var app = new GeoExplorer;</script>
     22        <script>
     23            var app = new GeoExplorer({
     24                ows: "http://sigma.openplans.org/geoserver/ows",
     25                map: {
     26                    layers: [{
     27                        name: "bluemarble",
     28                        title: "Global Imagery"
     29                    }],
     30                    center: [0, 0],
     31                    zoom: 2
     32                }
     33            });
     34        </script>
    2335
    2436    </head>
  • apps/opengeo/geoexplorer/trunk/lib/GeoExplorer.js

    r251 r253  
    77 * Create a new GeoExplorer application.
    88 *
     9 * Parameters:
     10 * config - {Object} Optional application configuration properties.
     11 *
     12 * Valid config properties:
     13 * map - {Object} Map configuration object.
     14 * ows - {String} OWS URL
     15 *
     16 * Valid map config properties:
     17 * layers - {Array} A list of layer configuration objects.
     18 * center - {Array} A two item array with center coordinates.
     19 * zoom - {Number} An initial zoom level.
     20 *
     21 * Valid layer config properties:
     22 * name - {String} Required WMS layer name.
     23 * title - {String} Optional title to display for layer.
     24 *
    925 * Extends:
    1026 *  - Ext.util.Observable
    1127 */
    12 var GeoExplorer = function() {
     28var GeoExplorer = function(config) {
     29   
     30    this.initialConfig = Ext.apply({}, config);
    1331   
    1432    // add any custom application events
     
    2139    );
    2240   
    23     // load the app
    24     GeoExplorer.dispatch(
    25         [
    26             function(done) {
    27                 Ext.onReady(function() {
    28                     this.initLayout();
    29                     done();
    30                 }, this);
    31             }
    32             // other functions to be executed in parallel can go here
    33         ], function() {
    34             // executed when all of the above are done
    35             this.fireEvent("ready");
    36         },
    37         this // scope for all above functions
    38     );
     41    this.load();
    3942   
    4043};
     
    4346   
    4447    /**
    45      * Method: initLayout
     48     * Property: map
     49     * {OpenLayers.Map} The application's map.
    4650     */
    47     initLayout: function() {
     51    map: null,
     52   
     53    /**
     54     * Property: load
     55     * Called at the end of construction.  This initiates the sequence that
     56     *     prepares the application for use.
     57     */
     58    load: function() {
     59        GeoExplorer.dispatch(
     60            [
     61                function(done) {
     62                    Ext.onReady(function() {
     63                        this.createLayout();
     64                        done();
     65                    }, this);
     66                }
     67                // other functions to be executed in parallel can go here
     68            ], function() {
     69                // executed when all of the above are done
     70                this.fireEvent("ready");
     71            },
     72            this // scope for all above functions
     73        );
     74    },
     75   
     76    /**
     77     * Method: createLayout
     78     * Create the various parts that compose the layout.
     79     */
     80    createLayout: function() {
    4881       
    49         // keep reference to map handy
    50         this.map = new OpenLayers.Map();
     82        // create the map
     83        this.initMap();
    5184       
     85        // place map in panel
     86        var mapConfig = this.initialConfig.map || {};
    5287        var mapPanel = new GeoExt.MapPanel({
    5388            border: true,
    5489            region: "center",
    5590            map: this.map,
    56             layers: [new OpenLayers.Layer.WMS(
    57                 "bluemarble",
    58                 "http://sigma.openplans.org/geoserver/wms?",
    59                 {layers: 'bluemarble'}
    60             )],
    61             center: new OpenLayers.LonLat(0, 0),
    62             zoom: 2
     91            center: mapConfig.center && new OpenLayers.LonLat(mapConfig.center[0], mapConfig.center[1]),
     92            zoom: mapConfig.zoom
    6393        });
    6494
    65         this.layersContainer = new Ext.Panel({
     95        var layersContainer = new Ext.Panel({
    6696            autoScroll: true,
    6797            title: "Layers",
     
    78108        });
    79109
    80         this.legendContainer = new Ext.Panel({
     110        var legendContainer = new Ext.Panel({
    81111            title: "Legend",
    82112            height: 200,
     
    93123            collapseMode: "mini",
    94124            items: [
    95                 this.layersContainer, this.legendContainer
     125                layersContainer, legendContainer
    96126            ]
    97127        });
     
    107137        });
    108138
     139    },
     140   
     141    /**
     142     * Method: initMap
     143     * Construct the map and reference it on the applicaiton as <map>.
     144     */
     145    initMap: function() {
     146        var mapConfig = this.initialConfig.map;
     147        var ows = this.initialConfig.ows;
     148
     149        var map = new OpenLayers.Map();
     150        // create a dummy layer that acts as the single "base" layer
     151        map.addLayer(
     152            new OpenLayers.Layer(null, {
     153                isBaseLayer: true,
     154                displayInLayerSwitcher: false
     155            })
     156        );
     157
     158        if(mapConfig) {
     159            if(mapConfig.layers) {
     160                var layer, layers = [];
     161                for(var i=0, len=mapConfig.layers.length; i<len; ++i) {
     162                    layer = mapConfig.layers[i];
     163                    layers.push(
     164                        new OpenLayers.Layer.WMS(
     165                            layer.title || layer.name,
     166                            ows,
     167                            {layers: layer.name},
     168                            {isBaseLayer: false}
     169                        )
     170                    );
     171                }
     172            }
     173            map.addLayers(layers);
     174        }
     175       
     176        this.map = map;
    109177    }
    110178   
Note: See TracChangeset for help on using the changeset viewer.