From 0fdec399d588e2c5dda7d06b7a4251794a72f55e Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Mon, 17 Dec 2018 13:17:03 +0300 Subject: [PATCH] cleanup --- .../picocontainer/defaults/annotations.xml | 12 + .../openapi/actionSystem/ActionManager.java | 16 +- .../openapi/actionSystem/ActionToolbar.java | 3 +- .../actionSystem/ex/AnActionListener.java | 4 +- .../editor/event/EditorMouseEvent.java | 4 +- .../EPAvailabilityListenerExtension.java | 8 +- .../extensions/impl/ExtensionsAreaImpl.java | 93 +++----- ...gConstructorInjectionComponentAdapter.java | 33 +-- .../impl/ExtensionPointImplTest.java | 2 +- .../impl/ExtensionsComplexTest.java | 9 +- .../extensions/impl/ExtensionsImplTest.java | 18 +- .../codeInsight/AutoPopupController.java | 2 +- .../codeInsight/completion/ActionTracker.java | 2 +- .../daemon/impl/DaemonListeners.java | 2 +- .../documentation/DocumentationManager.java | 2 +- .../highlighting/HighlightManagerImpl.java | 2 +- .../intellij/find/SearchReplaceComponent.java | 1 + .../ide/actions/SearchEverywhereAction.java | 2 +- .../ide/navigationToolbar/NavBarListener.java | 4 +- .../ui/debugger/extensions/ActionTracer.java | 2 +- .../actionSystem/ex/ActionManagerEx.java | 16 +- .../ex/ActionPopupMenuListener.java | 2 - .../codeInsight/hint/HintManagerImpl.java | 2 +- .../com/intellij/ide/IdeTooltipManager.java | 2 +- .../ide/actionMacro/ActionMacroManager.java | 2 +- .../intellij/ide/impl/DataManagerImpl.java | 1 + ...tensionUsagesCollectorStartupActivity.java | 2 +- .../actionSystem/impl/ActionButton.java | 74 +++--- .../actionSystem/impl/ActionManagerImpl.java | 222 ++++++++---------- .../actionSystem/impl/ActionToolbarImpl.java | 206 +++++++--------- .../actionSystem/impl/ButtonToolbarImpl.java | 27 +-- .../impl/EditorLastActionTrackerImpl.java | 4 +- .../impl/ModifierKeyDoubleClickHandler.java | 2 +- .../options/newEditor/ConfigurableEditor.java | 4 +- .../ui/playback/commands/ActionCommand.java | 2 +- .../wm/impl/ToolWindowManagerImpl.java | 2 +- .../src/com/intellij/ui/BalloonImpl.java | 2 +- .../impl/LogActionsDuringTest.kt | 2 +- .../recorder/GlobalActionRecorder.kt | 9 +- .../src/com/intellij/util/ui/JBDimension.java | 12 +- .../VcsBackForwardUsageTriggerCollector.java | 2 +- .../memory/ui/InstancesViewBase.java | 2 +- .../stats/completion/LookupActionsListener.kt | 4 +- 43 files changed, 358 insertions(+), 466 deletions(-) diff --git a/lib/annotations/picocontainer/org/picocontainer/defaults/annotations.xml b/lib/annotations/picocontainer/org/picocontainer/defaults/annotations.xml index 8013ad53c63b..8ec5f73ca098 100644 --- a/lib/annotations/picocontainer/org/picocontainer/defaults/annotations.xml +++ b/lib/annotations/picocontainer/org/picocontainer/defaults/annotations.xml @@ -38,4 +38,16 @@ name='org.picocontainer.defaults.InstantiatingComponentAdapter InstantiatingComponentAdapter(java.lang.Object, java.lang.Class, org.picocontainer.Parameter[], boolean, org.picocontainer.ComponentMonitor, org.picocontainer.defaults.LifecycleStrategy) 0'> + + + + + + + + + \ No newline at end of file diff --git a/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/ActionManager.java b/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/ActionManager.java index a53772ab39c5..6170ca39e082 100644 --- a/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/ActionManager.java +++ b/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/ActionManager.java @@ -39,7 +39,7 @@ public abstract class ActionManager { * @return An instance of {@code ActionPopupMenu} */ @NotNull - public abstract ActionPopupMenu createActionPopupMenu(@NonNls String place, @NotNull ActionGroup group); + public abstract ActionPopupMenu createActionPopupMenu(@NonNls @NotNull String place, @NotNull ActionGroup group); /** * Factory method that creates an {@code ActionToolbar} from the @@ -114,6 +114,7 @@ public abstract class ActionManager { * @return all action {@code id}s which have the specified prefix. * @since 5.1 */ + @NotNull public abstract String[] getActionIds(@NotNull String idPrefix); /** @@ -136,19 +137,20 @@ public abstract class ActionManager { * @since 5.1 */ @NotNull - public abstract JComponent createButtonToolbar(final String actionPlace, @NotNull ActionGroup messageActionGroup); + public abstract JComponent createButtonToolbar(@NotNull String actionPlace, @NotNull ActionGroup messageActionGroup); @Nullable - public abstract AnAction getActionOrStub(@NonNls String id); + public abstract AnAction getActionOrStub(@NotNull @NonNls String id); - public abstract void addTimerListener(int delay, TimerListener listener); + public abstract void addTimerListener(int delay, @NotNull TimerListener listener); - public abstract void removeTimerListener(TimerListener listener); + public abstract void removeTimerListener(@NotNull TimerListener listener); - public abstract void addTransparentTimerListener(int delay, TimerListener listener); + public abstract void addTransparentTimerListener(int delay, @NotNull TimerListener listener); - public abstract void removeTransparentTimerListener(TimerListener listener); + public abstract void removeTransparentTimerListener(@NotNull TimerListener listener); + @NotNull public abstract ActionCallback tryToExecute(@NotNull AnAction action, @NotNull InputEvent inputEvent, @Nullable Component contextComponent, @Nullable String place, boolean now); diff --git a/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/ActionToolbar.java b/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/ActionToolbar.java index b139ce936e30..c71c60f35671 100644 --- a/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/ActionToolbar.java +++ b/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/ActionToolbar.java @@ -100,7 +100,7 @@ public interface ActionToolbar { void setReservePlaceAutoPopupIcon(boolean reserve); - void setSecondaryActionsTooltip(String secondaryActionsTooltip); + void setSecondaryActionsTooltip(@NotNull String secondaryActionsTooltip); void setSecondaryActionsIcon(Icon icon); @@ -109,6 +109,7 @@ public interface ActionToolbar { void setMiniMode(boolean minimalMode); + @NotNull DataContext getToolbarDataContext(); /** diff --git a/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/ex/AnActionListener.java b/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/ex/AnActionListener.java index 7bad1c3aaeab..13a9440c1b2d 100644 --- a/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/ex/AnActionListener.java +++ b/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/ex/AnActionListener.java @@ -14,13 +14,13 @@ import org.jetbrains.annotations.NotNull; public interface AnActionListener { Topic TOPIC = new Topic<>("action changes", AnActionListener.class); - default void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, AnActionEvent event) { + default void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, @NotNull AnActionEvent event) { } /** * Note that using {@code dataContext} in implementing methods is unsafe - it could have been invalidated by the performed action. */ - default void afterActionPerformed(AnAction action, @NotNull DataContext dataContext, AnActionEvent event) { + default void afterActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, @NotNull AnActionEvent event) { } default void beforeEditorTyping(char c, @NotNull DataContext dataContext) { diff --git a/platform/editor-ui-api/src/com/intellij/openapi/editor/event/EditorMouseEvent.java b/platform/editor-ui-api/src/com/intellij/openapi/editor/event/EditorMouseEvent.java index 29de2f6a8c8a..8ba18b526e26 100644 --- a/platform/editor-ui-api/src/com/intellij/openapi/editor/event/EditorMouseEvent.java +++ b/platform/editor-ui-api/src/com/intellij/openapi/editor/event/EditorMouseEvent.java @@ -22,10 +22,11 @@ import java.awt.event.MouseEvent; import java.util.EventObject; public class EditorMouseEvent extends EventObject { + @NotNull private final MouseEvent myMouseEvent; private final EditorMouseEventArea myEditorArea; - public EditorMouseEvent(@NotNull Editor editor, MouseEvent mouseEvent, EditorMouseEventArea area) { + public EditorMouseEvent(@NotNull Editor editor, @NotNull MouseEvent mouseEvent, EditorMouseEventArea area) { super(editor); myMouseEvent = mouseEvent; @@ -37,6 +38,7 @@ public class EditorMouseEvent extends EventObject { return (Editor) getSource(); } + @NotNull public MouseEvent getMouseEvent() { return myMouseEvent; } diff --git a/platform/extensions/src/com/intellij/openapi/extensions/EPAvailabilityListenerExtension.java b/platform/extensions/src/com/intellij/openapi/extensions/EPAvailabilityListenerExtension.java index 21a75c9d802f..84531a334379 100644 --- a/platform/extensions/src/com/intellij/openapi/extensions/EPAvailabilityListenerExtension.java +++ b/platform/extensions/src/com/intellij/openapi/extensions/EPAvailabilityListenerExtension.java @@ -27,9 +27,6 @@ public class EPAvailabilityListenerExtension implements PluginAware { private String myListenerClass; private PluginDescriptor myPluginDescriptor; - public EPAvailabilityListenerExtension() { - } - public EPAvailabilityListenerExtension(@NotNull String extensionPointName, @NotNull String listenerClass) { myExtensionPointName = extensionPointName; myListenerClass = listenerClass; @@ -62,12 +59,11 @@ public class EPAvailabilityListenerExtension implements PluginAware { return myPluginDescriptor; } + @NotNull public Class loadListenerClass() throws ClassNotFoundException { if (myPluginDescriptor != null && myPluginDescriptor.getPluginClassLoader() != null) { return Class.forName(getListenerClass(), true, myPluginDescriptor.getPluginClassLoader()); } - else { - return Class.forName(getListenerClass()); - } + return Class.forName(getListenerClass()); } } diff --git a/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java b/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java index 3ac3dfe1c706..14cca99f0277 100644 --- a/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java +++ b/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java @@ -29,12 +29,6 @@ public class ExtensionsAreaImpl implements ExtensionsArea { private static final Logger LOG = Logger.getInstance(ExtensionsAreaImpl.class); public static final String ATTRIBUTE_AREA = "area"; - private static final Map ourDefaultEPs = new THashMap<>(); - - static { - ourDefaultEPs.put(EPAvailabilityListenerExtension.EXTENSION_POINT_NAME, EPAvailabilityListenerExtension.class.getName()); - } - private static final boolean DEBUG_REGISTRATION = Boolean.FALSE.booleanValue(); // not compile-time constant to avoid yellow code private final AreaPicoContainer myPicoContainer; @@ -53,11 +47,6 @@ public class ExtensionsAreaImpl implements ExtensionsArea { initialize(); } - @TestOnly - ExtensionsAreaImpl(MutablePicoContainer parentPicoContainer) { - this(null, null, parentPicoContainer); - } - @TestOnly public final void notifyAreaReplaced(@NotNull ExtensionsAreaImpl newArea) { Set processedEPs = ContainerUtil.newTroveSet(); @@ -105,10 +94,6 @@ public class ExtensionsAreaImpl implements ExtensionsArea { return myAreaClass; } - public void registerExtensionPoint(@NotNull String pluginName, @NotNull Element extensionPointElement) { - registerExtensionPoint(new DefaultPluginDescriptor(PluginId.getId(pluginName)), extensionPointElement); - } - @Override public void registerExtensionPoint(@NotNull PluginDescriptor pluginDescriptor, @NotNull Element extensionPointElement) { assert pluginDescriptor.getPluginId() != null; @@ -181,7 +166,7 @@ public class ExtensionsAreaImpl implements ExtensionsArea { return new ExtensionComponentAdapter(implementationClassName, myPicoContainer, pluginDescriptor, orderId, order, isNeedToDeserialize ? extensionElement : null); } - private static boolean shouldDeserializeInstance(Element extensionElement) { + private static boolean shouldDeserializeInstance(@NotNull Element extensionElement) { // has content if (!extensionElement.getContent().isEmpty()) return true; // has custom attributes @@ -214,54 +199,49 @@ public class ExtensionsAreaImpl implements ExtensionsArea { return myPicoContainer; } - @SuppressWarnings("unchecked") private void initialize() { - for (Map.Entry entry : ourDefaultEPs.entrySet()) { - String epName = entry.getKey(); - registerExtensionPoint(epName, entry.getValue()); - } - - getExtensionPoint(EPAvailabilityListenerExtension.EXTENSION_POINT_NAME).addExtensionPointListener(new ExtensionPointListener() { - @Override - public void extensionRemoved(@NotNull Object extension, final PluginDescriptor pluginDescriptor) { - EPAvailabilityListenerExtension epListenerExtension = (EPAvailabilityListenerExtension) extension; - synchronized (myAvailabilityListeners) { - Collection listeners = myAvailabilityListeners.get(epListenerExtension.getExtensionPointName()); - for (Iterator iterator = listeners.iterator(); iterator.hasNext();) { - ExtensionPointAvailabilityListener listener = iterator.next(); - if (listener.getClass().getName().equals(epListenerExtension.getListenerClass())) { - iterator.remove(); - return; + ExtensionPointImpl point = + registerExtensionPoint(EPAvailabilityListenerExtension.EXTENSION_POINT_NAME, EPAvailabilityListenerExtension.class.getName(), + new UndefinedPluginDescriptor(), ExtensionPoint.Kind.INTERFACE); + point.addExtensionPointListener(new ExtensionPointListener() { + @Override + public void extensionAdded(@NotNull EPAvailabilityListenerExtension extension, @Nullable PluginDescriptor pluginDescriptor) { + synchronized (myAvailabilityListeners) { + Collection listeners = myAvailabilityListeners.get(extension.getExtensionPointName()); + for (Iterator iterator = listeners.iterator(); iterator.hasNext();) { + ExtensionPointAvailabilityListener listener = iterator.next(); + if (listener.getClass().getName().equals(extension.getListenerClass())) { + iterator.remove(); + return; + } } } + LOG.warn("Failed to find EP availability listener: " + extension.getListenerClass()); } - LOG.warn("Failed to find EP availability listener: " + epListenerExtension.getListenerClass()); - } - @Override - public void extensionAdded(@NotNull Object extension, final PluginDescriptor pluginDescriptor) { - EPAvailabilityListenerExtension epListenerExtension = (EPAvailabilityListenerExtension) extension; - try { - String epName = epListenerExtension.getExtensionPointName(); + @Override + public void extensionRemoved(@NotNull EPAvailabilityListenerExtension extension, @Nullable PluginDescriptor pluginDescriptor) { + try { + String epName = extension.getExtensionPointName(); - ExtensionPointAvailabilityListener listener = (ExtensionPointAvailabilityListener) instantiate(epListenerExtension.loadListenerClass()); - addAvailabilityListener(epName, listener); + ExtensionPointAvailabilityListener listener = (ExtensionPointAvailabilityListener) instantiate(extension.loadListenerClass()); + addAvailabilityListener(epName, listener); + } + catch (Exception e) { + throw new RuntimeException(e); + } } - catch (Exception e) { - throw new RuntimeException(e); - } - } - }); + }); } - private Object instantiate(Class clazz) { + @NotNull + private Object instantiate(@NotNull Class clazz) { CachingConstructorInjectionComponentAdapter adapter = new CachingConstructorInjectionComponentAdapter(Integer.toString(System.identityHashCode(new Object())), clazz); return adapter.getComponentInstance(getPicoContainer()); } - @SuppressWarnings("UnusedDeclaration") public Throwable getCreationTrace() { return myCreationTrace; } @@ -299,10 +279,11 @@ public class ExtensionsAreaImpl implements ExtensionsArea { registerExtensionPoint(extensionPointName, extensionPointBeanClass, new UndefinedPluginDescriptor(), kind); } - private void registerExtensionPoint(@NotNull String extensionPointName, - @NotNull String extensionPointBeanClass, - @NotNull PluginDescriptor descriptor, - @NotNull ExtensionPoint.Kind kind) { + @NotNull + private ExtensionPointImpl registerExtensionPoint(@NotNull String extensionPointName, + @NotNull String extensionPointBeanClass, + @NotNull PluginDescriptor descriptor, + @NotNull ExtensionPoint.Kind kind) { if (hasExtensionPoint(extensionPointName)) { final String message = "Duplicate registration for EP: " + extensionPointName + ": original plugin " + @@ -314,14 +295,16 @@ public class ExtensionsAreaImpl implements ExtensionsArea { throw new PicoPluginExtensionInitializationException(message, null, extractPluginId(descriptor)); } - registerExtensionPoint(new ExtensionPointImpl(extensionPointName, extensionPointBeanClass, kind, this, myAreaInstance, descriptor)); + ExtensionPointImpl point = new ExtensionPointImpl<>(extensionPointName, extensionPointBeanClass, kind, this, myAreaInstance, descriptor); + registerExtensionPoint(point); + return point; } private static PluginId extractPluginId(@NotNull PluginDescriptor descriptor) { return descriptor instanceof UndefinedPluginDescriptor ? null : descriptor.getPluginId(); } - public void registerExtensionPoint(@NotNull ExtensionPointImpl extensionPoint) { + private void registerExtensionPoint(@NotNull ExtensionPointImpl extensionPoint) { String name = extensionPoint.getName(); myExtensionPoints.put(name, extensionPoint); notifyEPRegistered(extensionPoint); diff --git a/platform/extensions/src/com/intellij/util/pico/CachingConstructorInjectionComponentAdapter.java b/platform/extensions/src/com/intellij/util/pico/CachingConstructorInjectionComponentAdapter.java index baa2a41caecd..92a7925d9903 100644 --- a/platform/extensions/src/com/intellij/util/pico/CachingConstructorInjectionComponentAdapter.java +++ b/platform/extensions/src/com/intellij/util/pico/CachingConstructorInjectionComponentAdapter.java @@ -47,6 +47,7 @@ public class CachingConstructorInjectionComponentAdapter extends InstantiatingCo return instance; } + @NotNull private Object instantiateGuarded(PicoContainer container, Class stackFrame) { Set currentStack = ourGuard.get(); if (currentStack == null) { @@ -60,14 +61,17 @@ public class CachingConstructorInjectionComponentAdapter extends InstantiatingCo try { currentStack.add(this); return doGetComponentInstance(container); - } catch (final CyclicDependencyException e) { + } + catch (final CyclicDependencyException e) { e.push(stackFrame); throw e; - } finally { + } + finally { currentStack.remove(this); } } + @NotNull private Object doGetComponentInstance(PicoContainer guardedContainer) { final Constructor constructor; try { @@ -102,7 +106,7 @@ public class CachingConstructorInjectionComponentAdapter extends InstantiatingCo } @NotNull - private Object[] getConstructorArguments(PicoContainer container, Constructor ctor) { + private Object[] getConstructorArguments(PicoContainer container, @NotNull Constructor ctor) { Class[] parameterTypes = ctor.getParameterTypes(); Object[] result = new Object[parameterTypes.length]; Parameter[] currentParameters = parameters != null ? parameters : createDefaultParameters(parameterTypes); @@ -113,6 +117,7 @@ public class CachingConstructorInjectionComponentAdapter extends InstantiatingCo return result; } + @NotNull @Override protected Constructor getGreediestSatisfiableConstructor(PicoContainer container) throws PicoIntrospectionException, @@ -162,12 +167,15 @@ public class CachingConstructorInjectionComponentAdapter extends InstantiatingCo } if (!conflicts.isEmpty()) { throw new TooManySatisfiableConstructorsException(getComponentImplementation(), conflicts); - } else if (greediestConstructor == null && !unsatisfiableDependencyTypes.isEmpty()) { + } + if (greediestConstructor == null && !unsatisfiableDependencyTypes.isEmpty()) { throw new UnsatisfiableDependenciesException(this, unsatisfiedDependencyType, unsatisfiableDependencyTypes, container); - } else if (greediestConstructor == null) { + } + if (greediestConstructor == null) { // be nice to the user, show all constructors that were filtered out - final Set nonMatching = ContainerUtil.newHashSet(getConstructors()); - throw new PicoInitializationException("Either do the specified parameters not match any of the following constructors: " + nonMatching.toString() + " or the constructors were not accessible for '" + getComponentImplementation() + "'"); + final Set> nonMatching = ContainerUtil.newHashSet(getConstructors()); + throw new PicoInitializationException("Either do the specified parameters not match any of the following constructors: " + + nonMatching + " or the constructors were not accessible for '" + getComponentImplementation() + "'"); } return greediestConstructor; } @@ -175,7 +183,7 @@ public class CachingConstructorInjectionComponentAdapter extends InstantiatingCo private List getSortedMatchingConstructors() { List matchingConstructors = new ArrayList<>(); // filter out all constructors that will definitely not match - for (Constructor constructor : getConstructors()) { + for (Constructor constructor : getConstructors()) { if ((parameters == null || constructor.getParameterTypes().length == parameters.length) && (allowNonPublicClasses || (constructor.getModifiers() & Modifier.PUBLIC) != 0)) { matchingConstructors.add(constructor); @@ -189,12 +197,7 @@ public class CachingConstructorInjectionComponentAdapter extends InstantiatingCo } @NotNull - private Constructor[] getConstructors() { - return (Constructor[]) AccessController.doPrivileged(new PrivilegedAction() { - @Override - public Object run() { - return getComponentImplementation().getDeclaredConstructors(); - } - }); + private Constructor[] getConstructors() { + return AccessController.doPrivileged((PrivilegedAction[]>)() -> getComponentImplementation().getDeclaredConstructors()); } } \ No newline at end of file diff --git a/platform/extensions/testSrc/com/intellij/openapi/extensions/impl/ExtensionPointImplTest.java b/platform/extensions/testSrc/com/intellij/openapi/extensions/impl/ExtensionPointImplTest.java index 6c15372200b3..05f2fa61e6f8 100644 --- a/platform/extensions/testSrc/com/intellij/openapi/extensions/impl/ExtensionPointImplTest.java +++ b/platform/extensions/testSrc/com/intellij/openapi/extensions/impl/ExtensionPointImplTest.java @@ -251,7 +251,7 @@ public class ExtensionPointImplTest { } private static ExtensionsAreaImpl buildExtensionArea() { - return new ExtensionsAreaImpl(new DefaultPicoContainer()); + return new ExtensionsAreaImpl(null, null, new DefaultPicoContainer()); } private static MyShootingComponentAdapter stringAdapter() { diff --git a/platform/extensions/testSrc/com/intellij/openapi/extensions/impl/ExtensionsComplexTest.java b/platform/extensions/testSrc/com/intellij/openapi/extensions/impl/ExtensionsComplexTest.java index e0659abb3b40..bb78f21be414 100644 --- a/platform/extensions/testSrc/com/intellij/openapi/extensions/impl/ExtensionsComplexTest.java +++ b/platform/extensions/testSrc/com/intellij/openapi/extensions/impl/ExtensionsComplexTest.java @@ -1,9 +1,7 @@ // Copyright 2000-2018 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.extensions.impl; -import com.intellij.openapi.extensions.AreaInstance; -import com.intellij.openapi.extensions.ExtensionPoint; -import com.intellij.openapi.extensions.Extensions; +import com.intellij.openapi.extensions.*; import com.intellij.openapi.util.JDOMUtil; import org.jdom.Element; import org.jdom.JDOMException; @@ -103,14 +101,15 @@ public class ExtensionsComplexTest { final Element element = JDOMUtil.load(data); for (final Object o : element.getChildren()) { Element child = (Element)o; - ((ExtensionsAreaImpl)Extensions.getArea(instance)).registerExtensionPoint(ExtensionsComplexTest.PLUGIN_NAME, child); + Extensions.getArea(instance) + .registerExtensionPoint(new DefaultPluginDescriptor(PluginId.getId(PLUGIN_NAME)), child); } } private static void initExtensions(@NonNls String data, AreaInstance instance) throws IOException, JDOMException { final Element element = JDOMUtil.load(data); for (final Element child : element.getChildren()) { - ExtensionsImplTest.registerExtension(((ExtensionsAreaImpl)Extensions.getArea(instance)), element.getNamespaceURI(), child); + ExtensionsImplTest.registerExtension((ExtensionsAreaImpl)Extensions.getArea(instance), element.getNamespaceURI(), child); } } diff --git a/platform/extensions/testSrc/com/intellij/openapi/extensions/impl/ExtensionsImplTest.java b/platform/extensions/testSrc/com/intellij/openapi/extensions/impl/ExtensionsImplTest.java index 29de05dd5cc9..a50ac60e5159 100644 --- a/platform/extensions/testSrc/com/intellij/openapi/extensions/impl/ExtensionsImplTest.java +++ b/platform/extensions/testSrc/com/intellij/openapi/extensions/impl/ExtensionsImplTest.java @@ -23,7 +23,7 @@ public class ExtensionsImplTest { @Test public void testCreateAndAccess() { - ExtensionsAreaImpl extensionsArea = new ExtensionsAreaImpl(null); + ExtensionsAreaImpl extensionsArea = new ExtensionsAreaImpl(null, null, null); int numEP = extensionsArea.getExtensionPoints().length; extensionsArea.registerExtensionPoint(EXTENSION_POINT_NAME_1, Integer.class.getName()); assertEquals("Additional EP available", numEP + 1, extensionsArea.getExtensionPoints().length); @@ -32,7 +32,7 @@ public class ExtensionsImplTest { @Test(expected = Throwable.class) public void testInvalidActions() { - ExtensionsAreaImpl extensionsArea = new ExtensionsAreaImpl(null); + ExtensionsAreaImpl extensionsArea = new ExtensionsAreaImpl(null, null, null); extensionsArea.registerExtensionPoint(EXTENSION_POINT_NAME_1, Integer.class.getName()); extensionsArea.registerExtensionPoint(EXTENSION_POINT_NAME_1, Boolean.class.getName()); fail("Should not allow duplicate registration"); @@ -40,7 +40,7 @@ public class ExtensionsImplTest { @Test public void testUnregisterEP() { - ExtensionsAreaImpl extensionsArea = new ExtensionsAreaImpl(null); + ExtensionsAreaImpl extensionsArea = new ExtensionsAreaImpl(null, null, null); int numEP = extensionsArea.getExtensionPoints().length; extensionsArea.registerExtensionPoint(EXTENSION_POINT_NAME_1, Integer.class.getName()); @@ -59,7 +59,7 @@ public class ExtensionsImplTest { @Test public void testAvailabilityListener() { - ExtensionsAreaImpl extensionsArea = new ExtensionsAreaImpl(null); + ExtensionsAreaImpl extensionsArea = new ExtensionsAreaImpl(null, null, null); MyListener.reset(); extensionsArea.getExtensionPoint(EPAvailabilityListenerExtension.EXTENSION_POINT_NAME).registerExtension( new EPAvailabilityListenerExtension(EXTENSION_POINT_NAME_1, MyListener.class.getName())); @@ -76,7 +76,7 @@ public class ExtensionsImplTest { @Test public void testAvailability2Listeners() { - ExtensionsAreaImpl extensionsArea = new ExtensionsAreaImpl(null); + ExtensionsAreaImpl extensionsArea = new ExtensionsAreaImpl(null, null, null); MyListener.reset(); extensionsArea.registerExtensionPoint(EXTENSION_POINT_NAME_1, Integer.class.getName()); extensionsArea.getExtensionPoint(EPAvailabilityListenerExtension.EXTENSION_POINT_NAME).registerExtension( @@ -93,7 +93,7 @@ public class ExtensionsImplTest { @Test public void testAvailabilityListenerAfter() { - ExtensionsAreaImpl extensionsArea = new ExtensionsAreaImpl(null); + ExtensionsAreaImpl extensionsArea = new ExtensionsAreaImpl(null, null, null); extensionsArea.registerExtensionPoint(EXTENSION_POINT_NAME_1, Integer.class.getName()); MyListener.reset(); extensionsArea.getExtensionPoint(EPAvailabilityListenerExtension.EXTENSION_POINT_NAME).registerExtension( @@ -155,7 +155,7 @@ public class ExtensionsImplTest { @Test public void testExtensionsNamespaces() throws IOException, JDOMException { - ExtensionsAreaImpl extensionsArea = new ExtensionsAreaImpl(new DefaultPicoContainer()); + ExtensionsAreaImpl extensionsArea = new ExtensionsAreaImpl(null, null, new DefaultPicoContainer()); extensionsArea.registerExtensionPoint("plugin.ep1", TestExtensionClassOne.class.getName(), ExtensionPoint.Kind.BEAN_CLASS); registerExtension(extensionsArea, "plugin", JDOMUtil.load( "3")); @@ -173,7 +173,7 @@ public class ExtensionsImplTest { @Test public void testExtensionsWithOrdering() throws IOException, JDOMException { - ExtensionsAreaImpl extensionsArea = new ExtensionsAreaImpl(new DefaultPicoContainer()); + ExtensionsAreaImpl extensionsArea = new ExtensionsAreaImpl(null, null, new DefaultPicoContainer()); extensionsArea.registerExtensionPoint("ep1", TestExtensionClassOne.class.getName(), ExtensionPoint.Kind.BEAN_CLASS); registerExtension(extensionsArea, "", JDOMUtil.load( "3")); @@ -191,7 +191,7 @@ public class ExtensionsImplTest { @Test public void testExtensionsWithOrderingUpdate() throws IOException, JDOMException { - ExtensionsAreaImpl extensionsArea = new ExtensionsAreaImpl(new DefaultPicoContainer()); + ExtensionsAreaImpl extensionsArea = new ExtensionsAreaImpl(null, null, new DefaultPicoContainer()); extensionsArea.registerExtensionPoint("ep1", TestExtensionClassOne.class.getName(), ExtensionPoint.Kind.BEAN_CLASS); registerExtension(extensionsArea, "", JDOMUtil.load("7")); registerExtension(extensionsArea, "", JDOMUtil.load("1")); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/AutoPopupController.java b/platform/lang-impl/src/com/intellij/codeInsight/AutoPopupController.java index 713d4964c92d..ce6e50dd42f5 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/AutoPopupController.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/AutoPopupController.java @@ -75,7 +75,7 @@ public class AutoPopupController implements Disposable { private void setupListeners() { ApplicationManager.getApplication().getMessageBus().connect(this).subscribe(AnActionListener.TOPIC, new AnActionListener() { @Override - public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, AnActionEvent event) { + public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, @NotNull AnActionEvent event) { cancelAllRequests(); } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/ActionTracker.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/ActionTracker.java index dd1e9b7c387b..10ab99168c29 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/ActionTracker.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/ActionTracker.java @@ -40,7 +40,7 @@ class ActionTracker { } @Override - public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, AnActionEvent event) { + public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, @NotNull AnActionEvent event) { myActionsHappened = true; } }); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonListeners.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonListeners.java index ff5ebad2a3b4..021f6e3b624a 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonListeners.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonListeners.java @@ -543,7 +543,7 @@ public class DaemonListeners implements Disposable { private final AnAction escapeAction = myActionManager.getAction(IdeActions.ACTION_EDITOR_ESCAPE); @Override - public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, AnActionEvent event) { + public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, @NotNull AnActionEvent event) { myEscPressed = action == escapeAction; } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java index 754a2f5d9ab4..917d0453d54f 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java @@ -208,7 +208,7 @@ public class DocumentationManager extends DockablePopupManager= 2 && s.charAt(s.length() - 2) == ' ') { + if (result == null && s.length() >= 2 && s.charAt(s.length() - 2) == ' ') { try { String s1 = s.substring(0, s.length() - 1) + Character.toUpperCase(s.charAt(s.length() - 1)); result = KeyStroke.getKeyStroke(s1); @@ -83,17 +82,12 @@ public abstract class ActionManagerEx extends ActionManager { public abstract boolean isTransparentOnlyActionsUpdateNow(); - public void fireBeforeActionPerformed(String actionId, InputEvent event) { + public void fireBeforeActionPerformed(@NotNull String actionId, @NotNull InputEvent event) { final AnAction action = getAction(actionId); if (action != null) { AnActionEvent e = AnActionEvent.createFromAnAction(action, event, ActionPlaces.UNKNOWN, DataManager.getInstance().getDataContext()); fireBeforeActionPerformed(action, DataManager.getInstance().getDataContext(), e); } } - - /** - * Allows to receive notifications when popup menus created from action groups are shown and hidden. - */ - public abstract void addActionPopupMenuListener(ActionPopupMenuListener listener, Disposable parentDisposable); } diff --git a/platform/platform-api/src/com/intellij/openapi/actionSystem/ex/ActionPopupMenuListener.java b/platform/platform-api/src/com/intellij/openapi/actionSystem/ex/ActionPopupMenuListener.java index 750d23965236..0d6e86f7229c 100644 --- a/platform/platform-api/src/com/intellij/openapi/actionSystem/ex/ActionPopupMenuListener.java +++ b/platform/platform-api/src/com/intellij/openapi/actionSystem/ex/ActionPopupMenuListener.java @@ -1,14 +1,12 @@ // Copyright 2000-2018 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.actionSystem.ex; -import com.intellij.openapi.Disposable; import com.intellij.openapi.actionSystem.ActionPopupMenu; import org.jetbrains.annotations.NotNull; /** * Allows to receive notifications when popup menus created from action groups are shown and closed. * - * @see ActionManagerEx#addActionPopupMenuListener(ActionPopupMenuListener, Disposable) */ public interface ActionPopupMenuListener { default void actionPopupMenuCreated(@NotNull ActionPopupMenu menu) { diff --git a/platform/platform-impl/src/com/intellij/codeInsight/hint/HintManagerImpl.java b/platform/platform-impl/src/com/intellij/codeInsight/hint/HintManagerImpl.java index 389f6c2015a8..e6fbe5588ca5 100644 --- a/platform/platform-impl/src/com/intellij/codeInsight/hint/HintManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/codeInsight/hint/HintManagerImpl.java @@ -868,7 +868,7 @@ public class HintManagerImpl extends HintManager { private class MyAnActionListener implements AnActionListener { @Override - public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, AnActionEvent event) { + public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, @NotNull AnActionEvent event) { if (action instanceof ActionToIgnore) return; AnAction escapeAction = ActionManagerEx.getInstanceEx().getAction(IdeActions.ACTION_EDITOR_ESCAPE); diff --git a/platform/platform-impl/src/com/intellij/ide/IdeTooltipManager.java b/platform/platform-impl/src/com/intellij/ide/IdeTooltipManager.java index 081ae0bdbed1..d56c105d6238 100644 --- a/platform/platform-impl/src/com/intellij/ide/IdeTooltipManager.java +++ b/platform/platform-impl/src/com/intellij/ide/IdeTooltipManager.java @@ -95,7 +95,7 @@ public class IdeTooltipManager implements Disposable, AWTEventListener, BaseComp ApplicationManager.getApplication().getMessageBus().connect(ApplicationManager.getApplication()).subscribe(AnActionListener.TOPIC, new AnActionListener() { @Override - public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, AnActionEvent event) { + public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, @NotNull AnActionEvent event) { hideCurrent(null, action, event); } }); diff --git a/platform/platform-impl/src/com/intellij/ide/actionMacro/ActionMacroManager.java b/platform/platform-impl/src/com/intellij/ide/actionMacro/ActionMacroManager.java index 2e85c2832130..b7ce216d35eb 100644 --- a/platform/platform-impl/src/com/intellij/ide/actionMacro/ActionMacroManager.java +++ b/platform/platform-impl/src/com/intellij/ide/actionMacro/ActionMacroManager.java @@ -78,7 +78,7 @@ public class ActionMacroManager implements PersistentStateComponent, Di myActionManager = actionManager; messageBus.connect(this).subscribe(AnActionListener.TOPIC, new AnActionListener() { @Override - public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, final AnActionEvent event) { + public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, @NotNull final AnActionEvent event) { String id = actionManager.getId(action); if (id == null) return; //noinspection HardCodedStringLiteral diff --git a/platform/platform-impl/src/com/intellij/ide/impl/DataManagerImpl.java b/platform/platform-impl/src/com/intellij/ide/impl/DataManagerImpl.java index 2399f8f5c3dd..8ad5afb3c32f 100644 --- a/platform/platform-impl/src/com/intellij/ide/impl/DataManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/ide/impl/DataManagerImpl.java @@ -200,6 +200,7 @@ public class DataManagerImpl extends DataManager { return result; } + @NotNull public DataContext getDataContextTest(Component component) { DataContext dataContext = getDataContext(component); if (myWindowManager == null) { diff --git a/platform/platform-impl/src/com/intellij/internal/statistic/collectors/fus/fileTypes/FileTypeExtensionUsagesCollectorStartupActivity.java b/platform/platform-impl/src/com/intellij/internal/statistic/collectors/fus/fileTypes/FileTypeExtensionUsagesCollectorStartupActivity.java index 886f1407b470..cd3df425a7d9 100644 --- a/platform/platform-impl/src/com/intellij/internal/statistic/collectors/fus/fileTypes/FileTypeExtensionUsagesCollectorStartupActivity.java +++ b/platform/platform-impl/src/com/intellij/internal/statistic/collectors/fus/fileTypes/FileTypeExtensionUsagesCollectorStartupActivity.java @@ -34,7 +34,7 @@ public class FileTypeExtensionUsagesCollectorStartupActivity implements StartupA }); ApplicationManager.getApplication().getMessageBus().connect(project).subscribe(AnActionListener.TOPIC, new AnActionListener() { @Override - public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, AnActionEvent event) { + public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, @NotNull AnActionEvent event) { if (action instanceof EditorAction && ((EditorAction)action).getHandler() instanceof EditorWriteActionHandler) { onChange(dataContext); } diff --git a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionButton.java b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionButton.java index 77b5172ecdee..ab16409f45e5 100644 --- a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionButton.java +++ b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionButton.java @@ -13,6 +13,7 @@ import com.intellij.openapi.actionSystem.ex.CustomComponentAction; import com.intellij.openapi.application.impl.LaterInvocator; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.keymap.KeymapUtil; +import com.intellij.openapi.keymap.impl.IdeMouseEventDispatcher; import com.intellij.openapi.ui.popup.JBPopup; import com.intellij.openapi.ui.popup.JBPopupAdapter; import com.intellij.openapi.ui.popup.LightweightWindowEvent; @@ -33,9 +34,6 @@ import java.awt.event.*; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import static com.intellij.openapi.keymap.impl.IdeMouseEventDispatcher.requestFocusInNonFocusedWindow; -import static java.awt.event.KeyEvent.VK_SPACE; - public class ActionButton extends JComponent implements ActionButtonComponent, AnActionHolder, Accessible { private JBDimension myMinimumButtonSize; private PropertyChangeListener myPresentationListener; @@ -47,9 +45,9 @@ public class ActionButton extends JComponent implements ActionButtonComponent, A private ActionButtonLook myLook = ActionButtonLook.SYSTEM_LOOK; private boolean myMouseDown; private boolean myRollover; - private static boolean ourGlobalMouseDown = false; + private static boolean ourGlobalMouseDown; - private boolean myNoIconsInPopup = false; + private boolean myNoIconsInPopup; private Insets myInsets; public ActionButton(@NotNull AnAction action, @@ -70,7 +68,7 @@ public class ActionButton extends JComponent implements ActionButtonComponent, A addKeyListener(new KeyAdapter() { @Override public void keyReleased(KeyEvent e) { - if (e.getModifiers() == 0 && e.getKeyCode() == VK_SPACE) { + if (e.getModifiers() == 0 && e.getKeyCode() == KeyEvent.VK_SPACE) { click(); } } @@ -94,7 +92,7 @@ public class ActionButton extends JComponent implements ActionButtonComponent, A myNoIconsInPopup = noIconsInPopup; } - public void setMinimumButtonSize(@NotNull Dimension size) { + void setMinimumButtonSize(@NotNull Dimension size) { myMinimumButtonSize = JBDimension.create(size); } @@ -118,7 +116,7 @@ public class ActionButton extends JComponent implements ActionButtonComponent, A return super.isEnabled() && myPresentation.isEnabled(); } - protected boolean isButtonEnabled() { + boolean isButtonEnabled() { return isEnabled(); } @@ -185,7 +183,7 @@ public class ActionButton extends JComponent implements ActionButtonComponent, A } } - protected void showPopupMenu(AnActionEvent event, ActionGroup actionGroup) { + private void showPopupMenu(AnActionEvent event, ActionGroup actionGroup) { final ActionManagerImpl am = (ActionManagerImpl) ActionManager.getInstance(); ActionPopupMenuImpl popupMenu = (ActionPopupMenuImpl)am.createActionPopupMenu(event.getPlace(), actionGroup, new MenuItemPresentationFactory() { @Override @@ -196,7 +194,7 @@ public class ActionButton extends JComponent implements ActionButtonComponent, A } } }); - popupMenu.setDataContextProvider(() -> this.getDataContext()); + popupMenu.setDataContextProvider(() -> getDataContext()); if (event.isFromActionToolbar()) { popupMenu.getComponent().show(this, 0, getHeight()); @@ -206,7 +204,7 @@ public class ActionButton extends JComponent implements ActionButtonComponent, A } } - protected boolean isPopupMenuAction(AnActionEvent event, AnAction action) { + private static boolean isPopupMenuAction(AnActionEvent event, AnAction action) { return action instanceof ActionGroup && !(action instanceof CustomComponentAction) && ((ActionGroup) action).isPopup() && @@ -244,7 +242,7 @@ public class ActionButton extends JComponent implements ActionButtonComponent, A public void setToolTipText(String s) { if (!Registry.is("ide.helptooltip.enabled")) { String tooltipText = KeymapUtil.createTooltipText(s, myAction); - super.setToolTipText(tooltipText.length() > 0 ? tooltipText : null); + super.setToolTipText(tooltipText.isEmpty() ? null : tooltipText); } } @@ -350,7 +348,7 @@ public class ActionButton extends JComponent implements ActionButtonComponent, A paintDownArrowIfGroup(g); } - protected void jComponentPaint(Graphics g) { + private void jComponentPaint(Graphics g) { super.paintComponent(g); } @@ -378,18 +376,13 @@ public class ActionButton extends JComponent implements ActionButtonComponent, A } public void setLook(ActionButtonLook look) { - if (look != null) { - myLook = look; - } - else { - myLook = ActionButtonLook.SYSTEM_LOOK; - } + myLook = look == null ? ActionButtonLook.SYSTEM_LOOK : look; repaint(); } @Override protected void processMouseEvent(MouseEvent e) { - requestFocusInNonFocusedWindow(e); + IdeMouseEventDispatcher.requestFocusInNonFocusedWindow(e); super.processMouseEvent(e); if (e.isConsumed()) return; boolean skipPress = checkSkipPressForEvent(e); @@ -398,7 +391,6 @@ public class ActionButton extends JComponent implements ActionButtonComponent, A if (skipPress || !isButtonEnabled()) return; myMouseDown = true; ourGlobalMouseDown = true; - onMousePressed(e); repaint(); break; @@ -406,7 +398,6 @@ public class ActionButton extends JComponent implements ActionButtonComponent, A if (skipPress || !isButtonEnabled()) return; myMouseDown = false; ourGlobalMouseDown = false; - onMouseReleased(e); if (myRollover) { performAction(e); } @@ -429,15 +420,7 @@ public class ActionButton extends JComponent implements ActionButtonComponent, A } } - protected void onMouseReleased(@NotNull MouseEvent e) { - // Extension point - } - - protected void onMousePressed(@NotNull MouseEvent e) { - // Extension point - } - - protected boolean checkSkipPressForEvent(@NotNull MouseEvent e) { + private static boolean checkSkipPressForEvent(@NotNull MouseEvent e) { return e.isMetaDown() || e.getButton() != MouseEvent.BUTTON1; } @@ -482,17 +465,18 @@ public class ActionButton extends JComponent implements ActionButtonComponent, A // Accessibility @Override + @NotNull public AccessibleContext getAccessibleContext() { - if(this.accessibleContext == null) { - this.accessibleContext = new AccessibleActionButton(); + AccessibleContext context = accessibleContext; + if(context == null) { + accessibleContext = context = new AccessibleActionButton(); } - return this.accessibleContext; + return context; } - protected class AccessibleActionButton extends JComponent.AccessibleJComponent implements AccessibleAction { - public AccessibleActionButton() { + AccessibleActionButton() { } @Override @@ -504,11 +488,11 @@ public class ActionButton extends JComponent implements ActionButtonComponent, A public String getAccessibleName() { String name = accessibleName; if (name == null) { - name = (String)ActionButton.this.getClientProperty(ACCESSIBLE_NAME_PROPERTY); + name = (String)getClientProperty(ACCESSIBLE_NAME_PROPERTY); if (name == null) { name = ActionButton.this.getToolTipText(); if (name == null) { - name = ActionButton.this.myPresentation.getText(); + name = myPresentation.getText(); if (name == null) { name = super.getAccessibleName(); } @@ -526,7 +510,7 @@ public class ActionButton extends JComponent implements ActionButtonComponent, A @Override public AccessibleIcon[] getAccessibleIcon() { - Icon icon = ActionButton.this.getIcon(); + Icon icon = getIcon(); if (icon instanceof Accessible) { AccessibleContext context = ((Accessible)icon).getAccessibleContext(); if (context instanceof AccessibleIcon) { @@ -540,7 +524,7 @@ public class ActionButton extends JComponent implements ActionButtonComponent, A @Override public AccessibleStateSet getAccessibleStateSet() { AccessibleStateSet var1 = super.getAccessibleStateSet(); - int state = ActionButton.this.getPopState(); + int state = getPopState(); // TODO: Not sure what the "POPPED" state represents //if (state == POPPED) { @@ -554,7 +538,7 @@ public class ActionButton extends JComponent implements ActionButtonComponent, A var1.add(AccessibleState.CHECKED); } - if (ActionButton.this.isFocusOwner()) { + if (isFocusOwner()) { var1.add(AccessibleState.FOCUSED); } @@ -580,13 +564,11 @@ public class ActionButton extends JComponent implements ActionButtonComponent, A @Override public boolean doAccessibleAction(int index) { - if (index == 0) { // - ActionButton.this.click(); + if (index == 0) { + click(); return true; } - else { - return false; - } + return false; } } } diff --git a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionManagerImpl.java index 46d5e88bf83c..37917f00e22c 100644 --- a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionManagerImpl.java @@ -15,7 +15,6 @@ import com.intellij.internal.statistic.collectors.fus.actions.persistence.Action import com.intellij.openapi.Disposable; import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.actionSystem.ex.ActionManagerEx; -import com.intellij.openapi.actionSystem.ex.ActionPopupMenuListener; import com.intellij.openapi.actionSystem.ex.ActionUtil; import com.intellij.openapi.actionSystem.ex.AnActionListener; import com.intellij.openapi.application.*; @@ -31,7 +30,6 @@ import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.project.ProjectType; import com.intellij.openapi.util.ActionCallback; -import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; @@ -48,7 +46,6 @@ import com.intellij.util.messages.MessageBusConnection; import com.intellij.util.pico.CachingConstructorInjectionComponentAdapter; import com.intellij.util.ui.UIUtil; import gnu.trove.THashMap; -import gnu.trove.THashSet; import gnu.trove.TObjectIntHashMap; import org.jdom.Element; import org.jetbrains.annotations.NotNull; @@ -57,49 +54,52 @@ import org.jetbrains.annotations.Nullable; import javax.swing.Timer; import javax.swing.*; import java.awt.*; -import java.awt.event.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.InputEvent; +import java.awt.event.WindowEvent; import java.util.List; import java.util.*; public final class ActionManagerImpl extends ActionManagerEx implements Disposable { - public static final String ACTION_ELEMENT_NAME = "action"; - public static final String GROUP_ELEMENT_NAME = "group"; - public static final String CLASS_ATTR_NAME = "class"; - public static final String ID_ATTR_NAME = "id"; - public static final String INTERNAL_ATTR_NAME = "internal"; - public static final String ICON_ATTR_NAME = "icon"; - public static final String ADD_TO_GROUP_ELEMENT_NAME = "add-to-group"; - public static final String SHORTCUT_ELEMENT_NAME = "keyboard-shortcut"; - public static final String MOUSE_SHORTCUT_ELEMENT_NAME = "mouse-shortcut"; - public static final String DESCRIPTION = "description"; - public static final String TEXT_ATTR_NAME = "text"; - public static final String POPUP_ATTR_NAME = "popup"; - public static final String COMPACT_ATTR_NAME = "compact"; - public static final String SEPARATOR_ELEMENT_NAME = "separator"; - public static final String REFERENCE_ELEMENT_NAME = "reference"; - public static final String ABBREVIATION_ELEMENT_NAME = "abbreviation"; - public static final String GROUPID_ATTR_NAME = "group-id"; - public static final String ANCHOR_ELEMENT_NAME = "anchor"; - public static final String FIRST = "first"; - public static final String LAST = "last"; - public static final String BEFORE = "before"; - public static final String AFTER = "after"; - public static final String SECONDARY = "secondary"; - public static final String RELATIVE_TO_ACTION_ATTR_NAME = "relative-to-action"; - public static final String FIRST_KEYSTROKE_ATTR_NAME = "first-keystroke"; - public static final String SECOND_KEYSTROKE_ATTR_NAME = "second-keystroke"; - public static final String REMOVE_SHORTCUT_ATTR_NAME = "remove"; - public static final String REPLACE_SHORTCUT_ATTR_NAME = "replace-all"; - public static final String KEYMAP_ATTR_NAME = "keymap"; - public static final String KEYSTROKE_ATTR_NAME = "keystroke"; - public static final String REF_ATTR_NAME = "ref"; - public static final String VALUE_ATTR_NAME = "value"; - public static final String ACTIONS_BUNDLE = "messages.ActionsBundle"; - public static final String USE_SHORTCUT_OF_ATTR_NAME = "use-shortcut-of"; - public static final String OVERRIDES_ATTR_NAME = "overrides"; - public static final String KEEP_CONTENT_ATTR_NAME = "keep-content"; - public static final String PROJECT_TYPE = "project-type"; - public static final String UNREGISTER_ELEMENT_NAME = "unregister"; + private static final String ACTION_ELEMENT_NAME = "action"; + private static final String GROUP_ELEMENT_NAME = "group"; + private static final String CLASS_ATTR_NAME = "class"; + private static final String ID_ATTR_NAME = "id"; + private static final String INTERNAL_ATTR_NAME = "internal"; + private static final String ICON_ATTR_NAME = "icon"; + private static final String ADD_TO_GROUP_ELEMENT_NAME = "add-to-group"; + private static final String SHORTCUT_ELEMENT_NAME = "keyboard-shortcut"; + private static final String MOUSE_SHORTCUT_ELEMENT_NAME = "mouse-shortcut"; + private static final String DESCRIPTION = "description"; + private static final String TEXT_ATTR_NAME = "text"; + private static final String POPUP_ATTR_NAME = "popup"; + private static final String COMPACT_ATTR_NAME = "compact"; + private static final String SEPARATOR_ELEMENT_NAME = "separator"; + private static final String REFERENCE_ELEMENT_NAME = "reference"; + private static final String ABBREVIATION_ELEMENT_NAME = "abbreviation"; + private static final String GROUPID_ATTR_NAME = "group-id"; + private static final String ANCHOR_ELEMENT_NAME = "anchor"; + private static final String FIRST = "first"; + private static final String LAST = "last"; + private static final String BEFORE = "before"; + private static final String AFTER = "after"; + private static final String SECONDARY = "secondary"; + private static final String RELATIVE_TO_ACTION_ATTR_NAME = "relative-to-action"; + private static final String FIRST_KEYSTROKE_ATTR_NAME = "first-keystroke"; + private static final String SECOND_KEYSTROKE_ATTR_NAME = "second-keystroke"; + private static final String REMOVE_SHORTCUT_ATTR_NAME = "remove"; + private static final String REPLACE_SHORTCUT_ATTR_NAME = "replace-all"; + private static final String KEYMAP_ATTR_NAME = "keymap"; + private static final String KEYSTROKE_ATTR_NAME = "keystroke"; + private static final String REF_ATTR_NAME = "ref"; + private static final String VALUE_ATTR_NAME = "value"; + private static final String ACTIONS_BUNDLE = "messages.ActionsBundle"; + private static final String USE_SHORTCUT_OF_ATTR_NAME = "use-shortcut-of"; + private static final String OVERRIDES_ATTR_NAME = "overrides"; + private static final String KEEP_CONTENT_ATTR_NAME = "keep-content"; + private static final String PROJECT_TYPE = "project-type"; + private static final String UNREGISTER_ELEMENT_NAME = "unregister"; private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.actionSystem.impl.ActionManagerImpl"); private static final int DEACTIVATED_TIMER_DELAY = 5000; @@ -108,16 +108,15 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab private final Object myLock = new Object(); private final Map myId2Action = new THashMap<>(); - private final Map> myPlugin2Id = new THashMap<>(); + private final MultiMap myPlugin2Id = new MultiMap<>(); private final TObjectIntHashMap myId2Index = new TObjectIntHashMap<>(); private final Map myAction2Id = new THashMap<>(); private final MultiMap myId2GroupId = new MultiMap<>(); private final List myNotRegisteredInternalActionIds = new ArrayList<>(); private final List myActionListeners = ContainerUtil.createLockFreeCopyOnWriteList(); - private final List myActionPopupMenuListeners = ContainerUtil.createLockFreeCopyOnWriteList(); private final KeymapManagerEx myKeymapManager; private final DataManager myDataManager; - private final List myPopups = new ArrayList<>(); + private final List myPopups = new ArrayList<>(); private final Map myQueuedNotifications = new LinkedHashMap<>(); private final Map myQueuedNotificationsEvents = new LinkedHashMap<>(); private MyTimer myTimer; @@ -126,9 +125,8 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab private String myPrevPerformedActionId; private long myLastTimeEditorWasTypedIn; private boolean myTransparentOnlyUpdate; - private final Map myBaseActions = new HashMap<>(); private final AnActionListener messageBusPublisher; - private int myAnonymousGroupIdCounter = 0; + private int myAnonymousGroupIdCounter; ActionManagerImpl(@NotNull KeymapManager keymapManager, DataManager dataManager, @NotNull MessageBus messageBus) { myKeymapManager = (KeymapManagerEx)keymapManager; @@ -258,10 +256,10 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab return CommonBundle.messageOrDefault(bundle, elementType + "." + id + "." + TEXT_ATTR_NAME, value == null ? "" : value); } - public static boolean checkRelativeToAction(final String relativeToActionId, - @NotNull final Anchor anchor, - @NotNull final String actionName, - @Nullable final PluginId pluginId) { + private static boolean checkRelativeToAction(final String relativeToActionId, + @NotNull final Anchor anchor, + @NotNull final String actionName, + @Nullable final PluginId pluginId) { if ((Anchor.BEFORE == anchor || Anchor.AFTER == anchor) && relativeToActionId == null) { reportActionError(pluginId, actionName + ": \"relative-to-action\" cannot be null if anchor is \"after\" or \"before\""); return false; @@ -270,9 +268,9 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab } @Nullable - public static Anchor parseAnchor(final String anchorStr, - @Nullable final String actionName, - @Nullable final PluginId pluginId) { + private static Anchor parseAnchor(final String anchorStr, + @Nullable final String actionName, + @Nullable final PluginId pluginId) { if (anchorStr == null) { return Anchor.LAST; } @@ -383,22 +381,22 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab } @Override - public void addTimerListener(int delay, final TimerListener listener) { + public void addTimerListener(int delay, @NotNull final TimerListener listener) { _addTimerListener(listener, false); } @Override - public void removeTimerListener(TimerListener listener) { + public void removeTimerListener(@NotNull TimerListener listener) { _removeTimerListener(listener, false); } @Override - public void addTransparentTimerListener(int delay, TimerListener listener) { + public void addTransparentTimerListener(int delay, @NotNull TimerListener listener) { _addTimerListener(listener, true); } @Override - public void removeTransparentTimerListener(TimerListener listener) { + public void removeTransparentTimerListener(@NotNull TimerListener listener) { _removeTimerListener(listener, true); } @@ -425,7 +423,7 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab @NotNull @Override - public ActionPopupMenu createActionPopupMenu(String place, @NotNull ActionGroup group) { + public ActionPopupMenu createActionPopupMenu(@NotNull String place, @NotNull ActionGroup group) { return new ActionPopupMenuImpl(place, group, this, null); } @@ -437,7 +435,7 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab @NotNull @Override - public ActionToolbar createActionToolbar(final String place, @NotNull final ActionGroup group, final boolean horizontal, final boolean decorateButtons) { + public ActionToolbar createActionToolbar(@NotNull final String place, @NotNull final ActionGroup group, final boolean horizontal, final boolean decorateButtons) { return new ActionToolbarImpl(place, group, horizontal, decorateButtons, myDataManager, this, myKeymapManager); } @@ -461,7 +459,7 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab } @Nullable - private AnAction getActionImpl(String id, boolean canReturnStub) { + private AnAction getActionImpl(@NotNull String id, boolean canReturnStub) { AnAction action; synchronized (myLock) { action = myId2Action.get(id); @@ -510,6 +508,7 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab } } + @NotNull @Override public String[] getActionIds(@NotNull String idPrefix) { synchronized (myLock) { @@ -530,12 +529,12 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab @NotNull @Override - public JComponent createButtonToolbar(final String actionPlace, @NotNull final ActionGroup messageActionGroup) { + public JComponent createButtonToolbar(@NotNull final String actionPlace, @NotNull final ActionGroup messageActionGroup) { return new ButtonToolbarImpl(actionPlace, messageActionGroup, myDataManager, this); } @Override - public AnAction getActionOrStub(String id) { + public AnAction getActionOrStub(@NotNull String id) { return getActionImpl(id, true); } @@ -632,17 +631,15 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab reportActionError(pluginId, "unexpected name of element \"" + element.getName() + "\""); return null; } - boolean customClass = false; String className = element.getAttributeValue(CLASS_ATTR_NAME); if (className == null) { // use default group if class isn't specified - if ("true".equals(element.getAttributeValue(COMPACT_ATTR_NAME))) { - className = DefaultCompactActionGroup.class.getName(); - } else { - className = DefaultActionGroup.class.getName(); - } + className = "true".equals(element.getAttributeValue(COMPACT_ATTR_NAME)) + ? DefaultCompactActionGroup.class.getName() + : DefaultActionGroup.class.getName(); } try { ActionGroup group; + boolean customClass = false; if (DefaultActionGroup.class.getName().equals(className)) { group = new DefaultActionGroup(); } else if (DefaultCompactActionGroup.class.getName().equals(className)) { @@ -677,7 +674,7 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab } if (id == null) { - id = ""; + id = ""; } registerOrReplaceActionInner(element, id, group, pluginId); @@ -991,7 +988,7 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab myId2Index.put(actionId, myRegisteredActionsCount++); myAction2Id.put(action, actionId); if (pluginId != null && !(action instanceof ActionGroup)){ - myPlugin2Id.computeIfAbsent(pluginId, k -> new THashSet<>()).add(actionId); + myPlugin2Id.putValue(pluginId, actionId); } action.registerCustomShortcutSet(new ProxyShortcutSet(actionId, myKeymapManager), null); } @@ -1056,11 +1053,10 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab AnAction oldValue = myId2Action.remove(actionId); myAction2Id.remove(oldValue); myId2Index.remove(actionId); - for (PluginId pluginName : myPlugin2Id.keySet()) { - final THashSet pluginActions = myPlugin2Id.get(pluginName); - if (pluginActions != null) { - pluginActions.remove(actionId); - } + + for (final Map.Entry> entry : myPlugin2Id.entrySet()) { + Collection pluginActions = entry.getValue(); + pluginActions.remove(actionId); } if (removeFromGroups) { for (String groupId : myId2GroupId.get(actionId)) { @@ -1086,22 +1082,12 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab return ArrayUtilRt.toStringArray(myPlugin2Id.get(pluginName)); } - public void addActionPopup(final Object menu) { - boolean added = myPopups.add(menu); - if (added && menu instanceof ActionPopupMenu) { - for (ActionPopupMenuListener listener : myActionPopupMenuListeners) { - listener.actionPopupMenuCreated((ActionPopupMenu)menu); - } - } + void addActionPopup(@NotNull Object /*ActionPopupMenuImpl|JBPopup*/menu) { + myPopups.add(menu); } - void removeActionPopup(final Object menu) { + void removeActionPopup(@NotNull Object /*ActionPopupMenuImpl|JBPopup*/ menu) { final boolean removed = myPopups.remove(menu); - if (removed && menu instanceof ActionPopupMenu) { - for (ActionPopupMenuListener listener : myActionPopupMenuListeners) { - listener.actionPopupMenuReleased((ActionPopupMenu)menu); - } - } if (removed && myPopups.isEmpty()) { flushActionPerformed(); } @@ -1137,17 +1123,6 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab return myTransparentOnlyUpdate; } - @Override - public void addActionPopupMenuListener(ActionPopupMenuListener listener, Disposable parentDisposable) { - myActionPopupMenuListeners.add(listener); - Disposer.register(parentDisposable, new Disposable() { - @Override - public void dispose() { - myActionPopupMenuListeners.remove(listener); - } - }); - } - @Override public void replaceAction(@NotNull String actionId, @NotNull AnAction newAction) { Class callerClass = ReflectionUtil.getGrandCallerClass(); @@ -1158,9 +1133,6 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab private AnAction replaceAction(@NotNull String actionId, @NotNull AnAction newAction, @Nullable PluginId pluginId) { AnAction oldAction = newAction instanceof OverridingAction ? getAction(actionId) : getActionOrStub(actionId); if (oldAction != null) { - if (newAction instanceof OverridingAction) { - myBaseActions.put((OverridingAction) newAction, oldAction); - } boolean isGroup = oldAction instanceof ActionGroup; if (isGroup != newAction instanceof ActionGroup) { throw new IllegalStateException("cannot replace a group with an action and vice versa: " + actionId); @@ -1178,17 +1150,10 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab return oldAction; } - /** - * Returns the action overridden by the specified overriding action (with overrides="true" in plugin.xml). - */ - public AnAction getBaseAction(OverridingAction overridingAction) { - return myBaseActions.get(overridingAction); - } - private void flushActionPerformed() { - final Set actions = myQueuedNotifications.keySet(); - for (final AnAction eachAction : actions) { - final DataContext eachContext = myQueuedNotifications.get(eachAction); + for (final Map.Entry entry : myQueuedNotifications.entrySet()) { + AnAction eachAction = entry.getKey(); + final DataContext eachContext = entry.getValue(); fireAfterActionPerformed(eachAction, eachContext, myQueuedNotificationsEvents.get(eachAction)); } myQueuedNotifications.clear(); @@ -1222,7 +1187,7 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab } @Override - public void fireAfterActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, AnActionEvent event) { + public void fireAfterActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, @NotNull AnActionEvent event) { myPrevPerformedActionId = myLastPreformedActionId; myLastPreformedActionId = getId(action); //noinspection AssignmentToStaticFieldFromInstanceMethod @@ -1297,6 +1262,7 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab } } + @NotNull @Override public ActionCallback tryToExecute(@NotNull final AnAction action, @NotNull final InputEvent inputEvent, @Nullable final Component contextComponent, @Nullable final String place, boolean now) { @@ -1309,7 +1275,8 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab if (now) { doRunnable.run(); - } else { + } + else { //noinspection SSBasedInspection SwingUtilities.invokeLater(doRunnable); } @@ -1351,15 +1318,12 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab fireBeforeActionPerformed(action, context, event); - UIUtil.addAwtListener(new AWTEventListener() { - @Override - public void eventDispatched(AWTEvent event) { - if (event.getID() == WindowEvent.WINDOW_OPENED ||event.getID() == WindowEvent.WINDOW_ACTIVATED) { - if (!result.isProcessed()) { - final WindowEvent we = (WindowEvent)event; - IdeFocusManager.findInstanceByComponent(we.getWindow()).doWhenFocusSettlesDown(result.createSetDoneRunnable(), - ModalityState.defaultModalityState()); - } + UIUtil.addAwtListener(event1 -> { + if (event1.getID() == WindowEvent.WINDOW_OPENED || event1.getID() == WindowEvent.WINDOW_ACTIVATED) { + if (!result.isProcessed()) { + final WindowEvent we = (WindowEvent)event1; + IdeFocusManager.findInstanceByComponent(we.getWindow()).doWhenFocusSettlesDown(result.createSetDoneRunnable(), + ModalityState.defaultModalityState()); } } }, AWTEvent.WINDOW_EVENT_MASK, result); @@ -1400,11 +1364,11 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab return "Action manager timer"; } - public void addTimerListener(TimerListener listener, boolean transparent){ + void addTimerListener(@NotNull TimerListener listener, boolean transparent){ (transparent ? myTransparentTimerListeners : myTimerListeners).add(listener); } - public void removeTimerListener(TimerListener listener, boolean transparent){ + void removeTimerListener(@NotNull TimerListener listener, boolean transparent){ (transparent ? myTransparentTimerListeners : myTimerListeners).remove(listener); } @@ -1424,8 +1388,8 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab boolean transparentOnly = myLastTimePerformed == lastEventCount; try { - Set notified = new HashSet<>(); myTransparentOnlyUpdate = transparentOnly; + Set notified = new HashSet<>(); notifyListeners(myTransparentTimerListeners, notified); if (transparentOnly) { @@ -1439,7 +1403,7 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab } } - private void notifyListeners(final List timerListeners, final Set notified) { + private void notifyListeners(final List timerListeners, final Set notified) { for (TimerListener listener : timerListeners) { if (notified.add(listener)) { runListenerAction(listener); @@ -1447,7 +1411,7 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab } } - private void runListenerAction(final TimerListener listener) { + private void runListenerAction(@NotNull TimerListener listener) { ModalityState modalityState = listener.getModalityState(); if (modalityState == null) return; LOG.debug("notify ", listener); diff --git a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionToolbarImpl.java b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionToolbarImpl.java index 69e8b427d3fd..b29f2d769a33 100644 --- a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionToolbarImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionToolbarImpl.java @@ -42,8 +42,6 @@ import org.jetbrains.concurrency.CancellablePromise; import javax.swing.*; import java.awt.*; import java.awt.event.*; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; import java.lang.ref.ReferenceQueue; import java.lang.ref.WeakReference; import java.util.List; @@ -57,12 +55,9 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct private static final String RIGHT_ALIGN_KEY = "RIGHT_ALIGN"; static { - JBUI.addPropertyChangeListener(JBUI.USER_SCALE_FACTOR_PROPERTY, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent e) { - ((JBDimension)ActionToolbar.DEFAULT_MINIMUM_BUTTON_SIZE).update(); - ((JBDimension)ActionToolbar.NAVBAR_MINIMUM_BUTTON_SIZE).update(); - } + JBUI.addPropertyChangeListener(JBUI.USER_SCALE_FACTOR_PROPERTY, __ -> { + ((JBDimension)ActionToolbar.DEFAULT_MINIMUM_BUTTON_SIZE).update(); + ((JBDimension)ActionToolbar.NAVBAR_MINIMUM_BUTTON_SIZE).update(); }); } @@ -94,8 +89,9 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct private int myLayoutPolicy; private int myOrientation; private final ActionGroup myActionGroup; + @NotNull private final String myPlace; - protected List myVisibleActions; + List myVisibleActions; private final PresentationFactory myPresentationFactory = new PresentationFactory(); private final boolean myDecorateButtons; @@ -106,7 +102,6 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct */ private boolean myAdjustTheSameSize; - private final ActionButtonLook myButtonLook = null; private final ActionButtonLook myMinimalButtonLook = ActionButtonLook.INPLACE_LOOK; private final DataManager myDataManager; protected final ActionManagerEx myActionManager; @@ -114,10 +109,10 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct private Rectangle myAutoPopupRec; private final DefaultActionGroup mySecondaryActions = new DefaultActionGroup(); - private PopupStateModifier mySecondaryButtonPopupStateModifier = null; - private boolean myForceMinimumSize = false; - private boolean myForceShowFirstComponent = false; - private boolean mySkipWindowAdjustments = false; + private PopupStateModifier mySecondaryButtonPopupStateModifier; + private boolean myForceMinimumSize; + private boolean myForceShowFirstComponent; + private boolean mySkipWindowAdjustments; private boolean myMinimalMode; private boolean myForceUseMacEnhancements; @@ -132,10 +127,9 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct private JComponent myTargetComponent; private boolean myReservePlaceAutoPopupIcon = true; - private boolean myAddSeparatorFirst; - private boolean myShowSeparatorTitles = false; + private boolean myShowSeparatorTitles; - public ActionToolbarImpl(String place, + public ActionToolbarImpl(@NotNull String place, @NotNull final ActionGroup actionGroup, boolean horizontal, @NotNull DataManager dataManager, @@ -144,7 +138,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct this(place, actionGroup, horizontal, false, dataManager, actionManager, keymapManager, false); } - public ActionToolbarImpl(String place, + public ActionToolbarImpl(@NotNull String place, @NotNull ActionGroup actionGroup, boolean horizontal, boolean decorateButtons, @@ -154,7 +148,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct this(place, actionGroup, horizontal, decorateButtons, dataManager, actionManager, keymapManager, false); } - public ActionToolbarImpl(String place, + public ActionToolbarImpl(@NotNull String place, @NotNull ActionGroup actionGroup, final boolean horizontal, final boolean decorateButtons, @@ -199,6 +193,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct } } + @NotNull public String getPlace() { return myPlace; } @@ -278,35 +273,30 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct if (doMacEnhancementsForMainToolbar()) { final Rectangle r = getBounds(); UIUtil.drawGradientHToolbarBackground(g, r.width, r.height); - } else { + } + else { super.paintComponent(g); } - if (myLayoutPolicy == AUTO_LAYOUT_POLICY) { - if (myAutoPopupRec != null) { - if (myOrientation == SwingConstants.HORIZONTAL) { - final int dy = myAutoPopupRec.height / 2 - AllIcons.Ide.Link.getIconHeight() / 2; - AllIcons.Ide.Link.paintIcon(this, g, (int)myAutoPopupRec.getMaxX() - AllIcons.Ide.Link.getIconWidth() - 1, myAutoPopupRec.y + dy); - } - else { - final int dx = myAutoPopupRec.width / 2 - AllIcons.Ide.Link.getIconWidth() / 2; - AllIcons.Ide.Link.paintIcon(this, g, myAutoPopupRec.x + dx, (int)myAutoPopupRec.getMaxY() - AllIcons.Ide.Link.getIconWidth() - 1); - } + if (myLayoutPolicy == AUTO_LAYOUT_POLICY && myAutoPopupRec != null) { + if (myOrientation == SwingConstants.HORIZONTAL) { + final int dy = myAutoPopupRec.height / 2 - AllIcons.Ide.Link.getIconHeight() / 2; + AllIcons.Ide.Link.paintIcon(this, g, (int)myAutoPopupRec.getMaxX() - AllIcons.Ide.Link.getIconWidth() - 1, myAutoPopupRec.y + dy); + } + else { + final int dx = myAutoPopupRec.width / 2 - AllIcons.Ide.Link.getIconWidth() / 2; + AllIcons.Ide.Link.paintIcon(this, g, myAutoPopupRec.x + dx, (int)myAutoPopupRec.getMaxY() - AllIcons.Ide.Link.getIconWidth() - 1); } } } - public void setSecondaryButtonPopupStateModifier(PopupStateModifier popupStateModifier) { + public void setSecondaryButtonPopupStateModifier(@NotNull PopupStateModifier popupStateModifier) { mySecondaryButtonPopupStateModifier = popupStateModifier; } - private void fillToolBar(final List actions, boolean layoutSecondaries) { - final List rightAligned = new ArrayList<>(); + private void fillToolBar(@NotNull final List actions, boolean layoutSecondaries) { boolean isLastElementSeparator = false; - if (myAddSeparatorFirst) { - add(new MySeparator(null)); - isLastElementSeparator = true; - } + final List rightAligned = new ArrayList<>(); for (int i = 0; i < actions.size(); i++) { final AnAction action = actions.get(i); if (action instanceof RightAlignedToolbarAction) { @@ -359,21 +349,10 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct } add(button); } - //if ((ActionPlaces.MAIN_TOOLBAR.equals(myPlace) || ActionPlaces.NAVIGATION_BAR_TOOLBAR.equals(myPlace))) { - // final AnAction searchEverywhereAction = ActionManager.getInstance().getAction("SearchEverywhere"); - // if (searchEverywhereAction != null) { - // try { - // final CustomComponentAction searchEveryWhereAction = (CustomComponentAction)searchEverywhereAction; - // final JComponent searchEverywhere = searchEveryWhereAction.createCustomComponent(searchEverywhereAction.getTemplatePresentation()); - // searchEverywhere.putClientProperty("SEARCH_EVERYWHERE", Boolean.TRUE); - // add(searchEverywhere); - // } - // catch (Exception ignore) {} - // } - //} } - private JComponent getCustomComponent(AnAction action) { + @NotNull + private JComponent getCustomComponent(@NotNull AnAction action) { Presentation presentation = myPresentationFactory.getPresentation(action); JComponent customComponent = presentation.getClientProperty(CustomComponentAction.COMPONENT_KEY); if (customComponent == null) { @@ -404,11 +383,17 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct } } + @NotNull private Dimension getMinimumButtonSize() { return isInsideNavBar() ? NAVBAR_MINIMUM_BUTTON_SIZE : DEFAULT_MINIMUM_BUTTON_SIZE; } - public ActionButton createToolbarButton(final AnAction action, final ActionButtonLook look, final String place, final Presentation presentation, final Dimension minimumSize) { + @NotNull + private ActionButton createToolbarButton(@NotNull AnAction action, + final ActionButtonLook look, + @NotNull String place, + @NotNull Presentation presentation, + @NotNull Dimension minimumSize) { if (action.displayTextInToolbar()) { int mnemonic = KeyEvent.getExtendedKeyCodeForChar(action.getTemplatePresentation().getMnemonic()); @@ -419,16 +404,8 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct }; if (mnemonic != KeyEvent.VK_UNDEFINED) { - buttonWithText.registerKeyboardAction(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - buttonWithText.click(); - } - }, KeyStroke.getKeyStroke(mnemonic, - /*SystemInfo.isMac - ? InputEvent.CTRL_DOWN_MASK | - InputEvent.ALT_DOWN_MASK - :*/ InputEvent.ALT_DOWN_MASK), WHEN_IN_FOCUSED_WINDOW); + buttonWithText.registerKeyboardAction(__ -> buttonWithText.click(), KeyStroke.getKeyStroke(mnemonic, + InputEvent.ALT_DOWN_MASK), WHEN_IN_FOCUSED_WINDOW); } tweakActionComponentUI(buttonWithText); return buttonWithText; @@ -454,11 +431,13 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct return actionButton; } + @NotNull private HelpTooltip.Alignment tooltipLocation() { return myOrientation == SwingConstants.VERTICAL ? HelpTooltip.Alignment.RIGHT: HelpTooltip.Alignment.BOTTOM; } - private ActionButton createToolbarButton(final AnAction action) { + @NotNull + private ActionButton createToolbarButton(@NotNull AnAction action) { return createToolbarButton( action, myMinimalMode ? myMinimalButtonLook : myDecorateButtons ? new ActionButtonLook() { @@ -475,7 +454,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct ((Graphics2D)g).fill(g.getClip()); } } - } : myButtonLook, + } : null, myPlace, myPresentationFactory.getPresentation(action), myMinimumButtonSize.size()); } @@ -531,7 +510,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct return height; } - private void calculateBoundsNowrapImpl(List bounds) { + private void calculateBoundsNowrapImpl(@NotNull List bounds) { final int componentCount = getComponentCount(); LOG.assertTrue(componentCount <= bounds.size()); @@ -585,7 +564,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct } } - private void calculateBoundsAutoImp(Dimension sizeToFit, List bounds) { + private void calculateBoundsAutoImp(@NotNull Dimension sizeToFit, @NotNull List bounds) { final int componentCount = getComponentCount(); LOG.assertTrue(componentCount <= bounds.size()); @@ -613,12 +592,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct maxHeight = Math.max(eachBound.height, maxHeight); if (!full) { - boolean inside; - if (isLast) { - inside = eachX + eachBound.width <= widthToFit; - } else { - inside = eachX + eachBound.width + autoButtonSize <= widthToFit; - } + boolean inside = isLast ? eachX + eachBound.width <= widthToFit : eachX + eachBound.width + autoButtonSize <= widthToFit; if (inside) { if (eachComp == mySecondaryActionsButton) { @@ -697,7 +671,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct } - private void calculateBoundsWrapImpl(Dimension sizeToFit, List bounds) { + private void calculateBoundsWrapImpl(@NotNull Dimension sizeToFit, @NotNull List bounds) { // We have to graceful handle case when toolbar was not laid out yet. // In this case we calculate bounds as it is a NOWRAP toolbar. if (getWidth() == 0 || getHeight() == 0) { @@ -839,7 +813,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct /** * Calculates bounds of all the components in the toolbar */ - private void calculateBounds(Dimension size2Fit, List bounds) { + private void calculateBounds(@NotNull Dimension size2Fit, @NotNull List bounds) { bounds.clear(); for (int i = 0; i < getComponentCount(); i++) { bounds.add(new Rectangle()); @@ -880,6 +854,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct } @Override + @NotNull public Dimension getPreferredSize() { final ArrayList bounds = new ArrayList<>(); calculateBounds(new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE), bounds);//it doesn't take into account wrapping @@ -890,11 +865,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct calculateBounds(new Dimension(getWidth(), Integer.MAX_VALUE), limitedBounds); Rectangle union = null; for (Rectangle bound : limitedBounds) { - if (union == null) { - union = bound; - } else { - union = union.union(bound); - } + union = union == null ? bound : union.union(bound); } forcedHeight = union != null ? union.height : 0; } @@ -927,9 +898,8 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct } /** - * Forces the minimum size of the toolbar to show all buttons, When set to true. By default (false) the + * Forces the minimum size of the toolbar to show all buttons, When set to {@code true}. By default ({@code false}) the * toolbar will shrink further and show the auto popup chevron button. - * @param force */ public void setForceMinimumSize(boolean force) { myForceMinimumSize = force; @@ -937,7 +907,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct /** * By default minimum size is to show chevron only. - * If this option is true toolbar shows at least one (the first) component plus chevron (if need) + * If this option is {@code true} toolbar shows at least one (the first) component plus chevron (if need) */ public void setForceShowFirstComponent(boolean showFirstComponent) { myForceShowFirstComponent = showFirstComponent; @@ -947,7 +917,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct * This option makes sense when you use a toolbar inside JBPopup * When some 'actions' are hidden under the chevron the popup with extra components would be shown/hidden * with size adjustments for the main popup (this is default behavior). - * If this option is true size adjustments would be omitted + * If this option is {@code true} size adjustments would be omitted */ public void setSkipWindowAdjustments(boolean skipWindowAdjustments) { mySkipWindowAdjustments = skipWindowAdjustments; @@ -983,7 +953,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct private static final ReferenceQueue ourQueue = new ReferenceQueue<>(); private volatile Disposable myDisposable; - ToolbarReference(ActionToolbarImpl toolbar) { + ToolbarReference(@NotNull ActionToolbarImpl toolbar) { super(toolbar, ourQueue); processQueue(); } @@ -1047,7 +1017,8 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct int offset; if (myOrientation == SwingConstants.HORIZONTAL) { offset = ActionToolbarImpl.this.getHeight() - getMaxButtonHeight() - 1; - } else { + } + else { offset = ActionToolbarImpl.this.getWidth() - getMaxButtonWidth() - 1; } @@ -1126,7 +1097,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct myUpdater.updateActions(true, false); } - private boolean myAlreadyUpdated = false; + private boolean myAlreadyUpdated; private void updateActionsImpl(boolean transparentOnly, boolean forced) { DataContext dataContext = getDataContext(); @@ -1139,7 +1110,8 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct myLastUpdate = updater.expandActionGroupAsync(myActionGroup, false); myLastUpdate.onSuccess(actions -> actionsUpdated(forced, actions)).onProcessed(__ -> myLastUpdate = null); - } else { + } + else { actionsUpdated(forced, updater.expandActionGroupWithTimeout(myActionGroup, false)); myAlreadyUpdated = true; } @@ -1147,7 +1119,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct private CancellablePromise> myLastUpdate; - private void actionsUpdated(boolean forced, List newVisibleActions) { + private void actionsUpdated(boolean forced, @NotNull List newVisibleActions) { if (forced || !newVisibleActions.equals(myVisibleActions)) { boolean shouldRebuildUI = newVisibleActions.isEmpty() || myVisibleActions.isEmpty(); myVisibleActions = newVisibleActions; @@ -1194,7 +1166,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct } } - private static void updateWhenFirstShown(JComponent targetComponent, final ToolbarReference ref) { + private static void updateWhenFirstShown(@NotNull JComponent targetComponent, @NotNull ToolbarReference ref) { Activatable activatable = new Activatable.Adapter() { @Override public void showNotify() { @@ -1214,6 +1186,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct }; } + @NotNull @Override public DataContext getToolbarDataContext() { return getDataContext(); @@ -1224,6 +1197,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct myShowSeparatorTitles = showSeparatorTitles; } + @NotNull protected DataContext getDataContext() { return myTargetComponent != null ? myDataManager.getDataContext(myTargetComponent) : ((DataManagerImpl)myDataManager).getDataContextTest(this); } @@ -1261,6 +1235,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct hidePopup(); } + @NotNull @Override protected DataContext getDataContext() { return ActionToolbarImpl.this.getDataContext(); @@ -1293,14 +1268,9 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct } return toClose; }) - .setCancelOnMouseOutCallback(new MouseChecker() { - @Override - public boolean check(final MouseEvent event) { - return myAutoPopupRec != null && - myActionManager.isActionPopupStackEmpty() && - !new RelativeRectangle(ActionToolbarImpl.this, myAutoPopupRec).contains(new RelativePoint(event)); - } - }); + .setCancelOnMouseOutCallback(event -> myAutoPopupRec != null && + myActionManager.isActionPopupStackEmpty() && + !new RelativeRectangle(this, myAutoPopupRec).contains(new RelativePoint(event))); builder.addListener(new JBPopupAdapter() { @Override @@ -1311,7 +1281,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct myPopup = builder.createPopup(); ApplicationManager.getApplication().getMessageBus().connect(myPopup).subscribe(AnActionListener.TOPIC, new AnActionListener() { @Override - public void afterActionPerformed(AnAction action, @NotNull DataContext dataContext, AnActionEvent event) { + public void afterActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, @NotNull AnActionEvent event) { final JBPopup popup = myPopup; if (popup != null && !popup.isDisposed() && popup.isVisible()) { popup.cancel(); @@ -1346,21 +1316,14 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct } }; window.addComponentListener(componentAdapter); - Disposer.register(popupToolbar, new Disposable() { - @Override - public void dispose() { - window.removeComponentListener(componentAdapter); - } - }); + Disposer.register(popupToolbar, () -> window.removeComponentListener(componentAdapter)); } } private boolean isPopupShowing() { if (myPopup != null) { - if (myPopup.getContent() != null) { - return true; - } + return myPopup.getContent() != null; } return false; } @@ -1384,19 +1347,17 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct abstract static class PopupToolbar extends ActionToolbarImpl implements AnActionListener, Disposable { private final JComponent myParent; - PopupToolbar(final String place, - final ActionGroup actionGroup, - final boolean horizontal, - final DataManager dataManager, - @NotNull ActionManagerEx actionManager, - final KeymapManagerEx keymapManager, - JComponent parent) { + PopupToolbar(@NotNull String place, + @NotNull ActionGroup actionGroup, + final boolean horizontal, + @NotNull DataManager dataManager, + @NotNull ActionManagerEx actionManager, + @NotNull KeymapManagerEx keymapManager, + @NotNull JComponent parent) { super(place, actionGroup, horizontal, false, dataManager, actionManager, keymapManager, true); ApplicationManager.getApplication().getMessageBus().connect(this).subscribe(AnActionListener.TOPIC, this); myParent = parent; - if (myParent != null) { - setBorder(myParent.getBorder()); - } + setBorder(myParent.getBorder()); } @Override @@ -1410,11 +1371,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct } @Override - public void beforeActionPerformed(@NotNull final AnAction action, @NotNull final DataContext dataContext, AnActionEvent event) { - } - - @Override - public void afterActionPerformed(final AnAction action, @NotNull final DataContext dataContext, AnActionEvent event) { + public void afterActionPerformed(@NotNull final AnAction action, @NotNull final DataContext dataContext, @NotNull AnActionEvent event) { if (!myVisibleActions.contains(action)) { onOtherActionPerformed(); } @@ -1429,7 +1386,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct } @Override - public void setSecondaryActionsTooltip(String secondaryActionsTooltip) { + public void setSecondaryActionsTooltip(@NotNull String secondaryActionsTooltip) { mySecondaryActions.getTemplatePresentation().setDescription(secondaryActionsTooltip); } @@ -1484,11 +1441,6 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct myUpdater.updateActions(false, true); } - public void setAddSeparatorFirst(boolean addSeparatorFirst) { - myAddSeparatorFirst = addSeparatorFirst; - myUpdater.updateActions(false, true); - } - @TestOnly public Presentation getPresentation(AnAction action) { return myPresentationFactory.getPresentation(action); diff --git a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ButtonToolbarImpl.java b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ButtonToolbarImpl.java index 86da067c04ad..8f214b859707 100644 --- a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ButtonToolbarImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ButtonToolbarImpl.java @@ -13,23 +13,22 @@ import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.awt.event.MouseEvent; import java.util.ArrayList; /** * extended by fabrique */ -public class ButtonToolbarImpl extends JPanel { +class ButtonToolbarImpl extends JPanel { private final DataManager myDataManager; private final String myPlace; private final PresentationFactory myPresentationFactory; private final ArrayList myActions = new ArrayList<>(); - public ButtonToolbarImpl(final String place, - @NotNull ActionGroup actionGroup, - DataManager dataManager, - ActionManagerEx actionManager) { + ButtonToolbarImpl(@NotNull String place, + @NotNull ActionGroup actionGroup, + @NotNull DataManager dataManager, + @NotNull ActionManagerEx actionManager) { super(new GridBagLayout()); myPlace = place; myPresentationFactory = new PresentationFactory(); @@ -38,9 +37,8 @@ public class ButtonToolbarImpl extends JPanel { initButtons(actionGroup); updateActions(); - // actionManager.addTimerListener(500, new WeakTimerListener(actionManager, new MyTimerListener())); - enableEvents(MouseEvent.MOUSE_MOTION_EVENT_MASK | MouseEvent.MOUSE_EVENT_MASK); + enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK | AWTEvent.MOUSE_EVENT_MASK); } @@ -55,15 +53,12 @@ public class ButtonToolbarImpl extends JPanel { Box.createHorizontalGlue(), new GridBagConstraints(gridx++, 0, 1, 1, 1, 0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(8, 0, 0, 0), 0, 0)); - if (actions.length > 0) { - JPanel buttonsPanel = createButtons(actions); - //noinspection UnusedAssignment - add(buttonsPanel, - new GridBagConstraints(gridx++, 0, 1, 1, 0, 0, GridBagConstraints.CENTER, GridBagConstraints.NONE, - new Insets(8, 0, 0, 0), 0, 0)); - } + JPanel buttonsPanel = createButtons(actions); + //noinspection UnusedAssignment + add(buttonsPanel, + new GridBagConstraints(gridx++, 0, 1, 1, 0, 0, GridBagConstraints.CENTER, GridBagConstraints.NONE, + new Insets(8, 0, 0, 0), 0, 0)); } - } private JPanel createButtons(AnAction[] actions) { diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorLastActionTrackerImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorLastActionTrackerImpl.java index 586b7b282a95..b7d022e9beed 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorLastActionTrackerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorLastActionTrackerImpl.java @@ -61,7 +61,7 @@ public class EditorLastActionTrackerImpl implements AnActionListener, EditorMous } @Override - public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, AnActionEvent event) { + public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, @NotNull AnActionEvent event) { myCurrentEditor = CommonDataKeys.EDITOR.getData(dataContext); if (myCurrentEditor != myLastEditor) { resetLastAction(); @@ -69,7 +69,7 @@ public class EditorLastActionTrackerImpl implements AnActionListener, EditorMous } @Override - public void afterActionPerformed(AnAction action, @NotNull DataContext dataContext, AnActionEvent event) { + public void afterActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, @NotNull AnActionEvent event) { myLastActionId = getActionId(action); myLastEditor = myCurrentEditor; myCurrentEditor = null; diff --git a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ModifierKeyDoubleClickHandler.java b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ModifierKeyDoubleClickHandler.java index 2728d0518618..b7308f30ff92 100644 --- a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ModifierKeyDoubleClickHandler.java +++ b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ModifierKeyDoubleClickHandler.java @@ -262,7 +262,7 @@ public class ModifierKeyDoubleClickHandler implements Disposable, BaseComponent } @Override - public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, AnActionEvent event) { + public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, @NotNull AnActionEvent event) { if (!myIsRunningAction) resetState(); } diff --git a/platform/platform-impl/src/com/intellij/openapi/options/newEditor/ConfigurableEditor.java b/platform/platform-impl/src/com/intellij/openapi/options/newEditor/ConfigurableEditor.java index 9d1dce075e7d..fe7c16250f42 100644 --- a/platform/platform-impl/src/com/intellij/openapi/options/newEditor/ConfigurableEditor.java +++ b/platform/platform-impl/src/com/intellij/openapi/options/newEditor/ConfigurableEditor.java @@ -145,11 +145,11 @@ class ConfigurableEditor extends AbstractEditor implements AnActionListener, AWT } @Override - public final void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext context, AnActionEvent event) { + public final void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext context, @NotNull AnActionEvent event) { } @Override - public final void afterActionPerformed(AnAction action, @NotNull DataContext context, AnActionEvent event) { + public final void afterActionPerformed(@NotNull AnAction action, @NotNull DataContext context, @NotNull AnActionEvent event) { requestUpdate(); } diff --git a/platform/platform-impl/src/com/intellij/openapi/ui/playback/commands/ActionCommand.java b/platform/platform-impl/src/com/intellij/openapi/ui/playback/commands/ActionCommand.java index a49b4c2fc2d1..4a508fab79a8 100644 --- a/platform/platform-impl/src/com/intellij/openapi/ui/playback/commands/ActionCommand.java +++ b/platform/platform-impl/src/com/intellij/openapi/ui/playback/commands/ActionCommand.java @@ -70,7 +70,7 @@ public class ActionCommand extends TypeCommand { Disposable disposable = Disposer.newDisposable(); ApplicationManager.getApplication().getMessageBus().connect(disposable).subscribe(AnActionListener.TOPIC, new AnActionListener() { @Override - public void beforeActionPerformed(@NotNull final AnAction action, @NotNull DataContext dataContext, AnActionEvent event) { + public void beforeActionPerformed(@NotNull final AnAction action, @NotNull DataContext dataContext, @NotNull AnActionEvent event) { ApplicationManager.getApplication().invokeLater(() -> { if (context.isDisposed()) { Disposer.dispose(disposable); diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowManagerImpl.java index 08fda359b71c..e47bde10c2f7 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowManagerImpl.java @@ -134,7 +134,7 @@ public class ToolWindowManagerImpl extends ToolWindowManagerEx implements Persis busConnection.subscribe(ToolWindowManagerListener.TOPIC, myDispatcher.getMulticaster()); busConnection.subscribe(AnActionListener.TOPIC, new AnActionListener() { @Override - public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, AnActionEvent event) { + public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, @NotNull AnActionEvent event) { if (myCurrentState != KeyState.hold) { resetHoldState(); } diff --git a/platform/platform-impl/src/com/intellij/ui/BalloonImpl.java b/platform/platform-impl/src/com/intellij/ui/BalloonImpl.java index d84f7dcb1c5d..7bd30ff8a9d4 100644 --- a/platform/platform-impl/src/com/intellij/ui/BalloonImpl.java +++ b/platform/platform-impl/src/com/intellij/ui/BalloonImpl.java @@ -584,7 +584,7 @@ public class BalloonImpl implements Balloon, IdeTooltip.Ui { if (ApplicationManager.getApplication() != null) { ApplicationManager.getApplication().getMessageBus().connect(this).subscribe(AnActionListener.TOPIC, new AnActionListener() { @Override - public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, AnActionEvent event) { + public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, @NotNull AnActionEvent event) { if (myHideOnAction && !(action instanceof HintManagerImpl.ActionToIgnore)) { hide(); } diff --git a/platform/testGuiFramework/src/com/intellij/testGuiFramework/impl/LogActionsDuringTest.kt b/platform/testGuiFramework/src/com/intellij/testGuiFramework/impl/LogActionsDuringTest.kt index 9b045ceab8da..b33072ecc8b0 100644 --- a/platform/testGuiFramework/src/com/intellij/testGuiFramework/impl/LogActionsDuringTest.kt +++ b/platform/testGuiFramework/src/com/intellij/testGuiFramework/impl/LogActionsDuringTest.kt @@ -22,7 +22,7 @@ class LogActionsDuringTest : TestWatcher() { private var disposable: Disposable? = null private val actionListener = object : AnActionListener { - override fun beforeActionPerformed(action: AnAction, dataContext: DataContext, event: AnActionEvent?) { + override fun beforeActionPerformed(action: AnAction, dataContext: DataContext, event: AnActionEvent) { LOG.info("Action: $action (actionId: ${ActionManager.getInstance().getId(action)}); DataContext: $dataContext; Event: $event") } } diff --git a/platform/testGuiFramework/src/com/intellij/testGuiFramework/recorder/GlobalActionRecorder.kt b/platform/testGuiFramework/src/com/intellij/testGuiFramework/recorder/GlobalActionRecorder.kt index 79687a12c97c..5208b4db0963 100644 --- a/platform/testGuiFramework/src/com/intellij/testGuiFramework/recorder/GlobalActionRecorder.kt +++ b/platform/testGuiFramework/src/com/intellij/testGuiFramework/recorder/GlobalActionRecorder.kt @@ -24,8 +24,8 @@ object GlobalActionRecorder { private set private val globalActionListener = object : AnActionListener { - override fun beforeActionPerformed(action: AnAction, dataContext: DataContext, event: AnActionEvent?) { - if (event?.place == GuiScriptEditorPanel.GUI_SCRIPT_EDITOR_PLACE) return //avoid GUI Script Editor Actions + override fun beforeActionPerformed(action: AnAction, dataContext: DataContext, event: AnActionEvent) { + if (event.place == GuiScriptEditorPanel.GUI_SCRIPT_EDITOR_PLACE) return //avoid GUI Script Editor Actions EventDispatcher.processActionEvent(action, event) LOG.info("IDEA is going to perform action ${action.templatePresentation.text}") } @@ -34,9 +34,8 @@ object GlobalActionRecorder { LOG.info("IDEA typing detected: ${c}") } - override fun afterActionPerformed(action: AnAction?, dataContext: DataContext, event: AnActionEvent?) { - if (event?.place == GuiScriptEditorPanel.GUI_SCRIPT_EDITOR_PLACE) return //avoid GUI Script Editor Actions - if (action == null) return + override fun afterActionPerformed(action: AnAction, dataContext: DataContext, event: AnActionEvent) { + if (event.place == GuiScriptEditorPanel.GUI_SCRIPT_EDITOR_PLACE) return //avoid GUI Script Editor Actions LOG.info("IDEA action performed ${action.templatePresentation.text}") } } diff --git a/platform/util/src/com/intellij/util/ui/JBDimension.java b/platform/util/src/com/intellij/util/ui/JBDimension.java index a0935244f955..45862e5e3b15 100644 --- a/platform/util/src/com/intellij/util/ui/JBDimension.java +++ b/platform/util/src/com/intellij/util/ui/JBDimension.java @@ -16,6 +16,7 @@ package com.intellij.util.ui; import com.intellij.util.ui.JBUI.Scaler; +import org.jetbrains.annotations.NotNull; import javax.swing.plaf.UIResource; import java.awt.*; @@ -27,7 +28,7 @@ import static java.lang.Math.ceil; * @author tav */ public class JBDimension extends Dimension { - protected Size2D size2D; + Size2D size2D; private final MyScaler scaler = new MyScaler(); private static class Size2D { @@ -75,6 +76,7 @@ public class JBDimension extends Dimension { return Math.max(-1, JBUI.scale((float)size)); } + @NotNull public static JBDimension create(Dimension from, boolean preScaled) { if (from instanceof JBDimension) { return ((JBDimension)from); @@ -82,10 +84,12 @@ public class JBDimension extends Dimension { return new JBDimension(from.width, from.height, preScaled); } + @NotNull public static JBDimension create(Dimension from) { return create(from, false); } + @NotNull public JBDimensionUIResource asUIResource() { return new JBDimensionUIResource(this); } @@ -99,6 +103,7 @@ public class JBDimension extends Dimension { } } + @NotNull public JBDimension withWidth(int width) { JBDimension size = new JBDimension(0, 0); size.size2D.set(scale(width), size2D.height); @@ -107,6 +112,7 @@ public class JBDimension extends Dimension { return size; } + @NotNull public JBDimension withHeight(int height) { JBDimension size = new JBDimension(0, 0); size.size2D.set(size2D.width, scale(height)); @@ -142,6 +148,7 @@ public class JBDimension extends Dimension { /** * @return this JBDimension with updated size */ + @NotNull public JBDimension size() { update(); return this; @@ -150,6 +157,7 @@ public class JBDimension extends Dimension { /** * @return new JBDimension with updated size */ + @NotNull public JBDimension newSize() { update(); return new JBDimension(size2D.width, size2D.height, true); @@ -203,7 +211,7 @@ class MyScaler extends Scaler { return JBUI.scale(1f); } - public boolean needUpdate() { + boolean needUpdate() { return initialScale != JBUI.scale(1f); } diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/statistics/VcsBackForwardUsageTriggerCollector.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/statistics/VcsBackForwardUsageTriggerCollector.java index 893cdcddda53..65ee1b514f18 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/statistics/VcsBackForwardUsageTriggerCollector.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/statistics/VcsBackForwardUsageTriggerCollector.java @@ -28,7 +28,7 @@ public class VcsBackForwardUsageTriggerCollector extends ApplicationUsageTrigger public void componentsInitialized() { ApplicationManager.getApplication().getMessageBus().connect().subscribe(AnActionListener.TOPIC, new AnActionListener() { @Override - public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, AnActionEvent e) { + public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, @NotNull AnActionEvent e) { if (action instanceof BackAction || action instanceof ForwardAction) { FUSApplicationUsageTrigger.getInstance().trigger(VcsBackForwardUsageTriggerCollector.class, getContextName(e)); diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/memory/ui/InstancesViewBase.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/memory/ui/InstancesViewBase.java index 3a57eaafda29..3569535f204e 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/memory/ui/InstancesViewBase.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/memory/ui/InstancesViewBase.java @@ -85,7 +85,7 @@ public abstract class InstancesViewBase extends JBPanel implements Disposable { } @Override - public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, AnActionEvent event) { + public void beforeActionPerformed(@NotNull AnAction action, @NotNull DataContext dataContext, @NotNull AnActionEvent event) { if (dataContext.getData(PlatformDataKeys.CONTEXT_COMPONENT) == getInstancesTree() && (isAddToWatchesAction(action) || isEvaluateExpressionAction(action))) { XValueNodeImpl selectedNode = XDebuggerTreeActionBase.getSelectedNode(dataContext); diff --git a/plugins/stats-collector/src/com/intellij/stats/completion/LookupActionsListener.kt b/plugins/stats-collector/src/com/intellij/stats/completion/LookupActionsListener.kt index ed0e9540e472..afe8345a1b7f 100644 --- a/plugins/stats-collector/src/com/intellij/stats/completion/LookupActionsListener.kt +++ b/plugins/stats-collector/src/com/intellij/stats/completion/LookupActionsListener.kt @@ -16,7 +16,7 @@ class LookupActionsListener : AnActionListener { var listener: CompletionPopupListener = CompletionPopupListener.Adapter() - override fun afterActionPerformed(action: AnAction, dataContext: DataContext, event: AnActionEvent?) { + override fun afterActionPerformed(action: AnAction, dataContext: DataContext, event: AnActionEvent) { LOG.runAndLogException { when (action) { down -> listener.downPressed() @@ -26,7 +26,7 @@ class LookupActionsListener : AnActionListener { } } - override fun beforeActionPerformed(action: AnAction, dataContext: DataContext, event: AnActionEvent?) { + override fun beforeActionPerformed(action: AnAction, dataContext: DataContext, event: AnActionEvent) { LOG.runAndLogException { when (action) { down -> listener.beforeDownPressed()