[e-cvs] cvs commit: e/src/esrc/com/skyhunter/e/awt/dnd setupDropFuncAuthor.emaker testSetupDropFunc.e
markm@eros.cs.jhu.edu
markm@eros.cs.jhu.edu
Fri, 14 Sep 2001 18:52:50 -0400
markm 01/09/14 18:52:50
Added: src/esrc/com/skyhunter/e/awt/dnd setupDropFuncAuthor.emaker
testSetupDropFunc.e
Log:
new files
Revision Changes Path
1.1 e/src/esrc/com/skyhunter/e/awt/dnd/setupDropFuncAuthor.emaker
Index: setupDropFuncAuthor.emaker
===================================================================
//Copyright (C) 2000 Marc Stiegler. All Rights Reserved.
def setupDropFuncAuthor(javaAwtDndDropTarget, traceln) :near {
// FlavorReactorMap, key is a flavor, value is a one-parameter function
// the parameter is the object that was dropped
def setupDrop(component, flavorReactorMap) {
def dropTargetListener {
to drop (dropTargetDropEvent) {
traceln("drop event started")
dropTargetDropEvent acceptDrop(
dropTargetDropEvent getDropAction())
var completedDrop := false
try {
def findFlavor() :near {
var flavor := null
for each => value in flavorReactorMap {
if (dropTargetDropEvent isDataFlavorSupported(each)) {
flavor := each
traceln("found flavor match: " + each)
break()
}
}
flavor
}
def flavor := findFlavor()
if (flavor != null) {
def obj := dropTargetDropEvent getTransferable() getTransferData(flavor)
traceln("got object: " + obj)
flavorReactorMap[flavor] run(obj)
completedDrop := true
}
} catch err {traceln ("getTransfer err: " + err)}
dropTargetDropEvent dropComplete(completedDrop)
}
to dragEnter(dropTargetDragEvent) {
traceln("dragEnter started")
#dropTargetDragEvent acceptDrag()
}
match [verb,args] {
#if (verb != "dragOver") {traceln("got drop behavior: " + verb)}
}
}
component setDropTarget(
javaAwtDndDropTarget new(component, dropTargetListener))
}
}
1.1 e/src/esrc/com/skyhunter/e/awt/dnd/testSetupDropFunc.e
Index: testSetupDropFunc.e
===================================================================
//Copyright (C) 2000 Marc Stiegler. All Rights Reserved.
def setupDropFuncAuthor := <import:com.skyhunter.e.awt.dnd.setupDropFuncAuthor>
def frame := <swing:JFrame> new()
def right := <swing:JLabel> new()
right setText("right")
frame getContentPane() add(right, "East")
def reactToFiles(files) {
println("dropped object: " + files)
println("array size: " + files size())
for i in 0..(files size() - 1) {
println("text: " + files[i] getText())
}
}
def dataFlavor := <awt:datatransfer.DataFlavor>
def setupFileDrop := setupDropFuncAuthor(<awt:dnd.DropTarget>, println)
setupFileDrop(right, [dataFlavor javaFileListFlavor() => reactToFiles])
frame pack()
frame show()
println("compiled")
interp blockAtTop()