mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-05 01:50:56 +07:00
IDEA-242476 Filter icon becomes a line of checkboxes when the icon does not fit on the toolbar
GitOrigin-RevId: b634459cef41c097bbc9957995b1edcd82582422
This commit is contained in:
committed by
intellij-monorepo-bot
parent
620bfc152b
commit
012fd12b15
@@ -41,6 +41,7 @@ import com.intellij.util.ui.JBUI;
|
|||||||
import com.intellij.util.ui.UIUtil;
|
import com.intellij.util.ui.UIUtil;
|
||||||
import com.intellij.util.ui.update.Activatable;
|
import com.intellij.util.ui.update.Activatable;
|
||||||
import com.intellij.util.ui.update.UiNotifyConnector;
|
import com.intellij.util.ui.update.UiNotifyConnector;
|
||||||
|
import org.jetbrains.annotations.ApiStatus;
|
||||||
import org.jetbrains.annotations.NonNls;
|
import org.jetbrains.annotations.NonNls;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
@@ -103,8 +104,6 @@ public class EditorSearchSession implements SearchSession,
|
|||||||
myComponent = SearchReplaceComponent
|
myComponent = SearchReplaceComponent
|
||||||
.buildFor(project, myEditor.getContentComponent())
|
.buildFor(project, myEditor.getContentComponent())
|
||||||
.addPrimarySearchActions(createPrimarySearchActions())
|
.addPrimarySearchActions(createPrimarySearchActions())
|
||||||
.addSecondarySearchActions(createSecondarySearchActions())
|
|
||||||
.addPrimarySearchActions(new ToggleSelectionOnlyAction())
|
|
||||||
.addExtraSearchActions(new ToggleMatchCase(),
|
.addExtraSearchActions(new ToggleMatchCase(),
|
||||||
new ToggleWholeWordsOnlyAction(),
|
new ToggleWholeWordsOnlyAction(),
|
||||||
new ToggleRegex(),
|
new ToggleRegex(),
|
||||||
@@ -119,7 +118,6 @@ public class EditorSearchSession implements SearchSession,
|
|||||||
.withDataProvider(this)
|
.withDataProvider(this)
|
||||||
.withCloseAction(this::close)
|
.withCloseAction(this::close)
|
||||||
.withReplaceAction(this::replaceCurrent)
|
.withReplaceAction(this::replaceCurrent)
|
||||||
.withSecondarySearchActionsIsModifiedGetter(() -> myFindModel.getSearchContext() != FindModel.SearchContext.ANY)
|
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
myComponent.addListener(this);
|
myComponent.addListener(this);
|
||||||
@@ -211,20 +209,20 @@ public class EditorSearchSession implements SearchSession,
|
|||||||
new AddOccurrenceAction(),
|
new AddOccurrenceAction(),
|
||||||
new RemoveOccurrenceAction(),
|
new RemoveOccurrenceAction(),
|
||||||
new SelectAllAction(),
|
new SelectAllAction(),
|
||||||
new Separator()
|
new Separator(),
|
||||||
|
new ToggleSelectionOnlyAction(),
|
||||||
|
new ShowFilterPopupGroup()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Won't be used anymore
|
||||||
|
*/
|
||||||
|
@ApiStatus.ScheduledForRemoval(inVersion = "2020.3")
|
||||||
|
@Deprecated
|
||||||
@NotNull
|
@NotNull
|
||||||
protected AnAction[] createSecondarySearchActions() {
|
protected AnAction[] createSecondarySearchActions() {
|
||||||
return new AnAction[] {
|
return AnAction.EMPTY_ARRAY;
|
||||||
new ToggleAnywhereAction(),
|
|
||||||
new ToggleInCommentsAction(),
|
|
||||||
new ToggleInLiteralsOnlyAction(),
|
|
||||||
new ToggleExceptCommentsAction(),
|
|
||||||
new ToggleExceptLiteralsAction(),
|
|
||||||
new ToggleExceptCommentsAndLiteralsAction()
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void saveInitialSelection() {
|
private void saveInitialSelection() {
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||||
package com.intellij.find;
|
package com.intellij.find;
|
||||||
|
|
||||||
import com.intellij.execution.runners.ExecutionUtil;
|
|
||||||
import com.intellij.find.editorHeaderActions.*;
|
import com.intellij.find.editorHeaderActions.*;
|
||||||
import com.intellij.icons.AllIcons;
|
import com.intellij.icons.AllIcons;
|
||||||
import com.intellij.ide.DataManager;
|
import com.intellij.ide.DataManager;
|
||||||
@@ -16,7 +15,6 @@ import com.intellij.openapi.project.DumbAwareAction;
|
|||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import com.intellij.openapi.ui.Splitter;
|
import com.intellij.openapi.ui.Splitter;
|
||||||
import com.intellij.openapi.ui.VerticalFlowLayout;
|
import com.intellij.openapi.ui.VerticalFlowLayout;
|
||||||
import com.intellij.openapi.util.BooleanGetter;
|
|
||||||
import com.intellij.openapi.util.NlsContexts;
|
import com.intellij.openapi.util.NlsContexts;
|
||||||
import com.intellij.openapi.util.SystemInfo;
|
import com.intellij.openapi.util.SystemInfo;
|
||||||
import com.intellij.openapi.util.registry.Registry;
|
import com.intellij.openapi.util.registry.Registry;
|
||||||
@@ -66,7 +64,6 @@ public final class SearchReplaceComponent extends EditorHeaderComponent implemen
|
|||||||
private final ActionToolbarImpl mySearchActionsToolbar;
|
private final ActionToolbarImpl mySearchActionsToolbar;
|
||||||
private final List<AnAction> myEmbeddedSearchActions = new ArrayList<>();
|
private final List<AnAction> myEmbeddedSearchActions = new ArrayList<>();
|
||||||
private final List<Component> myExtraSearchButtons = new ArrayList<>();
|
private final List<Component> myExtraSearchButtons = new ArrayList<>();
|
||||||
private final BooleanGetter mySearchToolbarModifiedFlagGetter;
|
|
||||||
|
|
||||||
private final DefaultActionGroup myReplaceFieldActions;
|
private final DefaultActionGroup myReplaceFieldActions;
|
||||||
private final ActionToolbarImpl myReplaceActionsToolbar;
|
private final ActionToolbarImpl myReplaceActionsToolbar;
|
||||||
@@ -101,7 +98,6 @@ public final class SearchReplaceComponent extends EditorHeaderComponent implemen
|
|||||||
private SearchReplaceComponent(@Nullable Project project,
|
private SearchReplaceComponent(@Nullable Project project,
|
||||||
@NotNull JComponent targetComponent,
|
@NotNull JComponent targetComponent,
|
||||||
@NotNull DefaultActionGroup searchToolbar1Actions,
|
@NotNull DefaultActionGroup searchToolbar1Actions,
|
||||||
@NotNull final BooleanGetter searchToolbar1ModifiedFlagGetter,
|
|
||||||
@NotNull DefaultActionGroup searchToolbar2Actions,
|
@NotNull DefaultActionGroup searchToolbar2Actions,
|
||||||
@NotNull DefaultActionGroup searchFieldActions,
|
@NotNull DefaultActionGroup searchFieldActions,
|
||||||
@NotNull DefaultActionGroup replaceToolbar1Actions,
|
@NotNull DefaultActionGroup replaceToolbar1Actions,
|
||||||
@@ -117,7 +113,6 @@ public final class SearchReplaceComponent extends EditorHeaderComponent implemen
|
|||||||
boolean useSearchField) {
|
boolean useSearchField) {
|
||||||
myProject = project;
|
myProject = project;
|
||||||
myTargetComponent = targetComponent;
|
myTargetComponent = targetComponent;
|
||||||
mySearchToolbarModifiedFlagGetter = searchToolbar1ModifiedFlagGetter;
|
|
||||||
mySearchFieldActions = searchFieldActions;
|
mySearchFieldActions = searchFieldActions;
|
||||||
myReplaceFieldActions = replaceFieldActions;
|
myReplaceFieldActions = replaceFieldActions;
|
||||||
myReplaceAction = replaceAction;
|
myReplaceAction = replaceAction;
|
||||||
@@ -180,7 +175,7 @@ public final class SearchReplaceComponent extends EditorHeaderComponent implemen
|
|||||||
searchToolbar1Actions.addAll(searchToolbar2Actions.getChildren(null));
|
searchToolbar1Actions.addAll(searchToolbar2Actions.getChildren(null));
|
||||||
replaceToolbar1Actions.addAll(replaceToolbar2Actions.getChildren(null));
|
replaceToolbar1Actions.addAll(replaceToolbar2Actions.getChildren(null));
|
||||||
|
|
||||||
mySearchActionsToolbar = createSearchToolbar1(searchToolbar1Actions);
|
mySearchActionsToolbar = createToolbar(searchToolbar1Actions);
|
||||||
mySearchActionsToolbar.setForceShowFirstComponent(true);
|
mySearchActionsToolbar.setForceShowFirstComponent(true);
|
||||||
JPanel searchPair = new NonOpaquePanel(new BorderLayout());
|
JPanel searchPair = new NonOpaquePanel(new BorderLayout());
|
||||||
searchPair.add(mySearchActionsToolbar, BorderLayout.CENTER);
|
searchPair.add(mySearchActionsToolbar, BorderLayout.CENTER);
|
||||||
@@ -630,31 +625,6 @@ public final class SearchReplaceComponent extends EditorHeaderComponent implemen
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
private ActionToolbarImpl createSearchToolbar1(@NotNull DefaultActionGroup group) {
|
|
||||||
ActionToolbarImpl toolbar = createToolbar(group);
|
|
||||||
toolbar.setSecondaryActionsTooltip(FindBundle.message("find.popup.show.filter.popup"));
|
|
||||||
toolbar.setSecondaryActionsIcon(AllIcons.General.Filter, true);
|
|
||||||
toolbar.setNoGapMode();
|
|
||||||
toolbar.setSecondaryButtonPopupStateModifier(new ActionToolbarImpl.SecondaryGroupUpdater() {
|
|
||||||
@Override
|
|
||||||
public void update(@NotNull AnActionEvent e) {
|
|
||||||
Icon icon = e.getPresentation().getIcon();
|
|
||||||
if (icon != null && mySearchToolbarModifiedFlagGetter.get()) {
|
|
||||||
e.getPresentation().setIcon(ExecutionUtil.getLiveIndicator(icon));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
KeyboardShortcut keyboardShortcut = ActionManager.getInstance().getKeyboardShortcut("ShowFilterPopup");
|
|
||||||
if (keyboardShortcut != null) {
|
|
||||||
toolbar.setSecondaryActionsShortcut(KeymapUtil.getShortcutText(keyboardShortcut));
|
|
||||||
}
|
|
||||||
|
|
||||||
new ShowMoreOptions(toolbar, mySearchFieldWrapper);
|
|
||||||
return toolbar;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private ActionToolbarImpl createReplaceToolbar1(@NotNull DefaultActionGroup group) {
|
private ActionToolbarImpl createReplaceToolbar1(@NotNull DefaultActionGroup group) {
|
||||||
ActionToolbarImpl toolbar = createToolbar(group);
|
ActionToolbarImpl toolbar = createToolbar(group);
|
||||||
@@ -694,7 +664,6 @@ public final class SearchReplaceComponent extends EditorHeaderComponent implemen
|
|||||||
private final DefaultActionGroup mySearchActions = DefaultActionGroup.createFlatGroup(() -> "search bar 1");
|
private final DefaultActionGroup mySearchActions = DefaultActionGroup.createFlatGroup(() -> "search bar 1");
|
||||||
private final DefaultActionGroup myExtraSearchActions = DefaultActionGroup.createFlatGroup(() -> "search bar 2");
|
private final DefaultActionGroup myExtraSearchActions = DefaultActionGroup.createFlatGroup(() -> "search bar 2");
|
||||||
private final DefaultActionGroup mySearchFieldActions = DefaultActionGroup.createFlatGroup(() -> "search field actions");
|
private final DefaultActionGroup mySearchFieldActions = DefaultActionGroup.createFlatGroup(() -> "search field actions");
|
||||||
private BooleanGetter mySearchToolbarModifiedFlagGetter = BooleanGetter.FALSE;
|
|
||||||
|
|
||||||
private final DefaultActionGroup myReplaceActions = DefaultActionGroup.createFlatGroup(() -> "replace bar 1");
|
private final DefaultActionGroup myReplaceActions = DefaultActionGroup.createFlatGroup(() -> "replace bar 1");
|
||||||
private final DefaultActionGroup myExtraReplaceActions = DefaultActionGroup.createFlatGroup(() -> "replace bar 1");
|
private final DefaultActionGroup myExtraReplaceActions = DefaultActionGroup.createFlatGroup(() -> "replace bar 1");
|
||||||
@@ -755,12 +724,6 @@ public final class SearchReplaceComponent extends EditorHeaderComponent implemen
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public Builder withSecondarySearchActionsIsModifiedGetter(@NotNull BooleanGetter getter) {
|
|
||||||
mySearchToolbarModifiedFlagGetter = getter;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public Builder addExtraSearchActions(AnAction @NotNull ... actions) {
|
public Builder addExtraSearchActions(AnAction @NotNull ... actions) {
|
||||||
myExtraSearchActions.addAll(actions);
|
myExtraSearchActions.addAll(actions);
|
||||||
@@ -796,7 +759,6 @@ public final class SearchReplaceComponent extends EditorHeaderComponent implemen
|
|||||||
return new SearchReplaceComponent(myProject,
|
return new SearchReplaceComponent(myProject,
|
||||||
myTargetComponent,
|
myTargetComponent,
|
||||||
mySearchActions,
|
mySearchActions,
|
||||||
mySearchToolbarModifiedFlagGetter,
|
|
||||||
myExtraSearchActions,
|
myExtraSearchActions,
|
||||||
mySearchFieldActions,
|
mySearchFieldActions,
|
||||||
myReplaceActions,
|
myReplaceActions,
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||||
|
package com.intellij.find.editorHeaderActions;
|
||||||
|
|
||||||
|
import com.intellij.execution.runners.ExecutionUtil;
|
||||||
|
import com.intellij.find.FindBundle;
|
||||||
|
import com.intellij.find.FindModel;
|
||||||
|
import com.intellij.find.SearchSession;
|
||||||
|
import com.intellij.icons.AllIcons;
|
||||||
|
import com.intellij.openapi.actionSystem.*;
|
||||||
|
import com.intellij.openapi.actionSystem.impl.ActionButton;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
|
||||||
|
public class ShowFilterPopupGroup extends DefaultActionGroup implements ShortcutProvider {
|
||||||
|
public ShowFilterPopupGroup() {
|
||||||
|
super(new ToggleAnywhereAction(),
|
||||||
|
new ToggleInCommentsAction(),
|
||||||
|
new ToggleInLiteralsOnlyAction(),
|
||||||
|
new ToggleExceptCommentsAction(),
|
||||||
|
new ToggleExceptLiteralsAction(),
|
||||||
|
new ToggleExceptCommentsAndLiteralsAction());
|
||||||
|
setPopup(true);
|
||||||
|
getTemplatePresentation().setText(FindBundle.message("find.popup.show.filter.popup"));
|
||||||
|
getTemplatePresentation().setIcon(AllIcons.General.Filter);
|
||||||
|
getTemplatePresentation().putClientProperty(ActionButton.HIDE_DROPDOWN_ICON, Boolean.TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(@NotNull AnActionEvent e) {
|
||||||
|
SearchSession session = e.getData(SearchSession.KEY);
|
||||||
|
if (session == null) {
|
||||||
|
e.getPresentation().setEnabled(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Icon icon = getTemplatePresentation().getIcon();
|
||||||
|
if (icon != null && session.getFindModel().getSearchContext() != FindModel.SearchContext.ANY) {
|
||||||
|
e.getPresentation().setIcon(ExecutionUtil.getLiveIndicator(icon));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
e.getPresentation().setIcon(icon);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable ShortcutSet getShortcut() {
|
||||||
|
KeyboardShortcut keyboardShortcut = ActionManager.getInstance().getKeyboardShortcut("ShowFilterPopup");
|
||||||
|
if (keyboardShortcut != null)
|
||||||
|
return new CustomShortcutSet(keyboardShortcut);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
|
||||||
package com.intellij.find.editorHeaderActions;
|
|
||||||
|
|
||||||
import com.intellij.ide.lightEdit.LightEditCompatible;
|
|
||||||
import com.intellij.openapi.actionSystem.ActionManager;
|
|
||||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
|
||||||
import com.intellij.openapi.actionSystem.CustomShortcutSet;
|
|
||||||
import com.intellij.openapi.actionSystem.KeyboardShortcut;
|
|
||||||
import com.intellij.openapi.actionSystem.impl.ActionButton;
|
|
||||||
import com.intellij.openapi.actionSystem.impl.ActionToolbarImpl;
|
|
||||||
import com.intellij.openapi.project.DumbAwareAction;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
import javax.swing.*;
|
|
||||||
|
|
||||||
public class ShowMoreOptions extends DumbAwareAction implements LightEditCompatible {
|
|
||||||
|
|
||||||
private final ActionToolbarImpl myToolbarComponent;
|
|
||||||
|
|
||||||
//placeholder for keymap
|
|
||||||
public ShowMoreOptions() {
|
|
||||||
myToolbarComponent = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ShowMoreOptions(ActionToolbarImpl toolbarComponent, JComponent shortcutHolder) {
|
|
||||||
this.myToolbarComponent = toolbarComponent;
|
|
||||||
KeyboardShortcut keyboardShortcut = ActionManager.getInstance().getKeyboardShortcut("ShowFilterPopup");
|
|
||||||
if (keyboardShortcut != null) {
|
|
||||||
registerCustomShortcutSet(new CustomShortcutSet(keyboardShortcut), shortcutHolder);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void actionPerformed(@NotNull AnActionEvent e) {
|
|
||||||
final ActionButton secondaryActions = myToolbarComponent.getSecondaryActionsButton();
|
|
||||||
if (secondaryActions != null) {
|
|
||||||
secondaryActions.click();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void update(@NotNull AnActionEvent e) {
|
|
||||||
e.getPresentation().setEnabled(myToolbarComponent != null && myToolbarComponent.getSecondaryActionsButton() != null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1289,7 +1289,7 @@
|
|||||||
|
|
||||||
<action id="CopySettingsPath" class="com.intellij.openapi.options.newEditor.CopySettingsPathAction"/>
|
<action id="CopySettingsPath" class="com.intellij.openapi.options.newEditor.CopySettingsPathAction"/>
|
||||||
|
|
||||||
<action id="ShowFilterPopup" class="com.intellij.find.editorHeaderActions.ShowMoreOptions"/>
|
<action id="ShowFilterPopup" class="com.intellij.find.editorHeaderActions.ShowFilterPopupGroup"/>
|
||||||
<action id="ShowSearchHistory" class="com.intellij.find.actions.ShowSearchHistoryAction"/>
|
<action id="ShowSearchHistory" class="com.intellij.find.actions.ShowSearchHistoryAction"/>
|
||||||
<action id="HidpiInfo" class="com.intellij.internal.HidpiInfo"/>
|
<action id="HidpiInfo" class="com.intellij.internal.HidpiInfo"/>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user