/**
   * Handles clicks on the context menu.
   *
   * <p>{@inheritDoc}
   *
   * @param item
   * @return
   */
  @Override
  public boolean onContextItemSelected(MenuItem item) {
    Song song = getCurrentSong();
    if (song == null || song.isRemote()) {
      return false;
    }

    // Note: Very similar to code in SongView:doItemContext().  Refactor?
    switch (item.getItemId()) {
      case R.id.download:
        mActivity.downloadItem(song);
        return true;

      case R.id.view_this_album:
        SongListActivity.show(getActivity(), song.getAlbum());
        return true;

      case R.id.view_albums_by_song:
        AlbumListActivity.show(getActivity(), new Artist(song.getArtistId(), song.getArtist()));
        return true;

      case R.id.view_songs_by_artist:
        SongListActivity.show(getActivity(), new Artist(song.getArtistId(), song.getArtist()));
        return true;

      default:
        throw new IllegalStateException("Unknown menu ID.");
    }
  }