diff --git a/platform/platform-api/src/com/intellij/openapi/wm/StatusBar.java b/platform/platform-api/src/com/intellij/openapi/wm/StatusBar.java index 34acc9b21b9f..29b33b0091c4 100644 --- a/platform/platform-api/src/com/intellij/openapi/wm/StatusBar.java +++ b/platform/platform-api/src/com/intellij/openapi/wm/StatusBar.java @@ -1,18 +1,4 @@ -/* - * Copyright 2000-2019 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.openapi.wm; import com.intellij.openapi.Disposable; @@ -110,8 +96,12 @@ public interface StatusBar extends StatusBarInfo, Disposable { StatusBar findChild(Component c); + @Nullable IdeFrame getFrame(); + @Nullable + Project getProject(); + void install(IdeFrame frame); class Anchors { diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeRootPane.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeRootPane.java index fec9af3a7e95..e6645b4b4ef4 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeRootPane.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeRootPane.java @@ -91,10 +91,6 @@ public final class IdeRootPane extends JRootPane implements UISettingsListener, createStatusBar(frame); - updateStatusBarVisibility(); - - myContentPane.add(myStatusBar, BorderLayout.SOUTH); - IdeMenuBar menu = new IdeMenuBar(ActionManagerEx.getInstanceEx(), DataManager.getInstance()); myDecoratedMenu = IdeFrameDecorator.isCustomDecoration() && frame instanceof IdeFrameEx; @@ -266,11 +262,15 @@ public final class IdeRootPane extends JRootPane implements UISettingsListener, setMemoryIndicatorVisible(UISettings.getInstance().getShowMemoryIndicator()); myStatusBar.addWidget(new IdeMessagePanel(frame, MessagePool.getInstance()), StatusBar.Anchors.before(MemoryUsagePanel.WIDGET_ID)); + + myContentPane.add(myStatusBar, BorderLayout.SOUTH); + updateStatusBarVisibility(); } private void setMemoryIndicatorVisible(boolean visible) { if (myMemoryWidget == null) { if (!visible) { + myStatusBar.setBorder(BorderFactory.createEmptyBorder(1, 0, 0, 6)); return; } diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/TestWindowManager.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/TestWindowManager.java index 7bea6100be44..beec2dc2235c 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/TestWindowManager.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/TestWindowManager.java @@ -199,6 +199,12 @@ public final class TestWindowManager extends WindowManagerEx { private static final class DummyStatusBar implements StatusBarEx { private final Map myWidgetMap = new HashMap<>(); + @Nullable + @Override + public Project getProject() { + return null; + } + @Override public Dimension getSize() { return new Dimension(0, 0); diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/IdeStatusBarImpl.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/IdeStatusBarImpl.java index f1ca51d1d6d6..2fa65dc1e9c3 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/IdeStatusBarImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/IdeStatusBarImpl.java @@ -6,6 +6,7 @@ import com.intellij.notification.impl.IdeNotificationArea; import com.intellij.openapi.Disposable; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.TaskInfo; +import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.MessageType; import com.intellij.openapi.ui.popup.BalloonHandler; import com.intellij.openapi.ui.popup.ListPopup; @@ -736,6 +737,12 @@ public class IdeStatusBarImpl extends JComponent implements Accessible, StatusBa return myFrame; } + @Nullable + @Override + public Project getProject() { + return myFrame == null ? null : myFrame.getProject(); + } + @Override public AccessibleContext getAccessibleContext() { if (accessibleContext == null) { diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/ToolWindowsWidget.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/ToolWindowsWidget.java index 1c03164f3c3b..4fba98f1a98c 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/ToolWindowsWidget.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/ToolWindowsWidget.java @@ -113,7 +113,7 @@ class ToolWindowsWidget extends JLabel implements CustomStatusBarWidget, StatusB } if (myAlarm.getActiveRequestCount() == 0) { myAlarm.addRequest(() -> { - final IdeFrameImpl frame = ComponentUtil.getParentOfType((Class)IdeFrameImpl.class, (Component)this); + final IdeFrameImpl frame = ComponentUtil.getParentOfType(IdeFrameImpl.class, this); if (frame == null) return; List toolWindows = new ArrayList<>(); @@ -229,8 +229,7 @@ class ToolWindowsWidget extends JLabel implements CustomStatusBarWidget, StatusB } private boolean isActive() { - return myStatusBar != null && myStatusBar.getFrame() != null && myStatusBar.getFrame().getProject() != null && Registry - .is("ide.windowSystem.showTooWindowButtonsSwitcher"); + return myStatusBar != null && myStatusBar.getProject() != null && Registry.is("ide.windowSystem.showTooWindowButtonsSwitcher"); } @Override