IDEA-57472 Floating tool windows should be more like native windows, with maximize/minimize/close buttons

(Patch from Alexander Lobas)
This commit is contained in:
Vassiliy.Kudryashov
2015-03-23 15:49:08 +03:00
parent e589c80456
commit fa8e2eeffe
@@ -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);
}