2 * Copyright 2000-2009 JetBrains s.r.o.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package com
.intellij
.ide
.actions
;
18 import com
.intellij
.openapi
.actionSystem
.AnActionEvent
;
19 import com
.intellij
.openapi
.actionSystem
.PlatformDataKeys
;
20 import com
.intellij
.openapi
.actionSystem
.Presentation
;
21 import com
.intellij
.openapi
.actionSystem
.ToggleAction
;
22 import com
.intellij
.openapi
.project
.Project
;
23 import com
.intellij
.openapi
.project
.DumbAware
;
24 import com
.intellij
.openapi
.wm
.ToolWindow
;
25 import com
.intellij
.openapi
.wm
.ToolWindowManager
;
26 import com
.intellij
.openapi
.wm
.ToolWindowType
;
28 public class ToggleDockModeAction
extends ToggleAction
implements DumbAware
{
30 public boolean isSelected(AnActionEvent event
){
31 Project project
= PlatformDataKeys
.PROJECT
.getData(event
.getDataContext());
32 if (project
== null) {
35 ToolWindowManager windowManager
= ToolWindowManager
.getInstance(project
);
36 String id
=windowManager
.getActiveToolWindowId();
40 return ToolWindowType
.DOCKED
==windowManager
.getToolWindow(id
).getType();
43 public void setSelected(AnActionEvent event
,boolean flag
){
44 Project project
= PlatformDataKeys
.PROJECT
.getData(event
.getDataContext());
45 if (project
== null) {
48 ToolWindowManager windowManager
= ToolWindowManager
.getInstance(project
);
49 String id
=windowManager
.getActiveToolWindowId();
53 ToolWindow toolWindow
=windowManager
.getToolWindow(id
);
54 ToolWindowType type
=toolWindow
.getType();
55 if(ToolWindowType
.DOCKED
==type
){
56 toolWindow
.setType(ToolWindowType
.SLIDING
, null);
57 } else if(ToolWindowType
.SLIDING
==type
){
58 toolWindow
.setType(ToolWindowType
.DOCKED
, null);
62 public void update(AnActionEvent event
){
64 Presentation presentation
= event
.getPresentation();
65 Project project
= PlatformDataKeys
.PROJECT
.getData(event
.getDataContext());
66 if (project
== null) {
67 presentation
.setEnabled(false);
70 ToolWindowManager mgr
=ToolWindowManager
.getInstance(project
);
71 String id
=mgr
.getActiveToolWindowId();
73 presentation
.setEnabled(false);
76 ToolWindow toolWindow
=mgr
.getToolWindow(id
);
77 presentation
.setEnabled(toolWindow
.isAvailable()&&ToolWindowType
.FLOATING
!=toolWindow
.getType());