@Override
	public void drop(DropTargetDropEvent dtde) {
		try {
			Transferable transferable = dtde.getTransferable();

			// we check if the type of the dropped element is appropriate
			if (transferable
					.isDataFlavorSupported(LevelEditorTransferable.FIELD_STATE_DATA_FLAVOR)) {
				
				// accept and process the drop
				dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
				FieldState state = (FieldState) transferable
						.getTransferData(LevelEditorTransferable.FIELD_STATE_DATA_FLAVOR);
				DraggableElementDestination.this.controller
						.fieldStateChanged(state);
				dtde.getDropTargetContext().dropComplete(true);
			} else {
				dtde.rejectDrop();
			}
		} catch (IOException e) {
			LOG.error(e);
			dtde.rejectDrop();
		} catch (UnsupportedFlavorException e) {
			LOG.error(e);
			dtde.rejectDrop();
		}
	}