[mapguide-commits] r7113 - trunk/MgDev/Web/src/viewerfiles

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Mon Oct 15 23:02:00 PDT 2012


Author: jng
Date: 2012-10-15 23:02:00 -0700 (Mon, 15 Oct 2012)
New Revision: 7113

Modified:
   trunk/MgDev/Web/src/viewerfiles/ajaxmappane.templ
   trunk/MgDev/Web/src/viewerfiles/mainframe.templ
   trunk/MgDev/Web/src/viewerfiles/statusbar.templ
Log:
#2149: Convert scale part of status bar of the AJAX viewer into a select combo list when viewing a map with tiled layers. Patch by Bruno Scott.

Modified: trunk/MgDev/Web/src/viewerfiles/ajaxmappane.templ
===================================================================
--- trunk/MgDev/Web/src/viewerfiles/ajaxmappane.templ	2012-10-12 13:09:54 UTC (rev 7112)
+++ trunk/MgDev/Web/src/viewerfiles/ajaxmappane.templ	2012-10-16 06:02:00 UTC (rev 7113)
@@ -1831,7 +1831,7 @@
     //If a new scale was requested in the status bar for a tiled map, the closest
     //finite scale may not change, but we need to send a scale update anyway so that
     //the status bar shows the scale that we snapped to.
-    parent.OnScaleChanged(scale);
+    parent.OnScaleChanged(hasTiles, scale, scales);
     if(scaleChanged = (curScale != scale))
     {
         curScale = scale;
@@ -4044,7 +4044,7 @@
     }
 
     //Update scale displayed in status bar
-    parent.OnScaleChanged(newScale);
+    parent.OnScaleChanged(hasTiles, newScale, scales);
 
     //Reload the map at the new scale. 500ms delay to allow for more
     //mouse wheel events.

Modified: trunk/MgDev/Web/src/viewerfiles/mainframe.templ
===================================================================
--- trunk/MgDev/Web/src/viewerfiles/mainframe.templ	2012-10-12 13:09:54 UTC (rev 7112)
+++ trunk/MgDev/Web/src/viewerfiles/mainframe.templ	2012-10-16 06:02:00 UTC (rev 7113)
@@ -408,12 +408,17 @@
     menuOpen = shown;
 }
 
-function OnScaleChanged(scale)
+function OnScaleChanged(hasTiles, scale, scalesList)
 {
     curScale = scale;
     DisplayMapSize();
     if(hasStatusbar == 1 && sbFrame.SetMapScaleMsg != null)
-        sbFrame.SetMapScaleMsg("1: " + FormatScale(scale));
+    {
+        if(hasTiles)
+            sbFrame.SetMapScalesList(parseInt(scale), scalesList); 
+        else
+            sbFrame.SetMapScaleMsg("1: " + FormatScale(scale));
+    }
 }
 
 function FormatScale(scale)

Modified: trunk/MgDev/Web/src/viewerfiles/statusbar.templ
===================================================================
--- trunk/MgDev/Web/src/viewerfiles/statusbar.templ	2012-10-12 13:09:54 UTC (rev 7112)
+++ trunk/MgDev/Web/src/viewerfiles/statusbar.templ	2012-10-16 06:02:00 UTC (rev 7113)
@@ -35,6 +35,24 @@
         position: absolute;
         top: 3px;
     }
+    select.StatusSelect
+    {
+        height: 20px;
+        border-left: 1px solid #c0c0c0;
+        border-top: 1px solid #c0c0c0;
+        border-bottom: 1px solid white;
+        border-right: 1px solid white;
+        position: absolute;
+        top: 3px;
+        font-family: __#@font#__;
+        font-size: __#@fontsize#__;
+        background-color: #EEEEEE;
+    }
+    #ScaleElement
+    {
+      position: absolute;
+      top: 0px;
+    }
 </style>
 
 <script language="javascript" src="../viewerfiles/browserdetect.js"></script>
@@ -63,6 +81,41 @@
     SetFieldText(msg, 3);
 }
 
+function SetMapScalesList(scale, scales)
+{
+    // remove the input field
+    var scaleDiv = document.getElementById("ScaleElement");
+    var scaleInput = GetScaleField();
+    scaleDiv.removeChild(scaleInput);
+    
+    // add the select element
+    var select = document.createElement("select");
+    select.id = "3";
+    select.name = "3";
+    select.className = "StatusSelect";
+    select.onchange = OnChangeScaleSelect;
+    
+    for(var i=0; i<scales.length; i++)
+    {
+      var option = document.createElement("option");
+      option.text = "1: " + scales[i];
+      option.value = scales[i];
+      if(Math.floor(scale) == Math.floor(scales[i]))
+          option.selected=true;
+          
+      try
+      {
+        // for IE earlier than version 8
+        select.add(option,select.options[null]);
+      }
+      catch (e)
+      {
+        select.add(option,null);
+      }
+    }
+    scaleDiv.appendChild(select);
+}
+
 function SetMapSizeMsg(msg)
 {
     SetFieldText(msg, 4);
@@ -72,16 +125,9 @@
 //
 function InitDocument()
 {
-    document.onmousedown = OnMouseDown;
     OnStatusResized();
 }
 
-function OnMouseDown(e)
-{
-    parent.ForwardMouseDown(document, e);
-    return false;
-}
-
 function OnStatusResized()
 {
     var width = msie? document.body.clientWidth - 3: window.innerWidth - 4;
@@ -96,6 +142,10 @@
     for(var i=1; i < 5; i++)
     {
         elt = document.getElementById(i);
+        
+        if(i == 3)
+            elt = document.getElementById("ScaleElement");
+        
         elt.style.left = posX + "px";
         if(i == 1)
         {
@@ -184,6 +234,12 @@
     SetZoomToScale(scaleField);
 }
 
+function OnChangeScaleSelect()
+{
+    var scaleField = GetScaleField();
+    SetZoomToScale(scaleField);
+}
+
 function GetScaleField()
 {
     return document.getElementById("3");
@@ -197,7 +253,9 @@
       <tr><td valign=center>
         <input class="StatusField" id="1" type="text" title="" readonly >
         <input class="StatusField" id="2" type="text" title="" readonly >
+        <div id="ScaleElement">
         <input class="StatusField" id="3" name="3" type="text" onKeyUp="KeyboardController(this)" onKeyDown="OnScaleFieldKeyDown(event)" onfocus="OnScaleFieldFocus()" onblur="OnBlurScaleField()" onclick="this.focus()">
+        </div>
         <input class="StatusField" id="4" type="text" readonly >
         <img src="../localized/__#POWEREDBYICON#__" width="137" height="18" class="StatusLogo" id="5">
       </td></tr>



More information about the mapguide-commits mailing list