// Name: AjaxControlToolkit.DragPanel.FloatingBehavior.debug.js // Assembly: AjaxControlToolkit // Version: 3.0.30512.21441 // FileVersion: 3.0.30512.1 // (c) Copyright Microsoft Corporation. // This source is subject to the Microsoft Public License. // See http://www.microsoft.com/opensource/licenses.mspx#Ms-PL. // All other rights reserved. /// /// /// /// /// /// /// AjaxControlToolkit.FloatingBehavior = function(element) { AjaxControlToolkit.FloatingBehavior.initializeBase(this,[element]); var _handle; var _location; var _dragStartLocation; var _profileProperty; var _profileComponent; var _mouseDownHandler = Function.createDelegate(this, mouseDownHandler); this.add_move = function(handler) { this.get_events().addHandler('move', handler); } this.remove_move = function(handler) { this.get_events().removeHandler('move', handler); } this.get_handle = function() { return _handle; } this.set_handle = function(value) { if (_handle != null) { $removeHandler(_handle, "mousedown", _mouseDownHandler); } _handle = value; $addHandler(_handle, "mousedown", _mouseDownHandler); } this.get_profileProperty = function() { return _profileProperty; } this.set_profileProperty = function(value) { //##DEBUG Sys.Debug.assert(!this.get_isInitialized() || _profileProperty === value, "You cannot change the profile property after initialization."); _profileProperty = value; } this.get_profileComponent = function() { return _profileComponent; } this.set_profileComponent = function(value) { _profileComponent = value; } this.get_location = function() { return _location; } this.set_location = function(value) { if (_location != value) { _location = value; if (this.get_isInitialized()) { $common.setLocation(this.get_element(), _location); } this.raisePropertyChanged('location'); } } this.initialize = function() { AjaxControlToolkit.FloatingBehavior.callBaseMethod(this, 'initialize'); AjaxControlToolkit.DragDropManager.registerDropTarget(this); var el = this.get_element(); if (!_location) { _location = $common.getLocation(el); } el.style.position = "fixed"; $common.setLocation(el, _location); // var p = this.get_profileProperty(); // if(p) { // var b = new Sys.Preview.Binding(); // b.beginUpdate(); // b.set_target(this); // b.set_property("location"); // var profile = this.get_profileComponent(); // if(!profile) profile = Sys.Preview.Services.Components.Profile.instance; // b.set_dataContext(profile); // b.set_dataPath(p); // b.set_direction(Sys.Preview.BindingDirection.InOut); // // // we must hook into the loaded event since the profile may be loaded and the location property // // will be different. But profile doesnt raise a change notificaiton for every property after a load // var a = new Sys.Preview.InvokeMethodAction(); // a.beginUpdate(); // a.set_eventSource(profile); // a.set_eventName("loadComplete"); // a.set_target(b); // a.set_method("evaluateIn"); // a.endUpdate(); // b.endUpdate(); // this._binding = b; // this._action = a; // } } this.dispose = function() { AjaxControlToolkit.DragDropManager.unregisterDropTarget(this); if (_handle && _mouseDownHandler) { $removeHandler(_handle, "mousedown", _mouseDownHandler); //_handle.detachEvent("onmousedown", _mouseDownHandler); } _mouseDownHandler = null; AjaxControlToolkit.FloatingBehavior.callBaseMethod(this, 'dispose'); } this.checkCanDrag = function(element) { var undraggableTagNames = ["input", "button", "select", "textarea", "label"]; var tagName = element.tagName; if ((tagName.toLowerCase() == "a") && (element.href != null) && (element.href.length > 0)) { return false; } if (Array.indexOf(undraggableTagNames, tagName.toLowerCase()) > -1) { return false; } return true; } function mouseDownHandler(ev) { window._event = ev; var el = this.get_element(); if (this.checkCanDrag(ev.target)) { _dragStartLocation = $common.getLocation(el); ev.preventDefault(); this.startDragDrop(el); } } // Type get_dataType() this.get_dragDataType = function() { return "_floatingObject"; } // Object get_data(Context) this.getDragData = function(context) { return null; } // DragMode get_dragMode() this.get_dragMode = function() { return AjaxControlToolkit.DragMode.Move; } // void onDragStart() this.onDragStart = function() { } // void onDrag() this.onDrag = function() { } // void onDragEnd(Canceled) this.onDragEnd = function(canceled) { if (!canceled) { var handler = this.get_events().getHandler('move'); if(handler) { var cancelArgs = new Sys.CancelEventArgs(); handler(this, cancelArgs); canceled = cancelArgs.get_cancel(); } } var el = this.get_element(); if (canceled) { // Restore the position of the control. $common.setLocation(el, _dragStartLocation); } else { _location = $common.getLocation(el); this.raisePropertyChanged('location'); } } this.startDragDrop = function(dragVisual) { AjaxControlToolkit.DragDropManager.startDragDrop(this, dragVisual, null); } this.get_dropTargetElement = function() { return document.body; } // bool canDrop(DragMode, DataType, Data) this.canDrop = function(dragMode, dataType, data) { return (dataType == "_floatingObject"); } // void drop(DragMode, DataType, Data) this.drop = function(dragMode, dataType, data) {} // void onDragEnterTarget(DragMode, DataType, Data) this.onDragEnterTarget = function(dragMode, dataType, data) {} // void onDragLeaveTarget(DragMode, DataType, Data) this.onDragLeaveTarget = function(dragMode, dataType, data) {} // void onDragInTarget(DragMode, DataType, Data) this.onDragInTarget = function(dragMode, dataType, data) {} } //AjaxControlToolkit.FloatingBehavior.descriptor = { // properties: [ {name: "profileProperty", type: String}, // {name: "profileComponent", type: Object}, // {name: "dragData", type: Object, readOnly: true}, // {name: "dragDataType", type: String, readOnly: true}, // {name: "dragMode", type: AjaxControlToolkit.DragMode, readOnly: true}, // {name: "dropTargetElement", type: Object, readOnly: true}, // {name: "handle", type: Sys.UI.DomElement}, // {name: "location", type: String} ], // events: [ {name: "move"} ] //} AjaxControlToolkit.FloatingBehavior.registerClass('AjaxControlToolkit.FloatingBehavior', AjaxControlToolkit.BehaviorBase, AjaxControlToolkit.IDragSource, AjaxControlToolkit.IDropTarget, Sys.IDisposable);