diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/impl/DebuggerTreePanel.java b/java/debugger/impl/src/com/intellij/debugger/ui/impl/DebuggerTreePanel.java index 0ec5ab38d765..45c7a25da770 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/impl/DebuggerTreePanel.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/impl/DebuggerTreePanel.java @@ -60,7 +60,7 @@ public abstract class DebuggerTreePanel extends UpdatableDebuggerView implements setFocusTraversalPolicy(new IdeFocusTraversalPolicy() { @Override - public Component getDefaultComponentImpl(Container focusCycleRoot) { + public Component getDefaultComponent(Container focusCycleRoot) { return myTree; } }); diff --git a/platform/diff-impl/src/com/intellij/diff/impl/DiffRequestProcessor.java b/platform/diff-impl/src/com/intellij/diff/impl/DiffRequestProcessor.java index d6adb1914c2d..5fb6c94c3993 100644 --- a/platform/diff-impl/src/com/intellij/diff/impl/DiffRequestProcessor.java +++ b/platform/diff-impl/src/com/intellij/diff/impl/DiffRequestProcessor.java @@ -998,7 +998,7 @@ public abstract class DiffRequestProcessor implements Disposable { private class MyFocusTraversalPolicy extends IdeFocusTraversalPolicy { @Override - public final Component getDefaultComponentImpl(final Container focusCycleRoot) { + public final Component getDefaultComponent(final Container focusCycleRoot) { JComponent component = DiffRequestProcessor.this.getPreferredFocusedComponent(); if (component == null) return null; return IdeFocusTraversalPolicy.getPreferredFocusedComponent(component, this); diff --git a/platform/diff-impl/src/com/intellij/diff/merge/MergeRequestProcessor.java b/platform/diff-impl/src/com/intellij/diff/merge/MergeRequestProcessor.java index e8d8d8e8b601..c548de986665 100644 --- a/platform/diff-impl/src/com/intellij/diff/merge/MergeRequestProcessor.java +++ b/platform/diff-impl/src/com/intellij/diff/merge/MergeRequestProcessor.java @@ -541,7 +541,7 @@ public abstract class MergeRequestProcessor implements Disposable { private class MyFocusTraversalPolicy extends IdeFocusTraversalPolicy { @Override - public final Component getDefaultComponentImpl(final Container focusCycleRoot) { + public final Component getDefaultComponent(final Container focusCycleRoot) { JComponent component = MergeRequestProcessor.this.getPreferredFocusedComponent(); if (component == null) return null; return IdeFocusTraversalPolicy.getPreferredFocusedComponent(component, this); diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorsSplitters.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorsSplitters.java index 0b6aa9ffaea2..0c4be2be9d4d 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorsSplitters.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorsSplitters.java @@ -557,7 +557,7 @@ public class EditorsSplitters extends IdePanePanel implements UISettingsListener private final class MyFocusTraversalPolicy extends IdeFocusTraversalPolicy { @Override - public final Component getDefaultComponentImpl(final Container focusCycleRoot) { + public final Component getDefaultComponent(final Container focusCycleRoot) { if (myCurrentWindow != null) { final EditorWithProviderComposite selectedEditor = myCurrentWindow.getSelectedEditor(); if (selectedEditor != null) { diff --git a/platform/platform-impl/src/com/intellij/openapi/ui/FrameWrapper.java b/platform/platform-impl/src/com/intellij/openapi/ui/FrameWrapper.java index 9077aadfe5e4..0f2e528fac7c 100644 --- a/platform/platform-impl/src/com/intellij/openapi/ui/FrameWrapper.java +++ b/platform/platform-impl/src/com/intellij/openapi/ui/FrameWrapper.java @@ -20,7 +20,6 @@ import com.intellij.openapi.util.WindowStateService; import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.wm.*; import com.intellij.openapi.wm.ex.IdeFrameEx; -import com.intellij.openapi.wm.ex.LayoutFocusTraversalPolicyExt; import com.intellij.openapi.wm.ex.WindowManagerEx; import com.intellij.openapi.wm.impl.IdeFrameDecorator; import com.intellij.openapi.wm.impl.IdeGlassPaneImpl; @@ -375,7 +374,7 @@ public class FrameWrapper implements Disposable, DataProvider { } MouseGestureManager.getInstance().add(this); - setFocusTraversalPolicy(new LayoutFocusTraversalPolicyExt()); + setFocusTraversalPolicy(new LayoutFocusTraversalPolicy()); } @Override @@ -488,7 +487,7 @@ public class FrameWrapper implements Disposable, DataProvider { getRootPane().putClientProperty("Window.style", "small"); setBackground(UIUtil.getPanelBackground()); MouseGestureManager.getInstance().add(this); - setFocusTraversalPolicy(new LayoutFocusTraversalPolicyExt()); + setFocusTraversalPolicy(new LayoutFocusTraversalPolicy()); } @Override diff --git a/platform/platform-impl/src/com/intellij/openapi/ui/impl/DialogWrapperPeerImpl.java b/platform/platform-impl/src/com/intellij/openapi/ui/impl/DialogWrapperPeerImpl.java index 814c18ac28a1..e1604fcc1654 100644 --- a/platform/platform-impl/src/com/intellij/openapi/ui/impl/DialogWrapperPeerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/ui/impl/DialogWrapperPeerImpl.java @@ -27,7 +27,6 @@ import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.openapi.wm.IdeFrame; import com.intellij.openapi.wm.WindowManager; -import com.intellij.openapi.wm.ex.LayoutFocusTraversalPolicyExt; import com.intellij.openapi.wm.ex.WindowManagerEx; import com.intellij.openapi.wm.impl.IdeFrameDecorator; import com.intellij.openapi.wm.impl.IdeFrameImpl; @@ -531,9 +530,9 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer { myDialogWrapper = new WeakReference<>(dialogWrapper); myProject = project != null ? new WeakReference<>(project) : null; - setFocusTraversalPolicy(new LayoutFocusTraversalPolicyExt() { + setFocusTraversalPolicy(new LayoutFocusTraversalPolicy() { @Override - protected boolean accept(Component aComponent) { + public boolean accept(Component aComponent) { if (UIUtil.isFocusProxy(aComponent)) return false; return super.accept(aComponent); } diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/ex/IdeFocusTraversalPolicy.java b/platform/platform-impl/src/com/intellij/openapi/wm/ex/IdeFocusTraversalPolicy.java index a2dd7a6a2816..bc8846a7880d 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/ex/IdeFocusTraversalPolicy.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/ex/IdeFocusTraversalPolicy.java @@ -11,11 +11,11 @@ import javax.swing.*; import javax.swing.text.JTextComponent; import java.awt.*; -public class IdeFocusTraversalPolicy extends LayoutFocusTraversalPolicyExt { +public class IdeFocusTraversalPolicy extends LayoutFocusTraversalPolicy { private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.wm.ex.IdeFocusTraversalPolicy"); @Override - protected Component getDefaultComponentImpl(Container focusCycleRoot) { + public Component getDefaultComponent(Container focusCycleRoot) { if (!(focusCycleRoot instanceof JComponent)) { return super.getDefaultComponent(focusCycleRoot); } @@ -43,13 +43,7 @@ public class IdeFocusTraversalPolicy extends LayoutFocusTraversalPolicyExt { return component; } - Component defaultComponent; - if (focusTraversalPolicy instanceof LayoutFocusTraversalPolicyExt) { - final LayoutFocusTraversalPolicyExt extPolicy = (LayoutFocusTraversalPolicyExt)focusTraversalPolicy; - defaultComponent = extPolicy.queryImpl(() -> extPolicy.getDefaultComponent(component)); - } else { - defaultComponent = focusTraversalPolicy.getDefaultComponent(component); - } + Component defaultComponent = focusTraversalPolicy.getDefaultComponent(component); if (defaultComponent instanceof JComponent) { return (JComponent)defaultComponent; diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/ex/LayoutFocusTraversalPolicyExt.java b/platform/platform-impl/src/com/intellij/openapi/wm/ex/LayoutFocusTraversalPolicyExt.java deleted file mode 100644 index 1f00976abe9a..000000000000 --- a/platform/platform-impl/src/com/intellij/openapi/wm/ex/LayoutFocusTraversalPolicyExt.java +++ /dev/null @@ -1,162 +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.openapi.wm.ex; - -import com.intellij.openapi.util.Computable; -import com.intellij.openapi.util.registry.Registry; -import com.intellij.util.ui.UIUtil; -import org.jetbrains.annotations.Nullable; - -import javax.swing.*; -import java.awt.*; - -/** - * @author Vladimir Kondratyev - */ -public class LayoutFocusTraversalPolicyExt extends LayoutFocusTraversalPolicy{ - /** - * Overriden default component - */ - private static JComponent myOverridenDefaultComponent; - - private boolean myNoDefaultComponent; - private Object myNoDefaultComponentRequestor; - - private boolean myQueryImpl = false; - - public void setNoDefaultComponent(boolean noDefaultComponent, Object requestor) { - if (noDefaultComponent) { - myNoDefaultComponent = noDefaultComponent; - myNoDefaultComponentRequestor = requestor; - } else { - if (myNoDefaultComponentRequestor == requestor) { - myNoDefaultComponent = false; - myNoDefaultComponentRequestor = null; - } - } - } - - public boolean isNoDefaultComponent() { - if (myQueryImpl) return false; - - return myNoDefaultComponent || Registry.is("actionSystem.noDefaultComponent", true); - } - - @Nullable - public static LayoutFocusTraversalPolicyExt findWindowPolicy(Component c) { - Window wnd = UIUtil.getWindow(c); - - final FocusTraversalPolicy policy = wnd.getFocusTraversalPolicy(); - if (policy instanceof LayoutFocusTraversalPolicyExt) { - return (LayoutFocusTraversalPolicyExt)policy; - } else { - return null; - } - } - - /** - * !!!!! CAUTION !!!!! - * !!!!! CAUTION !!!!! - * !!!!! CAUTION !!!!! - * - * THIS IS AN "ABSOLUTELY-GURU METHOD". - * NOBODY SHOULD ADD OTHER USAGES OF IT :) - * ONLY ANTON AND VOVA ARE PERMITTED TO USE THIS METHOD!!! - * - * !!!!! CAUTION !!!!! - * !!!!! CAUTION !!!!! - * !!!!! CAUTION !!!!! - * - * This is absolutely guru method. Please do not use it without deep understanding - * of Swing concepts, especially Swing focus management. do not forget to clear - * this "overiden" component! - */ - public static void setOverridenDefaultComponent(final JComponent overridenDefaultComponent) { - myOverridenDefaultComponent = overridenDefaultComponent; - } - - @Override - public final Component getDefaultComponent(final Container focusCycleRoot) { - if (isNoDefaultComponent()) return null; - - if (myOverridenDefaultComponent != null) { - return myOverridenDefaultComponent; - } - return getDefaultComponentImpl(focusCycleRoot); - } - - protected Component getDefaultComponentImpl(final Container focusCycleRoot) { - return super.getDefaultComponent(focusCycleRoot); - } - - @Override - public Component getFirstComponent(final Container focusCycleRoot) { - if (myOverridenDefaultComponent != null) { - return myOverridenDefaultComponent; - } - return getFirstComponentImpl(focusCycleRoot); - } - - protected Component getFirstComponentImpl(final Container focusCycleRoot) { - return super.getFirstComponent(focusCycleRoot); - } - - @Override - public Component getLastComponent(final Container focusCycleRoot) { - if (myOverridenDefaultComponent != null) { - return myOverridenDefaultComponent; - } - return getLastComponentImpl(focusCycleRoot); - } - - protected Component getLastComponentImpl(final Container focusCycleRoot) { - return super.getLastComponent(focusCycleRoot); - } - - @Override - public Component getComponentAfter(final Container focusCycleRoot, final Component aComponent) { - if (myOverridenDefaultComponent != null) { - return myOverridenDefaultComponent; - } - return getComponentAfterImpl(focusCycleRoot, aComponent); - } - - protected Component getComponentAfterImpl(final Container focusCycleRoot, final Component aComponent) { - return super.getComponentAfter(focusCycleRoot, aComponent); - } - - @Override - public Component getComponentBefore(final Container focusCycleRoot, final Component aComponent) { - if (myOverridenDefaultComponent != null) { - return myOverridenDefaultComponent; - } - return getComponentBeforeImpl(focusCycleRoot, aComponent); - } - - @Override - public Component getInitialComponent(JInternalFrame frame) { - if (isNoDefaultComponent()) return null; - - return super.getInitialComponent(frame); - } - - @Override - public Component getInitialComponent(Window window) { - if (isNoDefaultComponent()) return null; - - return super.getInitialComponent(window); - } - - protected Component getComponentBeforeImpl(final Container focusCycleRoot, final Component aComponent) { - return super.getComponentBefore(focusCycleRoot, aComponent); - } - - public Component queryImpl(Computable runnable) { - try { - myQueryImpl = true; - return runnable.compute(); - } - finally { - myQueryImpl = false; - } - } -} diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/ProjectFrameHelper.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/ProjectFrameHelper.java index f22548d6d997..e9b85dce535c 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/ProjectFrameHelper.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/ProjectFrameHelper.java @@ -22,7 +22,6 @@ import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.wm.*; import com.intellij.openapi.wm.ex.IdeFrameEx; -import com.intellij.openapi.wm.ex.LayoutFocusTraversalPolicyExt; import com.intellij.openapi.wm.ex.ToolWindowManagerEx; import com.intellij.openapi.wm.ex.WindowManagerEx; import com.intellij.openapi.wm.impl.status.*; @@ -186,7 +185,7 @@ public final class ProjectFrameHelper implements IdeFrameEx, AccessibleContextAc MnemonicHelper.init(myFrame); - myFrame.setFocusTraversalPolicy(new MyLayoutFocusTraversalPolicyExt()); + myFrame.setFocusTraversalPolicy(new LayoutFocusTraversalPolicy()); // to show window thumbnail under Macs // http://lists.apple.com/archives/java-dev/2009/Dec/msg00240.html @@ -579,42 +578,4 @@ public final class ProjectFrameHelper implements IdeFrameEx, AccessibleContextAc } return false; } - - private final class MyLayoutFocusTraversalPolicyExt extends LayoutFocusTraversalPolicyExt { - @Override - protected Component getDefaultComponentImpl(Container focusCycleRoot) { - Component component = findNextFocusComponent(); - return component == null ? super.getDefaultComponentImpl(focusCycleRoot) : component; - } - - @Override - protected Component getFirstComponentImpl(Container focusCycleRoot) { - Component component = findNextFocusComponent(); - return component == null ? super.getFirstComponentImpl(focusCycleRoot) : component; - } - - @Override - protected Component getLastComponentImpl(Container focusCycleRoot) { - Component component = findNextFocusComponent(); - return component == null ? super.getLastComponentImpl(focusCycleRoot) : component; - } - - @Override - protected Component getComponentAfterImpl(Container focusCycleRoot, Component aComponent) { - Component component = findNextFocusComponent(); - return component == null ? super.getComponentAfterImpl(focusCycleRoot, aComponent) : component; - } - - @Override - public Component getInitialComponent(Window window) { - Component component = findNextFocusComponent(); - return component == null ? super.getInitialComponent(window) : component; - } - - @Override - protected Component getComponentBeforeImpl(Container focusCycleRoot, Component aComponent) { - Component component = findNextFocusComponent(); - return component == null ? super.getComponentBeforeImpl(focusCycleRoot, aComponent) : component; - } - } } \ No newline at end of file diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowsPane.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowsPane.java index a7618ebc1616..c2ba8c500142 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowsPane.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowsPane.java @@ -17,7 +17,6 @@ import com.intellij.openapi.util.registry.RegistryValueListener; import com.intellij.openapi.wm.ToolWindow; import com.intellij.openapi.wm.ToolWindowAnchor; import com.intellij.openapi.wm.ToolWindowType; -import com.intellij.openapi.wm.ex.LayoutFocusTraversalPolicyExt; import com.intellij.openapi.wm.impl.commands.FinalizableCommand; import com.intellij.reference.SoftReference; import com.intellij.ui.OnePixelSplitter; @@ -145,7 +144,7 @@ public final class ToolWindowsPane extends JBLayeredPane implements UISettingsLi add(myRightStripe, JLayeredPane.POPUP_LAYER); add(myLayeredPane, JLayeredPane.DEFAULT_LAYER); - setFocusTraversalPolicy(new LayoutFocusTraversalPolicyExt()); + setFocusTraversalPolicy(new LayoutFocusTraversalPolicy()); } private void updateInnerMinSize(@NotNull RegistryValue value) { diff --git a/platform/platform-impl/src/com/intellij/ui/LightweightHint.java b/platform/platform-impl/src/com/intellij/ui/LightweightHint.java index 745adcc56a90..e9e5d0fa93db 100644 --- a/platform/platform-impl/src/com/intellij/ui/LightweightHint.java +++ b/platform/platform-impl/src/com/intellij/ui/LightweightHint.java @@ -12,7 +12,6 @@ import com.intellij.openapi.ui.popup.JBPopupFactory; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.UserDataHolderBase; import com.intellij.openapi.util.registry.Registry; -import com.intellij.openapi.wm.ex.LayoutFocusTraversalPolicyExt; import com.intellij.ui.awt.RelativePoint; import com.intellij.ui.components.panels.OpaquePanel; import org.jetbrains.annotations.NotNull; @@ -360,14 +359,9 @@ public class LightweightHint extends UserDataHolderBase implements Hint { if (layeredPane != null) { Rectangle bounds = myComponent.getBounds(); try { - if (myFocusBackComponent != null) { - LayoutFocusTraversalPolicyExt.setOverridenDefaultComponent(myFocusBackComponent); - } layeredPane.remove(myComponent); } - finally { - LayoutFocusTraversalPolicyExt.setOverridenDefaultComponent(null); - } + finally {} layeredPane.paintImmediately(bounds.x, bounds.y, bounds.width, bounds.height); } diff --git a/platform/platform-impl/src/com/intellij/ui/TabbedPaneWrapper.java b/platform/platform-impl/src/com/intellij/ui/TabbedPaneWrapper.java index 424d3ecdc6eb..dd34522bc601 100644 --- a/platform/platform-impl/src/com/intellij/ui/TabbedPaneWrapper.java +++ b/platform/platform-impl/src/com/intellij/ui/TabbedPaneWrapper.java @@ -409,12 +409,7 @@ public class TabbedPaneWrapper { private final class _MyFocusTraversalPolicy extends IdeFocusTraversalPolicy{ @Override - public boolean isNoDefaultComponent() { - return false; - } - - @Override - public final Component getDefaultComponentImpl(final Container focusCycleRoot) { + public final Component getDefaultComponent(final Container focusCycleRoot) { final JComponent component=getSelectedComponent(); return component == null ? null : IdeFocusTraversalPolicy.getPreferredFocusedComponent(component, this); } diff --git a/plugins/ui-designer-core/src/com/intellij/designer/designSurface/InplaceEditingLayer.java b/plugins/ui-designer-core/src/com/intellij/designer/designSurface/InplaceEditingLayer.java index bf684651fe4f..2a20ecf889cc 100644 --- a/plugins/ui-designer-core/src/com/intellij/designer/designSurface/InplaceEditingLayer.java +++ b/plugins/ui-designer-core/src/com/intellij/designer/designSurface/InplaceEditingLayer.java @@ -17,7 +17,6 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.wm.FocusWatcher; import com.intellij.openapi.wm.ex.IdeFocusTraversalPolicy; -import com.intellij.openapi.wm.ex.LayoutFocusTraversalPolicyExt; import com.intellij.uiDesigner.core.GridConstraints; import com.intellij.uiDesigner.core.GridLayoutManager; import org.jetbrains.annotations.NotNull; @@ -230,17 +229,7 @@ public class InplaceEditingLayer extends JComponent { } private void removeInplaceComponent() { - // [vova] before removing component from Swing tree we have to - // request component into glass layer. Otherwise focus from component being removed - // can go to some RadComponent. - - LayoutFocusTraversalPolicyExt.setOverridenDefaultComponent(myDesigner.getPreferredFocusedComponent()); - try { - remove(myInplaceComponent); - } - finally { - LayoutFocusTraversalPolicyExt.setOverridenDefaultComponent(null); - } + remove(myInplaceComponent); } /** diff --git a/plugins/ui-designer/src/com/intellij/uiDesigner/designSurface/InplaceEditingLayer.java b/plugins/ui-designer/src/com/intellij/uiDesigner/designSurface/InplaceEditingLayer.java index 613f587ccbbf..fa0bbbebebe3 100644 --- a/plugins/ui-designer/src/com/intellij/uiDesigner/designSurface/InplaceEditingLayer.java +++ b/plugins/ui-designer/src/com/intellij/uiDesigner/designSurface/InplaceEditingLayer.java @@ -7,7 +7,6 @@ import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.wm.FocusWatcher; import com.intellij.openapi.wm.ex.IdeFocusTraversalPolicy; -import com.intellij.openapi.wm.ex.LayoutFocusTraversalPolicyExt; import com.intellij.uiDesigner.FormEditingUtil; import com.intellij.uiDesigner.UIDesignerBundle; import com.intellij.uiDesigner.componentTree.ComponentSelectionListener; @@ -301,17 +300,7 @@ public final class InplaceEditingLayer extends JComponent{ } private void removeInplaceEditorComponent() { - // [vova] before removing component from Swing tree we have to - // request component into glass layer. Otherwise focus from component being removed - // can go to some RadComponent. - - LayoutFocusTraversalPolicyExt.setOverridenDefaultComponent(myEditor.getGlassLayer()); - try { - remove(myInplaceEditorComponent); - } - finally { - LayoutFocusTraversalPolicyExt.setOverridenDefaultComponent(null); - } + remove(myInplaceEditorComponent); } /**