|
Lines 173-188
Link Here
|
| 173 |
* that it is still enabled. |
173 |
* that it is still enabled. |
| 174 |
*/ |
174 |
*/ |
| 175 |
private void doDropValidation(DropTargetEvent event) { |
175 |
private void doDropValidation(DropTargetEvent event) { |
| 176 |
//update last valid operation |
176 |
currentOperation= determineOperation(currentTarget, lastValidOperation, event.currentDataType); |
| 177 |
if (event.detail != DND.DROP_NONE) { |
|
|
| 178 |
lastValidOperation = event.detail; |
| 179 |
} |
| 180 |
//valid drop and set event detail accordingly |
| 181 |
if (validateDrop(currentTarget, event.detail, event.currentDataType)) { |
| 182 |
currentOperation = lastValidOperation; |
| 183 |
} else { |
| 184 |
currentOperation = DND.DROP_NONE; |
| 185 |
} |
| 186 |
event.detail = currentOperation; |
177 |
event.detail = currentOperation; |
| 187 |
} |
178 |
} |
| 188 |
|
179 |
|
|
Lines 193-198
Link Here
|
| 193 |
*/ |
184 |
*/ |
| 194 |
public void dragEnter(DropTargetEvent event) { |
185 |
public void dragEnter(DropTargetEvent event) { |
| 195 |
currentTarget = determineTarget(event); |
186 |
currentTarget = determineTarget(event); |
|
|
187 |
lastValidOperation = event.detail; |
| 196 |
doDropValidation(event); |
188 |
doDropValidation(event); |
| 197 |
} |
189 |
} |
| 198 |
|
190 |
|
|
Lines 203-208
Link Here
|
| 203 |
*/ |
195 |
*/ |
| 204 |
public void dragOperationChanged(DropTargetEvent event) { |
196 |
public void dragOperationChanged(DropTargetEvent event) { |
| 205 |
currentTarget = determineTarget(event); |
197 |
currentTarget = determineTarget(event); |
|
|
198 |
lastValidOperation = event.detail; |
| 206 |
doDropValidation(event); |
199 |
doDropValidation(event); |
| 207 |
} |
200 |
} |
| 208 |
|
201 |
|
|
Lines 247-255
Link Here
|
| 247 |
* Last chance for the action to disable itself |
240 |
* Last chance for the action to disable itself |
| 248 |
*/ |
241 |
*/ |
| 249 |
public void dropAccept(DropTargetEvent event) { |
242 |
public void dropAccept(DropTargetEvent event) { |
| 250 |
if (!validateDrop(currentTarget, event.detail, event.currentDataType)) { |
243 |
event.detail= determineOperation(currentTarget, event.detail, event.currentDataType); |
| 251 |
event.detail = DND.DROP_NONE; |
|
|
| 252 |
} |
| 253 |
} |
244 |
} |
| 254 |
|
245 |
|
| 255 |
/** |
246 |
/** |
|
Lines 484-487
Link Here
|
| 484 |
*/ |
475 |
*/ |
| 485 |
public abstract boolean validateDrop(Object target, int operation, |
476 |
public abstract boolean validateDrop(Object target, int operation, |
| 486 |
TransferData transferType); |
477 |
TransferData transferType); |
|
|
478 |
|
| 479 |
/** |
| 480 |
* Determine the operation which should be executed given the target and the operation |
| 481 |
* requested by the user. This method is called whenever some aspect of the drop operation |
| 482 |
* changes. The operation is one of DND#DROP_DEFAULT, DND#DROP_COPY, DND#DROP_MOVE, DND#DROP_LINK. |
| 483 |
* <p> |
| 484 |
* The method returns the operation valid in the given context. The result is one of |
| 485 |
* DND#DROP_NONE, DND#DROP_COPY, DND#DROP_MOVE, DND#DROP_LINK, DND#DROP_DEFAULT. |
| 486 |
* </p> |
| 487 |
* <p> |
| 488 |
* Subclasses can overwrite this method to define which operation does make |
| 489 |
* sense in the given context. |
| 490 |
* </p> |
| 491 |
* |
| 492 |
* @param target the object that the mouse is currently hovering over, or |
| 493 |
* <code>null</code> if the mouse is hovering over empty space |
| 494 |
* @param operation the current drag operation (copy, move, etc.) |
| 495 |
* @param transferType the current transfer type |
| 496 |
* @return the operation which will be executed if no modifier key is pressed |
| 497 |
* by the user |
| 498 |
* |
| 499 |
* @see DND#DROP_NONE |
| 500 |
* @see DND#DROP_MOVE |
| 501 |
* @see DND#DROP_COPY |
| 502 |
* @see DND#DROP_LINK |
| 503 |
*/ |
| 504 |
protected int determineOperation(Object target, int operation, TransferData transferType) { |
| 505 |
if (!validateDrop(target, operation, transferType)) { |
| 506 |
return DND.DROP_NONE; |
| 507 |
} |
| 508 |
|
| 509 |
return operation; |
| 510 |
} |
| 487 |
} |
511 |
} |