d0a8755982037ca68c90a999de968758e7a1700c
[idea/community.git] / platform / platform-api / src / com / intellij / openapi / wm / ToolWindowManager.java
1 /*
2  * Copyright 2000-2014 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.openapi.wm;
17
18 import com.intellij.openapi.Disposable;
19 import com.intellij.openapi.project.Project;
20 import com.intellij.openapi.ui.MessageType;
21 import com.intellij.openapi.ui.popup.Balloon;
22 import org.jetbrains.annotations.NotNull;
23 import org.jetbrains.annotations.Nullable;
24
25 import javax.swing.*;
26 import javax.swing.event.HyperlinkListener;
27
28 /**
29  * If you want to register a toolwindow, which will be enabled during the dumb mode, please use {@link ToolWindowManager}'s
30  * registration methods which have 'canWorkInDumMode' parameter.
31  */
32 public abstract class ToolWindowManager {
33
34   public abstract boolean canShowNotification(@NotNull String toolWindowId);
35
36   public static ToolWindowManager getInstance(@NotNull Project project){
37     return project.getComponent(ToolWindowManager.class);
38   }
39
40   /**
41    * Register specified tool window into IDE window system.
42    * @param id <code>id</code> of tool window to be registered.
43    * @param component <code>component</code> which represents tool window content.
44    * May be null. Content can be further added via content manager for this tool window (See {@link ToolWindow#getContentManager()})
45    * @param anchor the default anchor for first registration. It uses only first time the
46    * tool window with the specified <code>id</code> is being registered into the window system.
47    * After the first registration window's anchor is stored in project file
48    * and <code>anchor</code> is ignored.
49    * @exception IllegalArgumentException if the same window is already installed or one
50    * of the parameters is <code>null</code>.
51    * @return tool window
52    * @deprecated  {@link ToolWindowManager#registerToolWindow(String, boolean, ToolWindowAnchor)}
53    */
54   @Deprecated
55   @NotNull
56   public abstract ToolWindow registerToolWindow(@NotNull String id, @NotNull JComponent component, @NotNull ToolWindowAnchor anchor);
57
58   /**
59   * @deprecated  {@link ToolWindowManager#registerToolWindow(String, boolean, ToolWindowAnchor)}
60   */
61   @Deprecated
62   @NotNull
63   public abstract ToolWindow registerToolWindow(@NotNull String id,
64                                                 @NotNull JComponent component,
65                                                 @NotNull ToolWindowAnchor anchor,
66                                                 @NotNull Disposable parentDisposable);
67
68   /**
69   * @deprecated  {@link ToolWindowManager#registerToolWindow(String, boolean, ToolWindowAnchor)}
70   */
71   @Deprecated
72   @NotNull
73   public abstract ToolWindow registerToolWindow(@NotNull String id,
74                                                 @NotNull JComponent component,
75                                                 @NotNull ToolWindowAnchor anchor,
76                                                 Disposable parentDisposable,
77                                                 boolean canWorkInDumbMode);
78   /**
79   * @deprecated  {@link ToolWindowManager#registerToolWindow(String, boolean, ToolWindowAnchor)}
80   */
81   @Deprecated
82   @NotNull
83   public abstract ToolWindow registerToolWindow(@NotNull String id,
84                                                 @NotNull JComponent component,
85                                                 @NotNull ToolWindowAnchor anchor,
86                                                 Disposable parentDisposable,
87                                                 boolean canWorkInDumbMode,
88                                                 boolean canCloseContents);
89
90   @NotNull
91   public abstract ToolWindow registerToolWindow(@NotNull String id, boolean canCloseContent, @NotNull ToolWindowAnchor anchor);
92
93   @NotNull
94   public abstract ToolWindow registerToolWindow(@NotNull String id, boolean canCloseContent, @NotNull ToolWindowAnchor anchor, boolean secondary);
95
96   @NotNull
97   public abstract ToolWindow registerToolWindow(@NotNull String id, boolean canCloseContent, @NotNull ToolWindowAnchor anchor, Disposable parentDisposable, boolean canWorkInDumbMode);
98
99   @NotNull
100   public ToolWindow registerToolWindow(@NotNull final String id,
101                                        final boolean canCloseContent,
102                                        @NotNull final ToolWindowAnchor anchor,
103                                        final Disposable parentDisposable) {
104     return registerToolWindow(id, canCloseContent, anchor, parentDisposable, false);
105   }
106
107   /**
108    * does nothing if tool window with specified isn't registered.
109    */
110   public abstract void unregisterToolWindow(@NotNull String id);
111
112   /**
113    */
114   public abstract void activateEditorComponent();
115
116   /**
117    * @return <code>true</code> if and only if editor component is active.
118    */
119   public abstract boolean isEditorComponentActive();
120
121   /**
122    * @return array of <code>id</code>s of all registered tool windows.
123    */
124   @NotNull
125   public abstract String[] getToolWindowIds();
126
127   /**
128    * @return <code>ID</code> of currently active tool window or <code>null</code> if there is no active
129    * tool window.
130    */
131   @Nullable
132   public abstract String getActiveToolWindowId();
133
134   /**
135    * @return registered tool window with specified <code>id</code>. If there is no registered
136    * tool window with specified <code>id</code> then the method returns <code>null</code>.
137    */
138   public abstract ToolWindow getToolWindow(String id);
139
140   /**
141    * Puts specified runnable to the tail of current command queue.
142    */
143   public abstract void invokeLater(@NotNull Runnable runnable);
144
145   /**
146    * Utility method for quick access to the focus manager
147    */
148   @NotNull
149   public abstract IdeFocusManager getFocusManager();
150
151   public abstract void notifyByBalloon(@NotNull final String toolWindowId, @NotNull final MessageType type, @NotNull final String htmlBody);
152
153   public abstract void notifyByBalloon(@NotNull final String toolWindowId,
154                                        @NotNull final MessageType type,
155                                        @NotNull final String htmlBody,
156                                        @Nullable final Icon icon,
157                                        @Nullable HyperlinkListener listener);
158
159   @Nullable
160   public abstract Balloon getToolWindowBalloon(String id);
161
162   public abstract boolean isMaximized(@NotNull ToolWindow wnd);
163
164   public abstract void setMaximized(@NotNull ToolWindow wnd, boolean maximized);
165 }