﻿/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is VisKort.
*
* The Initial Developer of the Original Code is
* IT- og Telestyrelsen / Danish National IT and Telecom Agency.
* Portions created by the Initial Developer are Copyright (C) 2010
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):

* Lars Klindt Mogensen
* Morten Bødtkjer
* Niels Kinnerup
* Thomas Bergstedt
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */

/**
* @requires OpenLayers/Handler/Path.js
*/

/**
* Class: OpenLayers.Handler.DigitizePath
* Extends Path handler.
*
* Inherits from:
*  - <OpenLayers.Handler.Path>
*/
OpenLayers.Handler.DigitizePath = OpenLayers.Class(OpenLayers.Handler.Path, {

    /** 
    * Property: clickCount  
    * Counts clicks
    */
    clickCount: 0,

    /**
    * Constructor: OpenLayers.Handler.DigitizePath
    * Create a new path hander
    */
    initialize: function(control, callbacks, options) {
        OpenLayers.Handler.Path.prototype.initialize.apply(this, arguments);
    },

    /**
    * Method: mouseup
    * Handle mouse up.  Send the latest point in the geometry to
    * the control. Return determines whether to propagate the event on the map.
    * 
    * Parameters:
    * evt - {Event} The browser event
    *
    * Returns: 
    * {Boolean} Allow event propagation
    */
    mouseup: function(evt) {
        this.clickCount++;
        this.mouseDown = false;
        if (this.drawing) {
            if (this.freehandMode(evt)) {
                this.removePoint();
                this.finalize();
            } else {
                if (this.lastUp == null) {
                    this.addPoint(evt.xy);
                }
                this.lastUp = evt.xy;
            }
            if (this.clickCount == 2) {
                this.dblclick(evt);
                this.clickCount = 0;
            }
            return false;
        }
        return true;
    },

    CLASS_NAME: "OpenLayers.Handler.DigitizePath"
});

