Unused import
[idea/community.git] / platform / platform-impl / src / com / intellij / ide / actions / BaseToolWindowToggleAction.java
1 /*
2  * Copyright 2000-2009 JetBrains s.r.o.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16 package com.intellij.ide.actions;
17
18 import com.intellij.openapi.actionSystem.AnActionEvent;
19 import com.intellij.openapi.actionSystem.CommonDataKeys;
20 import com.intellij.openapi.actionSystem.Presentation;
21 import com.intellij.openapi.actionSystem.ToggleAction;
22 import com.intellij.openapi.project.DumbAware;
23 import com.intellij.openapi.project.Project;
24 import com.intellij.openapi.wm.ToolWindow;
25 import com.intellij.openapi.wm.ToolWindowManager;
26 import com.intellij.openapi.wm.ex.ToolWindowEx;
27 import com.intellij.openapi.wm.ex.ToolWindowManagerEx;
28
29 public abstract class BaseToolWindowToggleAction extends ToggleAction implements DumbAware {
30
31   @Override
32   public final boolean isSelected(AnActionEvent e) {
33     Project project = CommonDataKeys.PROJECT.getData(e.getDataContext());
34     if (project == null || project.isDisposed()) {
35       return false;
36     }
37     ToolWindowManager mgr=ToolWindowManager.getInstance(project);
38     String id=mgr.getActiveToolWindowId();
39     if(id==null){
40       return false;
41     }
42     return isSelected(mgr.getToolWindow(id));
43   }
44
45   protected abstract boolean isSelected(ToolWindow window);
46
47   @Override
48   public final void setSelected(AnActionEvent e, boolean state) {
49     Project project = CommonDataKeys.PROJECT.getData(e.getDataContext());
50     if (project == null) {
51       return;
52     }
53     String id=ToolWindowManager.getInstance(project).getActiveToolWindowId();
54     if(id==null){
55       return;
56     }
57
58     ToolWindowManagerEx mgr=ToolWindowManagerEx.getInstanceEx(project);
59     ToolWindowEx toolWindow=(ToolWindowEx)mgr.getToolWindow(id);
60
61     setSelected(toolWindow, state);
62   }
63
64   protected abstract void setSelected(ToolWindow window, boolean state);
65
66   @Override
67   public final void update(AnActionEvent e) {
68     super.update(e);
69     Presentation presentation = e.getPresentation();
70     Project project = CommonDataKeys.PROJECT.getData(e.getDataContext());
71     if (project == null) {
72       presentation.setEnabled(false);
73       return;
74     }
75     ToolWindowManager mgr=ToolWindowManager.getInstance(project);
76     String id=mgr.getActiveToolWindowId();
77
78     if (id == null) {
79       presentation.setEnabled(false);
80       return;
81     }
82
83     ToolWindow window = mgr.getToolWindow(id);
84
85     if (window == null) {
86       presentation.setEnabled(false);
87       return;
88     }
89
90     update(window, presentation);
91   }
92
93   protected abstract void update(ToolWindow window, Presentation presentation);
94 }