[OpenLayers-Trac] [OpenLayers] #1005: allow customization of the tools that appear in the editing toolbar

OpenLayers trac at openlayers.org
Wed Sep 19 14:56:09 EDT 2007


#1005: allow customization of the tools that appear in the editing toolbar
------------------------------+---------------------------------------------
 Reporter:  brentp            |       Owner:         
     Type:  feature           |      Status:  new    
 Priority:  minor             |   Milestone:         
Component:  Control           |     Version:  2.5 RC1
 Keywords:  Editing, Toolbar  |  
------------------------------+---------------------------------------------
 in trunk, all tools (Polygon, Point, Path) appear in the toolbar by
 defautl, this patch allows specification of which controls are to appear
 in teh options of the constructor:
 {{{
 var editbar = new
 OpenLayers.Control.EditingToolbar(vlayer,{'tools':['Point','Polygon']})
 }}}
 will only show the Point and Polygon tools.
 {{{
 $ svn diff lib/OpenLayers/Control/EditingToolbar.js
 Index: lib/OpenLayers/Control/EditingToolbar.js
 ===================================================================
 --- lib/OpenLayers/Control/EditingToolbar.js    (revision 4394)
 +++ lib/OpenLayers/Control/EditingToolbar.js    (working copy)
 @@ -24,19 +24,26 @@
       * layer - {<OpenLayers.Layer.Vector>}
       * options - {Object}
       */
 +    DEFAULT_TOOLS : ['Point', 'Path', 'Polygon'],
 +
      initialize: function(layer, options) {
          OpenLayers.Control.Panel.prototype.initialize.apply(this,
 [options]);

          this.addControls(
            [ new OpenLayers.Control.Navigation() ]
          );
 -        var controls = [
 -          new OpenLayers.Control.DrawFeature(layer,
 OpenLayers.Handler.Point, {'displayClass': 'olControlDrawFeaturePoint'}),
 -          new OpenLayers.Control.DrawFeature(layer,
 OpenLayers.Handler.Path, {'displayClass': 'olControlDrawFeaturePath'}),
 -          new OpenLayers.Control.DrawFeature(layer,
 OpenLayers.Handler.Polygon, {'displayClass':
 'olControlDrawFeaturePolygon'})
 -        ];
 -        for (var i = 0; i < controls.length; i++) {
 -            controls[i].featureAdded = function(feature) { feature.state
 = OpenLayers.State.INSERT; }
 +        var tools = options && options.tools
 +                  ||
 OpenLayers.Control.EditingToolbar.prototype.DEFAULT_TOOLS
 +        controls = [];
 +        var ctl;
 +        for(var i=0;ctl=tools[i];++i){
 +           var drawfeat = new OpenLayers.Control.DrawFeature(layer,
 +                    OpenLayers.Handler[ctl],
 +                    {'displayClass': 'olControlDrawFeature' + ctl });
 +           drawfeat.featureAdded = function(feature){
 +                    feature.state = OpenLayers.State.INSERT;
 +           };
 +           controls.push(drawfeat);
          }
          this.addControls(controls);
      },

 }}}

-- 
Ticket URL: <http://trac.openlayers.org/ticket/1005>
OpenLayers <http://openlayers.org/>
A free AJAX map viewer


More information about the Trac mailing list