Drop over on widget intersection
<!--
Isomorphic SmartClient
Copyright(c) 1998 and beyond Isomorphic Software, Inc.
"SmartClient" is a trademark of Isomorphic Software, Inc.
All rights reserved.
Open Source License
SmartClient source code, located under the source/ directory, and the resulting assembled modules
in isomorphic/system/modules/, as well as JavaScript and CSS files under the isomorphic/skins directory are
licensed under the terms of the GNU Lesser General Public License, version 3.
The text of the LGPLv3 license is available online at http://www.gnu.org/licenses/lgpl-3.0.html
If your project precludes the use of this license, or if you'd like to support SmartClient LGPL,
we encourage you to buy a commercial license.
Icon Experience Collection
Selected 16x16 icons within the isomorphic/skins directory are part of the Icon Experience collection
(http://www.iconexperience.com) and may be freely used with any SmartClient components without charge,
but may not be used as part of screen designs separate from SmartClient components without a purchase
of a license from Icon Experience. We are working to replace these icons as soon as possible.
All other media found under the isomorphic/skins directory may be used under the LGPLv3.
Commercial Licenses
A number of commercial licenses are available for purchase. Please see http://smartclient.com/license.
Warranty Disclaimer
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
Public License for more details.
Copyright 2001 and beyond Isomorphic Software, Inc. Last revised July 20, 2008.
-->
<!-- The following code is revised from SmartClient demo code(SmartClient_70rc2_LGPL.zip).-->
<HTML><HEAD>
<SCRIPT>var isomorphicDir="isomorphic/";</SCRIPT>
<SCRIPT SRC=isomorphic/system/modules/ISC_Core.js></SCRIPT>
<SCRIPT SRC=isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
<SCRIPT SRC=isomorphic/system/modules/ISC_Containers.js></SCRIPT>
<SCRIPT SRC=isomorphic/system/modules/ISC_Grids.js></SCRIPT>
<SCRIPT SRC=isomorphic/system/modules/ISC_Forms.js></SCRIPT>
<SCRIPT SRC=isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
<SCRIPT SRC=isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
</HEAD><BODY>
<!-- HTML form containing two checkbox controls -->
<DIV STYLE='padding:0px 0px 0px 20px' CLASS='normal'>
<form action="" method="POST" name="f">
<input type="Checkbox" name="intersect" onclick="setIntersectStyles(this.checked)">dropOver on widget intersection<br>
<input type="Checkbox" name="resetPos">reset widget position on dragRepositionStop
</form>
</DIV>
<SCRIPT>
// --------------------------------------------------
// canDragReposition widget with TARGET dragAppearance
// --------------------------------------------------
Canvas.create({
ID:"dragReposition",
left:50,
top:125,
width:100,
height:100,
contents:"Target Drag",
backgroundColor:"violet",
canDragReposition:true,
canDrop:true,
dragAppearance:"target",
dragRepositionStop:"if (resetPosition.checked) return false;"
});
// --------------------------------------------------
// Outline Drag widget...
// --------------------------------------------------
Canvas.create({
ID:"dragOutline",
left:310,
top:125,
width:100,
height:100,
canDragReposition:true,
canDrop:true,
contents:"Outline Drag",
backgroundColor:"gold",
dragAppearance:"outline",
dragRepositionStop:"if (resetPosition.checked) return false;"
});
// --------------------------------------------------
// canDrag widget with TRACKER dragAppearance
// --------------------------------------------------
Canvas.create({
ID:"dragTracked",
left:50,
top:385,
width:100,
height:100,
contents:"Use Drag Tracker",
backgroundColor:"lightgreen",
canDragReposition:true,
canDrop:true,
dragAppearance:"tracker",
setDragTracker:"EventHandler.setDragTracker(this.imgHTML('yinyang_icon.gif',20,20))",
dragRepositionStop:"if (resetPosition.checked) return false;"
});
// --------------------------------------------------
// Parent of next widget
// --------------------------------------------------
Canvas.create({
ID:"topParent",
left:310,
top:385,
width:100,
height:100,
canDrop:true,
contents:"parent",
backgroundColor:"salmon",
dragRepositionStop:"if (resetPosition.checked) return false;",
dragAppearance:"outline"
});
// --------------------------------------------------
// canDragReposition child widget with dragTarget set to "top"
// --------------------------------------------------
Canvas.create({
ID:"dragRepositionTop",
autoDraw:false,
left:20,
top:20,
width:60,
height:60,
contents:"Drag Reposition Top",
backgroundColor:"mediumpurple",
canDragReposition:true,
dragTarget:"top"
});
topParent.addChild(dragRepositionTop);
// --------------------------------------------------
// canAcceptDrop widget
// --------------------------------------------------
Canvas.create({
ID:"dropZone",
left:180,
top:255,
width:100,
height:100,
contents:"Drop Zone",
backgroundColor:"skyblue",
canAcceptDrop:true,
dropOver:"this.setBackgroundColor('powderblue')",
dropOut:"this.setBackgroundColor('skyblue')",
drop:"alert('drop')"
});
//dropZone.sendToBack();
// --------------------------------------------------
// scripts for working with the HTML form
// --------------------------------------------------
// shortcut references to form elements
var resetPosition = document.f.resetPos;
// switch dragIntersectStyles
function setIntersectStyles(on) {
if (on) {
dragTracked.dragIntersectStyle="rect";
dragTracked.setContents("Use Drag Tracker (intersect rect)");
dragReposition.dragIntersectStyle="rect";
dragReposition.setContents("Drag Reposition (intersect rect)");
dragOutline.dragIntersectStyle="rect";
dragOutline.setContents("Outline Drag (intersect rect)");
// NOTE: you need to change the dragIntersectStyle of the topParent,
// since that ends up being the dragTarget
topParent.dragIntersectStyle="rect";
dragRepositionTop.setContents("Drag Reposition Top (intersect rect)");
}
else {
dragTracked.dragIntersectStyle="mouse";
dragTracked.setContents("Use Drag Tracker");
dragReposition.dragIntersectStyle="mouse";
dragReposition.setContents("Drag Reposition");
dragOutline.dragIntersectStyle="mouse";
dragOutline.setContents("Outline Drag");
// NOTE: you need to change the dragIntersectStyle of the topParent,
// since that ends up being the dragTarget
topParent.dragIntersectStyle="mouse";
dragRepositionTop.setContents("Drag Reposition Top");
}
}
// initialize the form
function initializeForm() {
document.f.intersect.checked = false;
resetPosition.checked = true;
}
Page.setEvent("load", "initializeForm()");
</SCRIPT>
</BODY>
</HTML>
Related examples in the same category