diff --git a/platform/icons/src/general/slideIn.png b/platform/icons/src/general/slideIn.png deleted file mode 100644 index 1b9c76fd2582..000000000000 Binary files a/platform/icons/src/general/slideIn.png and /dev/null differ diff --git a/platform/icons/src/general/slideIn2.png b/platform/icons/src/general/slideIn2.png deleted file mode 100644 index d9d8a1a0c71f..000000000000 Binary files a/platform/icons/src/general/slideIn2.png and /dev/null differ diff --git a/platform/icons/src/general/slideOut.png b/platform/icons/src/general/slideOut.png deleted file mode 100644 index 9e1cfbe5688d..000000000000 Binary files a/platform/icons/src/general/slideOut.png and /dev/null differ diff --git a/platform/icons/src/general/slideOut2.png b/platform/icons/src/general/slideOut2.png deleted file mode 100644 index b69cc9d82fd3..000000000000 Binary files a/platform/icons/src/general/slideOut2.png and /dev/null differ diff --git a/platform/icons/src/general/tbHidden.png b/platform/icons/src/general/tbHidden.png new file mode 100644 index 000000000000..779318afa10a Binary files /dev/null and b/platform/icons/src/general/tbHidden.png differ diff --git a/platform/icons/src/general/tbShown.png b/platform/icons/src/general/tbShown.png new file mode 100644 index 000000000000..0334ba0b5e3a Binary files /dev/null and b/platform/icons/src/general/tbShown.png differ 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 a9ad9d6b051f..52f92bdc4530 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 @@ -259,25 +259,13 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements } } - Keymap keymap = KeymapManager.getInstance().getActiveKeymap(); - Shortcut[] baseShortcut = keymap.getShortcuts("ActivateProjectToolWindow"); - int baseModifiers = 0; - for (Shortcut each : baseShortcut) { - if (each instanceof KeyboardShortcut) { - KeyStroke keyStroke = ((KeyboardShortcut)each).getFirstKeyStroke(); - baseModifiers = keyStroke.getModifiers(); - if (baseModifiers > 0) { - break; - } - } - } + Set vks = getActivateToolWindowVKs(); - if (baseModifiers == 0) { + if (vks.size() == 0) { resetHoldState(); return false; } - Set vks = QuickAccessSettings.getModifiersVKs(baseModifiers); if (vks.contains(e.getKeyCode())) { boolean pressed = e.getID() == KeyEvent.KEY_PRESSED; int modifiers = e.getModifiers(); @@ -297,6 +285,24 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements return false; } + public static Set getActivateToolWindowVKs() { + if (ApplicationManager.getApplication() == null) return new HashSet(); + + Keymap keymap = KeymapManager.getInstance().getActiveKeymap(); + Shortcut[] baseShortcut = keymap.getShortcuts("ActivateProjectToolWindow"); + int baseModifiers = 0; + for (Shortcut each : baseShortcut) { + if (each instanceof KeyboardShortcut) { + KeyStroke keyStroke = ((KeyboardShortcut)each).getFirstKeyStroke(); + baseModifiers = keyStroke.getModifiers(); + if (baseModifiers > 0) { + break; + } + } + } + return QuickAccessSettings.getModifiersVKs(baseModifiers); + } + private void resetHoldState() { myCurrentState = KeyState.waiting; processHoldState(); 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 1f93e6317652..344a8d1b9fc4 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 @@ -18,6 +18,7 @@ package com.intellij.openapi.wm.impl.status; import com.intellij.ide.ui.UISettings; import com.intellij.ide.ui.UISettingsListener; import com.intellij.openapi.Disposable; +import com.intellij.openapi.keymap.KeymapUtil; import com.intellij.openapi.progress.TaskInfo; import com.intellij.openapi.ui.MessageType; import com.intellij.openapi.ui.popup.BalloonHandler; @@ -26,6 +27,7 @@ import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.SystemInfo; +import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.wm.CustomStatusBarWidget; import com.intellij.openapi.wm.IdeFrame; @@ -33,6 +35,7 @@ import com.intellij.openapi.wm.StatusBar; import com.intellij.openapi.wm.StatusBarWidget; import com.intellij.openapi.wm.ex.ProgressIndicatorEx; import com.intellij.openapi.wm.ex.StatusBarEx; +import com.intellij.openapi.wm.impl.ToolWindowManagerImpl; import com.intellij.ui.awt.RelativePoint; import com.intellij.ui.popup.NotificationPopup; import com.intellij.util.ArrayUtil; @@ -762,8 +765,8 @@ public class IdeStatusBarImpl extends JComponent implements StatusBarEx { private static class ToolWindowsWidget extends JLabel implements CustomStatusBarWidget, StatusBarWidget.Multiframe, Disposable, UISettingsListener, PropertyChangeListener { - private static final Icon OUT = IconLoader.getIcon("/general/slideOut2.png"); - private static final Icon IN = IconLoader.getIcon("/general/slideIn2.png"); + private static final Icon HIDDEN = IconLoader.getIcon("/general/tbShown.png"); + private static final Icon SHOWN = IconLoader.getIcon("/general/tbHidden.png"); private StatusBar myStatusBar; private ToolWindowsWidget() { @@ -776,7 +779,6 @@ public class IdeStatusBarImpl extends JComponent implements StatusBarEx { UISettings.getInstance().addUISettingsListener(this, this); KeyboardFocusManager.getCurrentKeyboardFocusManager().addPropertyChangeListener("focusOwner", this); - setToolTipText("Click to show/hide tool windows side bars"); } @@ -806,12 +808,24 @@ public class IdeStatusBarImpl extends JComponent implements StatusBarEx { changes = true; } - Icon icon = UISettings.getInstance().HIDE_TOOL_STRIPES ? OUT : IN; + Icon icon = UISettings.getInstance().HIDE_TOOL_STRIPES ? HIDDEN : SHOWN; if (icon != getIcon()) { setIcon(icon); changes = true; } + Set vks = ToolWindowManagerImpl.getActivateToolWindowVKs(); + String text = "Click to show/hide tool windows side bars"; + if (vks.size() == 1) { + Integer stroke = vks.iterator().next(); + String keystrokeText = KeymapUtil.getKeystrokeText(KeyStroke.getKeyStroke(stroke.intValue(), 0)); + text += "\nUse double click of " + keystrokeText + " to popup them when hidden"; + } + if (!text.equals(getToolTipText())) { + setToolTipText(text); + changes = true; + } + if (changes) { revalidate(); repaint(); @@ -819,11 +833,12 @@ public class IdeStatusBarImpl extends JComponent implements StatusBarEx { } else { setVisible(false); + setToolTipText(null); } } private boolean isActive() { - return myStatusBar != null && myStatusBar.getFrame() != null && myStatusBar.getFrame().getProject() != null; + return myStatusBar != null && myStatusBar.getFrame() != null && myStatusBar.getFrame().getProject() != null && Registry.is("ide.windowSystem.showTooWindowButtonsSwitcher"); } @Override diff --git a/platform/platform-resources-en/src/misc/registry.properties b/platform/platform-resources-en/src/misc/registry.properties index d5bdd55266cc..474e36f5ba89 100644 --- a/platform/platform-resources-en/src/misc/registry.properties +++ b/platform/platform-resources-en/src/misc/registry.properties @@ -49,6 +49,7 @@ ide.windowSystem.focusAppOnStartup=true ide.windowSystem.autoShowProcessPopup=false ide.windowSystem.showListItemsPopup=true ide.windowSystem.asyncSplitters=true +ide.windowSystem.showTooWindowButtonsSwitcher=true ide.tree.yeildingUiUpdate=true ide.tree.showBusyIndicator=true