private void populateContextMenu(ContextMenu menu) {
   final Message m = this.selectedMessage;
   if (m.getType() != Message.TYPE_STATUS) {
     activity.getMenuInflater().inflate(R.menu.message_context, menu);
     menu.setHeaderTitle(R.string.message_options);
     MenuItem copyText = menu.findItem(R.id.copy_text);
     MenuItem shareWith = menu.findItem(R.id.share_with);
     MenuItem sendAgain = menu.findItem(R.id.send_again);
     MenuItem copyUrl = menu.findItem(R.id.copy_url);
     MenuItem downloadFile = menu.findItem(R.id.download_file);
     MenuItem cancelTransmission = menu.findItem(R.id.cancel_transmission);
     if ((m.getType() == Message.TYPE_TEXT || m.getType() == Message.TYPE_PRIVATE)
         && m.getTransferable() == null
         && !GeoHelper.isGeoUri(m.getBody())
         && m.treatAsDownloadable() != Message.Decision.MUST) {
       copyText.setVisible(true);
     }
     if ((m.getType() != Message.TYPE_TEXT
             && m.getType() != Message.TYPE_PRIVATE
             && m.getTransferable() == null)
         || (GeoHelper.isGeoUri(m.getBody()))) {
       shareWith.setVisible(true);
     }
     if (m.getStatus() == Message.STATUS_SEND_FAILED) {
       sendAgain.setVisible(true);
     }
     if (m.hasFileOnRemoteHost()
         || GeoHelper.isGeoUri(m.getBody())
         || m.treatAsDownloadable() == Message.Decision.MUST) {
       copyUrl.setVisible(true);
     }
     if (m.getType() == Message.TYPE_TEXT
         && m.getTransferable() == null
         && m.treatAsDownloadable() != Message.Decision.NEVER) {
       downloadFile.setVisible(true);
       downloadFile.setTitle(
           activity.getString(
               R.string.download_x_file, UIHelper.getFileDescriptionString(activity, m)));
     }
     if ((m.getTransferable() != null && !(m.getTransferable() instanceof TransferablePlaceholder))
         || (m.isFileOrImage()
             && (m.getStatus() == Message.STATUS_WAITING
                 || m.getStatus() == Message.STATUS_OFFERED))) {
       cancelTransmission.setVisible(true);
     }
   }
 }