dojox
Version:
Dojo eXtensions, a rollup of many useful sub-projects and varying states of maturity – from very stable and robust, to alpha and experimental. See individual projects contain README files for details.
95 lines (88 loc) • 3.89 kB
HTML
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Dnd - Dojo Adapter (To Dojo)</title>
<link rel="stylesheet" type="text/css" href="../../../../dojo/resources/dojo.css" />
<link rel="stylesheet" type="text/css" href="../../../../dojo/tests/dnd/dndDefault.css" />
<link rel="stylesheet" type="text/css" href="../../../../dijit/themes/tundra/tundra.css" />
<link rel="stylesheet" type="text/css" href="../../../../dijit/tests/css/dijitTests.css" />
<link rel="stylesheet" type="text/css" href="../../resources/dnd.css" />
<link rel="stylesheet" type="text/css" href="../resources/test_dnd.css" />
<script type="text/javascript" src="../../../../dojo/dojo.js"
data-dojo-config="parseOnLoad:true, isDebug:true"></script>
<script type="text/javascript">
dojo.require("dojox.mdnd.AreaManager");
dojo.require("dojox.mdnd.DropIndicator");
dojo.require("dojox.mdnd.dropMode.VerticalDropMode");
dojo.require("dojox.mdnd.AutoScroll");
dojo.require("dojo.dnd.Source");
dojo.require("dojox.mdnd.adapter.DndToDojo");
dojo.ready(function(){
var m = dojox.mdnd.AreaManager.areaManager();
m.areaClass = "dndArea";
m.dragHandleClass = "dragHandle";
var adapter = dojox.mdnd.adapter.dndToDojo();
adapter.register(dojo.byId("dojoSource"), "", true);
adapter.register(dojo.byId("domTarget"), "domTarget");
m.init();
// when we register just a DOMNode, integration step is needed :
// --------------------------------------------------------------
// Rewrite isAccepted method (only for registered dom);
adapter.isAccepted = function(draggedNode, target){
console.log("isAccepted", target);
if(target.type == "domTarget"){
var dndType = dojo.attr(draggedNode, "dndType");
return (dndType == "type2") ? true : false;
}
};
dojo.subscribe("/dojox/mdnd/adapter/dndToDojo/over", null, "onOver");
dojo.subscribe("/dojox/mdnd/adapter/dndToDojo/out", null, "onOut");
dojo.subscribe("/dojox/mdnd/adapter/dndToDojo/drop", null, "onDrop");
dojo.subscribe("/dojox/mdnd/adapter/dndToDojo/cancel", null, "onOut");
});
function onOver(target, type, draggedNode, accept){
if(type == "domTarget"){
dojo.addClass(draggedNode, (accept) ? "dndOver" : "dndOverNotAccepted");
}
};
function onOut(target, type, draggedNode, accept){
dojo.removeClass(draggedNode, "dndOver dndOverNotAccepted");
};
function onDrop(draggedNode, target, type){
onOut(target, type, draggedNode);
target.appendChild(draggedNode);
}
</script>
</head>
<body class="tundra">
<h1>Drag and Drop : Dojox Dnd to Dojo Dnd</h1>
<div style="position:absolute;width:200px;left:50px;top:50px;">
<H2>Source/Target Dojox</H2>
<div class="dndArea container" accept="type1, type2, type3, text">
<div class="dndItem" dndType="type1">
<div class="title dragHandle" id="handle1">Item Type1</div>
<div>
<p>Proin aliquet accumsan nunc. Duis nec tortor.</p>
</div>
</div>
<div class="dndItem" dndType="type2">
<div class="title dragHandle" id="handle1">Item Type2</div>
<div>
<p>Proin aliquet accumsan nunc. Duis nec tortor.</p>
</div>
</div>
</div>
</div>
<div style="position:absolute;width:200px;left:350px;top:50px;">
<H2>Source/Target Dojo</H2>
<h3>Accepts only Type1 items</h3>
<div id="dojoSource" dojoType="dojo.dnd.Source" accept="type1, text" class="container" style="width:200px;height:200px;"></div>
</div>
<div style="position:absolute;width:200px;left:700px;top:50px;">
<H2>Target DOM </H2>
<h3>Accepts only Type2 items</h3>
<div id="domTarget" class="container" style="width:200px;height:200px;"></div>
</div>
</body>
</html>