def METHOD_NAME(self, position):
    menu = QMenu()
    idx = self.indexAt(position)
    column = idx.column() or self.Columns.NAME
    selected_keys = []
    for s_idx in self.selected_in_column(self.Columns.NAME):
        sel_key = self.model().itemFromIndex(s_idx).data(self.ROLE_CONTACT_KEY)
        selected_keys.append(sel_key)
    if selected_keys and idx.isValid():
        column_title = self.model().horizontalHeaderItem(column).text()
        column_data = '\n'.join(self.model().itemFromIndex(s_idx).text()
                                for s_idx in self.selected_in_column(column))
        menu.addAction(_("Copy {}").format(column_title), lambda: self.place_text_on_clipboard(column_data, title=column_title))
        if column in self.editable_columns:
            item = self.model().itemFromIndex(idx)
            if item.isEditable():
                # would not be editable if openalias
                persistent = QPersistentModelIndex(idx)
                menu.addAction(_("Edit {}").format(column_title), lambda p=persistent: self.edit(QModelIndex(p)))
        menu.addAction(_("Pay to"), lambda: self.main_window.payto_contacts(selected_keys))
        menu.addAction(_("Delete"), lambda: self.main_window.delete_contacts(selected_keys))
        URLs = [block_explorer_URL(self.config, 'addr', key) for key in filter(is_address, selected_keys)]
        if URLs:
            menu.addAction(_("View on block explorer"), lambda: [webopen(u) for u in URLs])
    run_hook('create_contact_menu', menu, selected_keys)
    menu.exec_(self.viewport().mapToGlobal(position))