diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/TrafficProgressPanel.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/TrafficProgressPanel.java index d2c4d8a8d077..7cd2ea4e27a6 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/TrafficProgressPanel.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/TrafficProgressPanel.java @@ -29,7 +29,7 @@ import com.intellij.ui.components.panels.NonOpaquePanel; import com.intellij.ui.components.panels.VerticalBox; import com.intellij.ui.components.panels.Wrapper; import com.intellij.util.containers.HashMap; -import com.intellij.util.ui.AwtVisitor; +import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -201,26 +201,19 @@ class TrafficProgressPanel extends JPanel { } private void resetProgressBars(final boolean enabled, @Nullable final Boolean completed) { - new AwtVisitor(myPassStatuses) { - @Override - public boolean visit(Component component) { - if (component instanceof JProgressBar) { - JProgressBar progress = (JProgressBar)component; - progress.setEnabled(enabled); - if (completed != null) { - if (completed) { - progress.setValue(TrafficLightRenderer.MAX); - myProgressToText.get(progress).setText(MAX_TEXT); - } - else { - progress.setValue(0); - myProgressToText.get(progress).setText(MIN_TEXT); - } - } + for (JProgressBar progress : UIUtil.uiTraverser(myPassStatuses).traverse().filter(JProgressBar.class)) { + progress.setEnabled(enabled); + if (completed != null) { + if (completed) { + progress.setValue(TrafficLightRenderer.MAX); + myProgressToText.get(progress).setText(MAX_TEXT); + } + else { + progress.setValue(0); + myProgressToText.get(progress).setText(MIN_TEXT); } - return false; } - }; + } } private void rebuildPassesProgress(@NotNull TrafficLightRenderer.DaemonCodeAnalyzerStatus status) { diff --git a/platform/platform-api/src/com/intellij/openapi/ui/DialogWrapper.java b/platform/platform-api/src/com/intellij/openapi/ui/DialogWrapper.java index bfea932601da..67bfdcc348ae 100644 --- a/platform/platform-api/src/com/intellij/openapi/ui/DialogWrapper.java +++ b/platform/platform-api/src/com/intellij/openapi/ui/DialogWrapper.java @@ -48,7 +48,6 @@ import com.intellij.ui.components.JBScrollPane; import com.intellij.util.Alarm; import com.intellij.util.ArrayUtil; import com.intellij.util.TimeoutUtil; -import com.intellij.util.ui.AwtVisitor; import com.intellij.util.ui.DialogUtil; import com.intellij.util.ui.JBUI; import com.intellij.util.ui.UIUtil; @@ -898,32 +897,24 @@ public abstract class DialogWrapper { } public static void unregisterKeyboardActions(final JRootPane rootPane) { - new AwtVisitor(rootPane) { - @Override - public boolean visit(final Component component) { - if (component instanceof JComponent) { - final JComponent eachComp = (JComponent)component; - final ActionMap actionMap = eachComp.getActionMap(); - final KeyStroke[] strokes = eachComp.getRegisteredKeyStrokes(); - for (KeyStroke eachStroke : strokes) { - boolean remove = true; - if (actionMap != null) { - for (int i : new int[]{JComponent.WHEN_FOCUSED, JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, JComponent.WHEN_IN_FOCUSED_WINDOW}) { - final InputMap inputMap = eachComp.getInputMap(i); - final Object key = inputMap.get(eachStroke); - if (key != null) { - final Action action = actionMap.get(key); - if (action instanceof UIResource) remove = false; - } - } + for (JComponent eachComp : UIUtil.uiTraverser(rootPane).traverse().filter(JComponent.class)) { + ActionMap actionMap = eachComp.getActionMap(); + KeyStroke[] strokes = eachComp.getRegisteredKeyStrokes(); + for (KeyStroke eachStroke : strokes) { + boolean remove = true; + if (actionMap != null) { + for (int i : new int[]{JComponent.WHEN_FOCUSED, JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, JComponent.WHEN_IN_FOCUSED_WINDOW}) { + final InputMap inputMap = eachComp.getInputMap(i); + final Object key = inputMap.get(eachStroke); + if (key != null) { + final Action action = actionMap.get(key); + if (action instanceof UIResource) remove = false; } - - if (remove) eachComp.unregisterKeyboardAction(eachStroke); } } - return false; + if (remove) eachComp.unregisterKeyboardAction(eachStroke); } - }; + } } diff --git a/platform/platform-api/src/com/intellij/openapi/ui/SimpleToolWindowPanel.java b/platform/platform-api/src/com/intellij/openapi/ui/SimpleToolWindowPanel.java index 6e5af8a92fb2..0d7b5777180a 100644 --- a/platform/platform-api/src/com/intellij/openapi/ui/SimpleToolWindowPanel.java +++ b/platform/platform-api/src/com/intellij/openapi/ui/SimpleToolWindowPanel.java @@ -18,9 +18,7 @@ package com.intellij.openapi.ui; import com.intellij.openapi.actionSystem.ActionToolbar; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.DataProvider; -import com.intellij.openapi.util.Ref; import com.intellij.ui.switcher.QuickActionProvider; -import com.intellij.util.ui.AwtVisitor; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.Nullable; @@ -107,25 +105,8 @@ public class SimpleToolWindowPanel extends JPanel implements QuickActionProvider } public List getActions(boolean originalProvider) { - final Ref toolbar = new Ref(); - if (myToolbar != null) { - new AwtVisitor(myToolbar) { - @Override - public boolean visit(Component component) { - if (component instanceof ActionToolbar) { - toolbar.set((ActionToolbar)component); - return true; - } - return false; - } - }; - } - - if (toolbar.get() != null) { - return toolbar.get().getActions(originalProvider); - } - - return null; + ActionToolbar toolbar = UIUtil.uiTraverser(myToolbar).traverse().filter(ActionToolbar.class).first(); + return toolbar == null ? null : toolbar.getActions(originalProvider); } public JComponent getComponent() { diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorTabbedContainer.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorTabbedContainer.java index c1b7506e4d3f..84ea8b1be8f0 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorTabbedContainer.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorTabbedContainer.java @@ -58,7 +58,6 @@ import com.intellij.ui.tabs.impl.JBEditorTabs; import com.intellij.ui.tabs.impl.JBTabsImpl; import com.intellij.util.BitUtil; import com.intellij.util.Consumer; -import com.intellij.util.ui.AwtVisitor; import com.intellij.util.ui.JBUI; import com.intellij.util.ui.TimedDeadzone; import com.intellij.util.ui.UIUtil; @@ -74,7 +73,6 @@ import java.awt.datatransfer.Transferable; import java.awt.event.InputEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; -import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -581,43 +579,26 @@ public final class EditorTabbedContainer implements Disposable, CloseAction.Clos private class MySwitchProvider implements SwitchProvider { @Override public List getTargets(final boolean onlyVisible, boolean originalProvider) { - final ArrayList result = new ArrayList(); TabInfo selected = myTabs.getSelectedInfo(); - new AwtVisitor(selected.getComponent()) { - @Override - public boolean visit(Component component) { - if (component instanceof JBTabs) { - JBTabs tabs = (JBTabs)component; - if (tabs != myTabs) { - result.addAll(tabs.getTargets(onlyVisible, false)); - return true; - } - } - return false; - } - }; - return result; + if (selected == null) return null; + return UIUtil.uiTraverser(selected.getComponent()) + .traverse() + .filter(JBTabs.class) + .filter(Conditions.notEqualTo(myTabs)) + .flatten(o -> o.getTargets(onlyVisible, false)) + .toList(); } @Override public SwitchTarget getCurrentTarget() { TabInfo selected = myTabs.getSelectedInfo(); - final Ref targetRef = new Ref(); - new AwtVisitor(selected.getComponent()) { - @Override - public boolean visit(Component component) { - if (component instanceof JBTabs) { - JBTabs tabs = (JBTabs)component; - if (tabs != myTabs) { - targetRef.set(tabs.getCurrentTarget()); - return true; - } - } - return false; - } - }; - - return targetRef.get(); + if (selected == null) return null; + JBTabs tabs = UIUtil.uiTraverser(selected.getComponent()) + .traverse() + .filter(JBTabs.class) + .filter(Conditions.notEqualTo(myTabs)) + .first(); + return tabs == null ? null : tabs.getCurrentTarget(); } @Override diff --git a/platform/platform-impl/src/com/intellij/ui/BalloonImpl.java b/platform/platform-impl/src/com/intellij/ui/BalloonImpl.java index 210165dfc398..76a328923ccb 100644 --- a/platform/platform-impl/src/com/intellij/ui/BalloonImpl.java +++ b/platform/platform-impl/src/com/intellij/ui/BalloonImpl.java @@ -339,26 +339,22 @@ public class BalloonImpl implements Balloon, IdeTooltip.Ui { MnemonicHelper.init(content); if (!myDialogMode) { - new AwtVisitor(content) { - @Override - public boolean visit(Component component) { - if (component instanceof JLabel) { - JLabel label = (JLabel)component; - if (label.getDisplayedMnemonic() != '\0' || label.getDisplayedMnemonicIndex() >= 0) { - myDialogMode = true; - return true; - } + for (Component component : UIUtil.uiTraverser(myContent)) { + if (component instanceof JLabel) { + JLabel label = (JLabel)component; + if (label.getDisplayedMnemonic() != '\0' || label.getDisplayedMnemonicIndex() >= 0) { + myDialogMode = true; + break; } - else if (component instanceof JCheckBox) { - JCheckBox checkBox = (JCheckBox)component; - if (checkBox.getMnemonic() >= 0 || checkBox.getDisplayedMnemonicIndex() >= 0) { - myDialogMode = true; - return true; - } - } - return false; } - }; + else if (component instanceof JCheckBox) { + JCheckBox checkBox = (JCheckBox)component; + if (checkBox.getMnemonic() >= 0 || checkBox.getDisplayedMnemonicIndex() >= 0) { + myDialogMode = true; + break; + } + } + } } myShadow = shadow; @@ -369,13 +365,9 @@ public class BalloonImpl implements Balloon, IdeTooltip.Ui { myAnimationCycle = animationCycle; if (smallVariant) { - new AwtVisitor(myContent) { - @Override - public boolean visit(Component component) { - UIUtil.applyStyle(UIUtil.ComponentStyle.SMALL, component); - return false; - } - }; + for (Component component : UIUtil.uiTraverser(myContent)) { + UIUtil.applyStyle(UIUtil.ComponentStyle.SMALL, component); + } } } @@ -584,19 +576,9 @@ public class BalloonImpl implements Balloon, IdeTooltip.Ui { } if (myHideOnLinkClick) { - final Ref ref = Ref.create(null); - new AwtVisitor(myContent) { - @Override - public boolean visit(Component component) { - if (component instanceof JEditorPane) { - ref.set((JEditorPane)component); - return true; - } - return false; - } - }; - if (!ref.isNull()) { - ref.get().addHyperlinkListener(new HyperlinkAdapter() { + JEditorPane editorPane = UIUtil.uiTraverser(myContent).traverse().filter(JEditorPane.class).first(); + if (editorPane != null) { + editorPane.addHyperlinkListener(new HyperlinkAdapter() { @Override protected void hyperlinkActivated(HyperlinkEvent e) { hide(); diff --git a/platform/platform-impl/src/com/intellij/ui/HintHint.java b/platform/platform-impl/src/com/intellij/ui/HintHint.java index 2291d586c284..f1b0dcc68e6d 100644 --- a/platform/platform-impl/src/com/intellij/ui/HintHint.java +++ b/platform/platform-impl/src/com/intellij/ui/HintHint.java @@ -19,7 +19,7 @@ import com.intellij.ide.IdeTooltipManager; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.ui.popup.Balloon; import com.intellij.ui.awt.RelativePoint; -import com.intellij.util.ui.AwtVisitor; +import com.intellij.util.ui.UIUtil; import javax.swing.*; import java.awt.*; @@ -171,14 +171,11 @@ public class HintHint { public void initStyle(Component c, boolean includeChildren) { if (includeChildren) { - new AwtVisitor(c) { - @Override - public boolean visit(Component component) { - doInit(component); - return false; - } - }; - } else { + for (Component component : UIUtil.uiTraverser(c)) { + doInit(component); + } + } + else { doInit(c); } } diff --git a/platform/platform-impl/src/com/intellij/ui/switcher/QuickAccessConfigurable.java b/platform/platform-impl/src/com/intellij/ui/switcher/QuickAccessConfigurable.java index 559653d0c6e9..bae4db41f7df 100644 --- a/platform/platform-impl/src/com/intellij/ui/switcher/QuickAccessConfigurable.java +++ b/platform/platform-impl/src/com/intellij/ui/switcher/QuickAccessConfigurable.java @@ -26,7 +26,7 @@ import com.intellij.ui.DocumentAdapter; import com.intellij.ui.IdeBorderFactory; import com.intellij.ui.SeparatorWithText; import com.intellij.ui.components.panels.VerticalBox; -import com.intellij.util.ui.AwtVisitor; +import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; @@ -299,15 +299,11 @@ public class QuickAccessConfigurable extends JPanel implements SearchableConfigu } private void processEnabled() { - new AwtVisitor(this) { - @Override - public boolean visit(Component component) { - if (component != myEnabled) { - component.setEnabled(myQaEnabled); - } - return false; + for (Component component : UIUtil.uiTraverser(this)) { + if (component != myEnabled) { + component.setEnabled(myQaEnabled); } - }; + } } private class ModifierBox extends JCheckBox { diff --git a/platform/util/src/com/intellij/util/ui/AwtVisitor.java b/platform/util/src/com/intellij/util/ui/AwtVisitor.java deleted file mode 100644 index 65a8c03e1756..000000000000 --- a/platform/util/src/com/intellij/util/ui/AwtVisitor.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2000-2009 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.intellij.util.ui; - -import java.awt.*; - -/** - * AWT components hierarchy visitor - * - * @author spleaner - */ -public abstract class AwtVisitor { - - protected AwtVisitor(Component component) { - _accept(component); - } - - private boolean _accept(Component component) { - boolean shouldStop = visit(component); - if (shouldStop) return shouldStop; - - if (component instanceof Container) { - Component[] kids = ((Container) component).getComponents(); - for (Component each : kids) { - shouldStop = _accept(each); - if (shouldStop) return shouldStop; - } - } - - return false; - } - - public abstract boolean visit(Component component); - -}