1 31 package org.objectweb.proactive.ic2d.gui.data; 32 33 import org.objectweb.proactive.core.UniqueID; 34 35 41 public abstract class UniqueIDDropTargetListener implements java.awt.dnd.DropTargetListener { 42 43 44 48 public UniqueIDDropTargetListener() { 49 } 50 51 52 56 60 64 public void dragEnter(java.awt.dnd.DropTargetDragEvent e) { 65 if (isDragOk(e)) { 67 showDragFeedBack(); 68 e.acceptDrag(e.getDropAction()); 69 } else { 70 hideDnDFeedBack(); 71 e.rejectDrag(); 72 } 73 } 74 75 79 public void dragOver(java.awt.dnd.DropTargetDragEvent e) { 80 if (isDragOk(e)) { 82 e.acceptDrag(e.getDropAction()); 83 } else { 84 e.rejectDrag(); 85 } 86 } 87 88 public void dropActionChanged(java.awt.dnd.DropTargetDragEvent e) { 89 if (isDragOk(e)) { 91 e.acceptDrag(e.getDropAction()); 92 } else { 93 e.rejectDrag(); 94 } 95 } 96 97 public void dragExit(java.awt.dnd.DropTargetEvent e) { 98 hideDnDFeedBack(); 100 } 101 102 107 public void drop(java.awt.dnd.DropTargetDropEvent event) { 108 showDropFeedBack(); 109 java.awt.datatransfer.Transferable transferable = event.getTransferable(); 110 if (! transferable.isDataFlavorSupported(TransferableUniqueID.UNIQUEID_FLAVOR)) { 112 rejectDrop(event); 113 return; 114 } 115 Object data = null; 117 try { 118 data = event.getTransferable().getTransferData(TransferableUniqueID.UNIQUEID_FLAVOR); 119 } catch (java.io.IOException e) { 120 rejectDrop(event); 121 return; 122 } catch (java.awt.datatransfer.UnsupportedFlavorException e) { 123 rejectDrop(event); 124 return; 125 } 126 if (data == null || !(data instanceof UniqueID)) { 127 rejectDrop(event); 128 return; 129 } 130 UniqueID uniqueID = (UniqueID) data; 131 boolean result = processDrop(event, uniqueID); 132 if (! result) { 134 rejectDrop(event); 135 return; 136 } 137 } 138 139 140 144 150 protected abstract boolean processDrop(java.awt.dnd.DropTargetDropEvent event, UniqueID id); 151 152 153 156 protected abstract void showDragFeedBack(); 157 158 159 162 protected abstract void showDropFeedBack(); 163 164 165 168 protected abstract void hideDnDFeedBack(); 169 170 171 175 private void rejectDrop(java.awt.dnd.DropTargetDropEvent event) { 176 event.rejectDrop(); 177 hideDnDFeedBack(); 178 } 179 180 181 187 private boolean isDragOk(java.awt.dnd.DropTargetDragEvent event) { 188 java.awt.datatransfer.DataFlavor [] df = event.getCurrentDataFlavors(); 189 if (! event.isDataFlavorSupported(TransferableUniqueID.UNIQUEID_FLAVOR)) return false; 190 if ((event.getDropAction() & java.awt.dnd.DnDConstants.ACTION_COPY_OR_MOVE) == 0) return false; 192 return true; 193 } 194 195 196 } 197 | Popular Tags |