mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-10-06 06:21:16 +07:00
AwtVisitor -> uiTraverser()
This commit is contained in:
+12
-19
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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<AnAction> getActions(boolean originalProvider) {
|
||||
final Ref<ActionToolbar> toolbar = new Ref<ActionToolbar>();
|
||||
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() {
|
||||
|
||||
+14
-33
@@ -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<SwitchTarget> getTargets(final boolean onlyVisible, boolean originalProvider) {
|
||||
final ArrayList<SwitchTarget> result = new ArrayList<SwitchTarget>();
|
||||
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<SwitchTarget> targetRef = new Ref<SwitchTarget>();
|
||||
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
|
||||
|
||||
@@ -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<JEditorPane> 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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user