diff --git a/platform/platform-impl/src/com/intellij/designer/LightToolWindow.java b/platform/platform-impl/src/com/intellij/designer/LightToolWindow.java index c0953e4c06c0..b7d801edd8bb 100644 --- a/platform/platform-impl/src/com/intellij/designer/LightToolWindow.java +++ b/platform/platform-impl/src/com/intellij/designer/LightToolWindow.java @@ -16,7 +16,6 @@ package com.intellij.designer; import com.intellij.icons.AllIcons; -import com.intellij.ide.actions.ToggleWindowedModeAction; import com.intellij.ide.util.PropertiesComponent; import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.actionSystem.impl.ActionManagerImpl; @@ -416,14 +415,9 @@ public class LightToolWindow extends JPanel { } } - private class ToggleDockModeAction extends ToggleAction { + private class ToggleDockModeAction extends ToggleTypeModeAction { public ToggleDockModeAction() { - copyFrom(ActionManager.getInstance().getAction(InternalDecorator.TOGGLE_DOCK_MODE_ACTION_ID)); - } - - @Override - public boolean isSelected(AnActionEvent e) { - return myManager.getToolWindow().getType() == ToolWindowType.DOCKED; + super(ToolWindowType.DOCKED, InternalDecorator.TOGGLE_DOCK_MODE_ACTION_ID); } @Override @@ -440,25 +434,45 @@ public class LightToolWindow extends JPanel { } } - private class ToggleFloatingModeAction extends ToggleAction { + private class ToggleFloatingModeAction extends ToggleTypeModeAction { public ToggleFloatingModeAction() { - copyFrom(ActionManager.getInstance().getAction(InternalDecorator.TOGGLE_FLOATING_MODE_ACTION_ID)); + super(ToolWindowType.FLOATING, InternalDecorator.TOGGLE_FLOATING_MODE_ACTION_ID); + } + } + + private class ToggleWindowedModeAction extends ToggleTypeModeAction { + public ToggleWindowedModeAction() { + super(ToolWindowType.WINDOWED, InternalDecorator.TOGGLE_WINDOWED_MODE_ACTION_ID); + } + + @Override + public void update(@NotNull AnActionEvent e) { + e.getPresentation().setEnabledAndVisible(!SystemInfo.isMac); + } + } + + private class ToggleTypeModeAction extends ToggleAction { + private final ToolWindowType myType; + + public ToggleTypeModeAction(ToolWindowType type, String id) { + myType = type; + copyFrom(ActionManager.getInstance().getAction(id)); } @Override public boolean isSelected(AnActionEvent e) { - return myManager.getToolWindow().getType() == ToolWindowType.FLOATING; + return myManager.getToolWindow().getType() == myType; } @Override public void setSelected(AnActionEvent e, boolean state) { ToolWindow window = myManager.getToolWindow(); ToolWindowType type = window.getType(); - if (type == ToolWindowType.FLOATING) { + if (type == myType) { window.setType(((ToolWindowEx)window).getInternalType(), null); } else { - window.setType(ToolWindowType.FLOATING, null); + window.setType(myType, null); } myManager.setEditorMode(null); }