void (@NotNull AnActionEvent e) { super.update(e); VcsLogUi ui = e.getData(VcsLogDataKeys.VCS_LOG_UI); VcsLogUiProperties properties = e.getData(VcsLogInternalDataKeys.LOG_UI_PROPERTIES); if (ui != null && properties != null && properties.exists(MainVcsLogUiProperties.TEXT_FILTER_MATCH_CASE)) { Presentation presentation = e.getPresentation(); boolean regexEnabled = properties.exists(MainVcsLogUiProperties.TEXT_FILTER_REGEX) && properties.get(MainVcsLogUiProperties.TEXT_FILTER_REGEX); if (!regexEnabled) { presentation.setText(VcsLogBundle.message("action.title.match.case")); } else { Collection<VcsLogProvider> providers = new LinkedHashSet<>(ui.getDataPack().getLogProviders().values()); List<VcsLogProvider> supported = ContainerUtil.filter(providers, VcsLogProperties.CASE_INSENSITIVE_REGEX::getOrDefault); presentation.setVisible(true); presentation.setEnabled(!supported.isEmpty()); if (providers.size() == supported.size() || supported.isEmpty()) { presentation.setText(VcsLogBundle.message("action.title.match.case")); } else { String supportedText = StringUtil.join(ContainerUtil.map(supported, p -> StringUtil.toLowerCase(p.getSupportedVcs().getName())), ", "); presentation.setText(VcsLogBundle.message("action.title.match.case.only.supported", supportedText)); } } } }