Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F886280
Moveable.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
4 KB
Subscribers
None
Moveable.js
View Options
if
(
!
dojo
.
_hasResource
[
"dojo.dnd.Moveable"
]){
//_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo
.
_hasResource
[
"dojo.dnd.Moveable"
]
=
true
;
dojo
.
provide
(
"dojo.dnd.Moveable"
);
dojo
.
require
(
"dojo.dnd.Mover"
);
dojo
.
declare
(
"dojo.dnd.Moveable"
,
null
,
{
// object attributes (for markup)
handle
:
""
,
delay
:
0
,
skip
:
false
,
constructor
:
function
(
node
,
params
){
// summary: an object, which makes a node moveable
// node: Node: a node (or node's id) to be moved
// params: Object: an optional object with additional parameters;
// following parameters are recognized:
// handle: Node: a node (or node's id), which is used as a mouse handle
// if omitted, the node itself is used as a handle
// delay: Number: delay move by this number of pixels
// skip: Boolean: skip move of form elements
// mover: Object: a constructor of custom Mover
this
.
node
=
dojo
.
byId
(
node
);
if
(
!
params
){
params
=
{};
}
this
.
handle
=
params
.
handle
?
dojo
.
byId
(
params
.
handle
)
:
null
;
if
(
!
this
.
handle
){
this
.
handle
=
this
.
node
;
}
this
.
delay
=
params
.
delay
>
0
?
params
.
delay
:
0
;
this
.
skip
=
params
.
skip
;
this
.
mover
=
params
.
mover
?
params
.
mover
:
dojo
.
dnd
.
Mover
;
this
.
events
=
[
dojo
.
connect
(
this
.
handle
,
"onmousedown"
,
this
,
"onMouseDown"
),
// cancel text selection and text dragging
dojo
.
connect
(
this
.
handle
,
"ondragstart"
,
this
,
"onSelectStart"
),
dojo
.
connect
(
this
.
handle
,
"onselectstart"
,
this
,
"onSelectStart"
)
];
},
// markup methods
markupFactory
:
function
(
params
,
node
){
return
new
dojo
.
dnd
.
Moveable
(
node
,
params
);
},
// methods
destroy
:
function
(){
// summary: stops watching for possible move, deletes all references, so the object can be garbage-collected
dojo
.
forEach
(
this
.
events
,
dojo
.
disconnect
);
this
.
events
=
this
.
node
=
this
.
handle
=
null
;
},
// mouse event processors
onMouseDown
:
function
(
e
){
// summary: event processor for onmousedown, creates a Mover for the node
// e: Event: mouse event
if
(
this
.
skip
&&
dojo
.
dnd
.
isFormElement
(
e
)){
return
;
}
if
(
this
.
delay
){
this
.
events
.
push
(
dojo
.
connect
(
this
.
handle
,
"onmousemove"
,
this
,
"onMouseMove"
));
this
.
events
.
push
(
dojo
.
connect
(
this
.
handle
,
"onmouseup"
,
this
,
"onMouseUp"
));
this
.
_lastX
=
e
.
pageX
;
this
.
_lastY
=
e
.
pageY
;
}
else
{
new
this
.
mover
(
this
.
node
,
e
,
this
);
}
dojo
.
stopEvent
(
e
);
},
onMouseMove
:
function
(
e
){
// summary: event processor for onmousemove, used only for delayed drags
// e: Event: mouse event
if
(
Math
.
abs
(
e
.
pageX
-
this
.
_lastX
)
>
this
.
delay
||
Math
.
abs
(
e
.
pageY
-
this
.
_lastY
)
>
this
.
delay
){
this
.
onMouseUp
(
e
);
new
this
.
mover
(
this
.
node
,
e
,
this
);
}
dojo
.
stopEvent
(
e
);
},
onMouseUp
:
function
(
e
){
// summary: event processor for onmouseup, used only for delayed delayed drags
// e: Event: mouse event
dojo
.
disconnect
(
this
.
events
.
pop
());
dojo
.
disconnect
(
this
.
events
.
pop
());
},
onSelectStart
:
function
(
e
){
// summary: event processor for onselectevent and ondragevent
// e: Event: mouse event
if
(
!
this
.
skip
||
!
dojo
.
dnd
.
isFormElement
(
e
)){
dojo
.
stopEvent
(
e
);
}
},
// local events
onMoveStart
:
function
(
/* dojo.dnd.Mover */
mover
){
// summary: called before every move operation
dojo
.
publish
(
"/dnd/move/start"
,
[
mover
]);
dojo
.
addClass
(
dojo
.
body
(),
"dojoMove"
);
dojo
.
addClass
(
this
.
node
,
"dojoMoveItem"
);
},
onMoveStop
:
function
(
/* dojo.dnd.Mover */
mover
){
// summary: called after every move operation
dojo
.
publish
(
"/dnd/move/stop"
,
[
mover
]);
dojo
.
removeClass
(
dojo
.
body
(),
"dojoMove"
);
dojo
.
removeClass
(
this
.
node
,
"dojoMoveItem"
);
},
onFirstMove
:
function
(
/* dojo.dnd.Mover */
mover
){
// summary: called during the very first move notification,
// can be used to initialize coordinates, can be overwritten.
// default implementation does nothing
},
onMove
:
function
(
/* dojo.dnd.Mover */
mover
,
/* Object */
leftTop
){
// summary: called during every move notification,
// should actually move the node, can be overwritten.
this
.
onMoving
(
mover
,
leftTop
);
dojo
.
marginBox
(
mover
.
node
,
leftTop
);
this
.
onMoved
(
mover
,
leftTop
);
},
onMoving
:
function
(
/* dojo.dnd.Mover */
mover
,
/* Object */
leftTop
){
// summary: called before every incremental move,
// can be overwritten.
// default implementation does nothing
},
onMoved
:
function
(
/* dojo.dnd.Mover */
mover
,
/* Object */
leftTop
){
// summary: called after every incremental move,
// can be overwritten.
// default implementation does nothing
}
});
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Apr 7, 00:17 (2 w, 2 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25545
Default Alt Text
Moveable.js (4 KB)
Attached To
rZEDHG ZedLegacy
Event Timeline
Log In to Comment