replaced <code></code> with more concise {@code}
[idea/community.git] / platform / platform-impl / src / com / intellij / ui / content / ContentManagerUtil.java
1 /*
2  * Copyright 2000-2013 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.ui.content;
17
18 import com.intellij.openapi.actionSystem.CommonDataKeys;
19 import com.intellij.openapi.actionSystem.DataContext;
20 import com.intellij.openapi.actionSystem.PlatformDataKeys;
21 import com.intellij.openapi.project.Project;
22 import com.intellij.openapi.wm.ex.ToolWindowEx;
23 import com.intellij.openapi.wm.ex.ToolWindowManagerEx;
24 import com.intellij.util.ObjectUtils;
25
26 public class ContentManagerUtil {
27   private ContentManagerUtil() {
28   }
29
30   /**
31    * This is utility method. It returns {@code ContentManager} from the current context.
32    */
33   public static ContentManager getContentManagerFromContext(DataContext dataContext, boolean requiresVisibleToolWindow){
34     Project project = CommonDataKeys.PROJECT.getData(dataContext);
35     if (project == null) {
36       return null;
37     }
38
39     ToolWindowManagerEx mgr=ToolWindowManagerEx.getInstanceEx(project);
40
41     String id = mgr.getActiveToolWindowId();
42     if (id == null) {
43       if(mgr.isEditorComponentActive()){
44         id = mgr.getLastActiveToolWindowId();
45       }
46     }
47
48     ToolWindowEx toolWindow = id != null ? (ToolWindowEx)mgr.getToolWindow(id) : null;
49     if (requiresVisibleToolWindow && (toolWindow == null || !toolWindow.isVisible())) {
50       return null;
51     }
52
53     ContentManager fromToolWindow = toolWindow != null ? toolWindow.getContentManager() : null;
54     ContentManager fromContext = PlatformDataKeys.CONTENT_MANAGER.getData(dataContext);
55     return ObjectUtils.chooseNotNull(fromContext, fromToolWindow);
56   }
57 }