Changeset 5974 for cowsclient


Ignore:
Timestamp:
06/11/09 14:05:31 (10 years ago)
Author:
pnorton
Message:

Added the option to keep the outline layer on top of the other layers.

Location:
cowsclient/trunk/cowsclient
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • cowsclient/trunk/cowsclient/public/js/layerList.js

    r5776 r5974  
    4343     * @param dragListId - ID of the ul that is being used for the drag list 
    4444     */ 
    45     initialize: function (dragListId, eventsManager) { 
     45    initialize: function (dragListId, outlineOnTopCheckboxId, eventsManager) { 
     46     
    4647                this._dragList = document.getElementById(dragListId); 
     48                this._outlineOnTopChk = document.getElementById(outlineOnTopCheckboxId); 
    4749                this.eventsManager = eventsManager; 
    4850                 
     
    5759            this.removeLayerBtn = document.getElementById('btn_remove_selected_layer'); 
    5860            Utils.addHTMLEventListener(this.removeLayerBtn, 'click', this._onRemoveClick, this); 
     61            Utils.addHTMLEventListener(this._outlineOnTopChk, 'click', this._onOutlineOnTopClick, this); 
    5962             
    6063            this.eventsManager.register("NEW_OUTLINE", this, this.onNewLayer); 
     
    8891        _onDragEnd: function (item) { 
    8992                this._selectItem(item); 
     93                 
     94                if (this._outlineOnTopChk.checked && this._isOutlineInList()) { 
     95                    if (! this._isOutlineOnTop()) { 
     96                        this._moveOutlineToTop(); 
     97                    } 
     98                } 
     99                 
    90100                this._triggerLayerOrderChange(); 
    91101        }, 
     
    103113                         
    104114                        var items = this._getCurrentListItems();  
    105                         if (items.length > 0) { 
    106                                 this._selectItem(items[0]); 
     115                        if (items.length > 1) { 
     116                             
     117                            if (items[0].id === 'outline_layer') { 
     118                                this._selectItem(items[1]); 
     119                            } 
     120                            else { 
     121                                this._selectItem(items[0]); 
     122                            } 
     123                                 
     124                        } 
     125                        else if (items.length === 1) { 
     126                            this._selectItem(items[0]); 
    107127                        } 
    108128                         
     
    111131                        this._triggerSelectedLayerChange();     //selected layer should now be null 
    112132                } 
     133        }, 
     134         
     135        _onOutlineOnTopClick: function(event) { 
     136            if (this._outlineOnTopChk.checked && this._isOutlineInList()) { 
     137                if (! this._isOutlineOnTop() ) { 
     138                    this._moveOutlineToTop(); 
     139                    this._triggerLayerOrderChange(); 
     140                } 
     141            } 
    113142        }, 
    114143         
     
    233262                var li = document.createElement('li'); 
    234263                 
     264                // if this is the first layer or an outline layer add it to the top 
     265                // of the list. 
     266                 
    235267                var firstItem = this._dragList.firstChild; 
    236                 this._dragList.insertBefore(li, firstItem); 
    237                  
     268                if (firstItem === null) { 
     269                    this._dragList.appendChild(li) 
     270                } 
     271                else if (layer.id === 'outline_layer') { 
     272                    // the outline is always added to the top of the list 
     273                    this._dragList.insertBefore(li, firstItem); 
     274                } 
     275                else if (this._outlineOnTopChk.checked && this._isOutlineInList() ) { 
     276                     
     277                    // make sure the outline is at the top 
     278                    if (firstItem.id !== 'outline_layer') { 
     279                        this._moveOutlineToTop(); 
     280                    } 
     281                     
     282                    this._dragList.insertBefore(li, firstItem.nextSibling); 
     283                     
     284                } 
     285                else { 
     286                    // add to top of list 
     287                    this._dragList.insertBefore(li, firstItem); 
     288                } 
     289                 
     290                 
     291                         
    238292                li.className = "list"; 
    239293                li.id = layer.id; 
     
    375429        this._removeAllItems(); 
    376430        }, 
    377  
     431         
     432        _isOutlineInList: function() { 
     433            return this._getLayerById('outline_layer') !== null; 
     434        }, 
     435         
     436        _isOutlineOnTop: function() { 
     437        return this._dragList.firstChild.id === 'outline_layer'; 
     438        }, 
     439         
     440        _moveOutlineToTop: function() { 
     441            var firstItem = this._dragList.firstChild; 
     442             
     443        if (firstItem.id === 'outline_layer') { 
     444            return; // don't need to move it 
     445        } 
     446         
     447        var outlineItem = null; 
     448         
     449        for (i = 1; i < this._dragList.childNodes.length; i++) { 
     450            child = this._dragList.childNodes[i]; 
     451            if (child.id === 'outline_layer') { 
     452                outlineItem = child; 
     453                break; 
     454            } 
     455        } 
     456         
     457        if (outlineItem !== null) { 
     458            this._dragList.insertBefore(outlineItem, firstItem); 
     459        } 
     460         
     461        }, 
     462         
    378463        /** 
    379464         * Removes all the items from the drag list. 
  • cowsclient/trunk/cowsclient/templates/wmsviz.html

    r5851 r5974  
    179179    WMSC.log(allEvents); 
    180180              
    181         layerList = new LayerList('layer_list', eventsManager);  
     181        layerList = new LayerList('layer_list', 'chk_outline_on_top', eventsManager);    
    182182    layerParameters = new LayerParameters('layer_properties', 'selection_form', wmcRetriever, initialStatus.HiddenDisplayOptions, eventsManager); 
    183183     
     
    367367 
    368368                                <div class="workarea"> 
     369                        <div> 
     370                            <label for="chk_outline_on_top">Outline Always On Top</label> 
     371                            <input type="checkbox" id="chk_outline_on_top" checked="yes"/> 
     372                        </div> 
    369373                                    <ul class="draglist" id="layer_list"> 
    370374                            <li>list empty</li> 
Note: See TracChangeset for help on using the changeset viewer.