diff --git a/platform/vcs-log/impl/api-dump-unreviewed.txt b/platform/vcs-log/impl/api-dump-unreviewed.txt index 33738b3c0c85..e2a317d15aa2 100644 --- a/platform/vcs-log/impl/api-dump-unreviewed.txt +++ b/platform/vcs-log/impl/api-dump-unreviewed.txt @@ -12,6 +12,7 @@ a:com.intellij.util.ui.FilterComponent - initUi():javax.swing.JComponent - a:installChangeListener(java.lang.Runnable):V - pa:isValueSelected():Z +- p:resetFilter():V - setEnabled(Z):V - setShowPopupAction(java.lang.Runnable):V - p:shouldDrawLabel():com.intellij.util.ui.FilterComponent$DrawLabelMode diff --git a/platform/vcs-log/impl/resources/messages/VcsLogBundle.properties b/platform/vcs-log/impl/resources/messages/VcsLogBundle.properties index 0093d6aee1e1..e73a0dde84ab 100644 --- a/platform/vcs-log/impl/resources/messages/VcsLogBundle.properties +++ b/platform/vcs-log/impl/resources/messages/VcsLogBundle.properties @@ -192,6 +192,7 @@ vcs.log.editor.name=VCS Log Editor # filters vcs.log.filter.all=All +vcs.log.filter.clear=Clear vcs.log.filter.recent=Recent vcs.log.filter.structure.presentation.with.prefix=for {0} vcs.log.filter.root.presentation.with.prefix=in {0} diff --git a/platform/vcs-log/impl/src/com/intellij/util/ui/FilterComponent.java b/platform/vcs-log/impl/src/com/intellij/util/ui/FilterComponent.java index 5f2e094224ae..2bb0807e6c7b 100644 --- a/platform/vcs-log/impl/src/com/intellij/util/ui/FilterComponent.java +++ b/platform/vcs-log/impl/src/com/intellij/util/ui/FilterComponent.java @@ -2,6 +2,8 @@ package com.intellij.util.ui; import com.intellij.icons.AllIcons; +import com.intellij.ide.HelpTooltip; +import com.intellij.openapi.keymap.KeymapUtil; import com.intellij.openapi.ui.GraphicsConfig; import com.intellij.openapi.util.NlsContexts; import com.intellij.ui.ClickListener; @@ -86,7 +88,7 @@ public abstract class FilterComponent extends JBPanel { myValueLabel.repaint(); }); showPopupMenuOnClick(); - showPopupMenuFromKeyboard(); + showPopupMenuFromKeyboardAndClearOnDelete(); if (shouldIndicateHovering()) { Stream.of(this, myFilterActionButton, myNameLabel, myValueLabel) .filter(nonNull()) @@ -103,6 +105,15 @@ public abstract class FilterComponent extends JBPanel { myFilterActionButton.setIcon(selected ? AllIcons.Actions.Close : AllIcons.General.ArrowDown); myFilterActionButton.setHoveredIcon(selected ? AllIcons.Actions.CloseHovered : AllIcons.General.ArrowDown); myFilterActionButton.setFocusable(selected); + if (selected) { + new HelpTooltip() + .setTitle(VcsLogBundle.message("vcs.log.filter.clear")) + .setShortcut(KeymapUtil.getKeyText(KeyEvent.VK_DELETE)) + .installOn(myFilterActionButton); + } + else { + HelpTooltip.dispose(myFilterActionButton); + } } @Override @@ -154,7 +165,7 @@ public abstract class FilterComponent extends JBPanel { }); } - private void showPopupMenuFromKeyboard() { + private void showPopupMenuFromKeyboardAndClearOnDelete() { addKeyListener(new KeyAdapter() { @Override public void keyPressed(@NotNull KeyEvent e) { @@ -162,6 +173,9 @@ public abstract class FilterComponent extends JBPanel { if (e.getKeyCode() == KeyEvent.VK_ENTER || e.getKeyCode() == KeyEvent.VK_DOWN) { showPopup(); } + if (e.getKeyCode() == KeyEvent.VK_DELETE) { + resetFilter(); + } } }); } @@ -223,7 +237,7 @@ public abstract class FilterComponent extends JBPanel { } } - private void resetFilter() { + protected void resetFilter() { Runnable resetAction = createResetAction(); if (resetAction != null) { resetAction.run();