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.
18 * Created by IntelliJ IDEA.
23 package com
.intellij
.openapi
.wm
.impl
;
25 import com
.intellij
.openapi
.Disposable
;
26 import com
.intellij
.openapi
.ui
.MessageType
;
27 import com
.intellij
.openapi
.components
.ServiceManager
;
28 import com
.intellij
.openapi
.actionSystem
.AnAction
;
29 import com
.intellij
.openapi
.actionSystem
.DataProvider
;
30 import com
.intellij
.openapi
.util
.ActionCallback
;
31 import com
.intellij
.openapi
.util
.Condition
;
32 import com
.intellij
.openapi
.util
.ActiveRunnable
;
33 import com
.intellij
.openapi
.wm
.*;
34 import com
.intellij
.openapi
.wm
.ex
.ToolWindowManagerEx
;
35 import com
.intellij
.openapi
.wm
.ex
.ToolWindowManagerListener
;
36 import com
.intellij
.ui
.content
.Content
;
37 import com
.intellij
.ui
.content
.ContentFactory
;
38 import com
.intellij
.ui
.content
.ContentManager
;
39 import com
.intellij
.ui
.content
.ContentManagerListener
;
40 import com
.intellij
.util
.ArrayUtil
;
41 import org
.jetbrains
.annotations
.NonNls
;
42 import org
.jetbrains
.annotations
.NotNull
;
43 import org
.jetbrains
.annotations
.Nullable
;
46 import javax
.swing
.event
.HyperlinkListener
;
48 import java
.awt
.event
.InputEvent
;
49 import java
.util
.Collections
;
50 import java
.util
.List
;
51 import java
.util
.ArrayList
;
53 @SuppressWarnings({"ConstantConditions"})
54 public class ToolWindowHeadlessManagerImpl
extends ToolWindowManagerEx
{
56 public void notifyByBalloon(@NotNull final String toolWindowId
, @NotNull final MessageType type
, @NotNull final String htmlBody
) {
59 private static final ToolWindow HEADLESS_WINDOW
= new ToolWindow(){
60 public boolean isActive() {
64 public void activate(@Nullable Runnable runnable
) {
67 public boolean isDisposed() {
71 public boolean isVisible() {
76 public void show(@Nullable Runnable runnable
) {
79 public void hide(@Nullable Runnable runnable
) {
82 public ToolWindowAnchor
getAnchor() {
83 return ToolWindowAnchor
.BOTTOM
;
86 public void setAnchor(ToolWindowAnchor anchor
, @Nullable Runnable runnable
) {
89 public boolean isSplitMode() {
93 public void setSplitMode(final boolean isSideTool
, @Nullable final Runnable runnable
) {
97 public boolean isAutoHide() {
101 public void setAutoHide(boolean state
) {
104 public void setToHideOnEmptyContent(final boolean hideOnEmpty
) {
107 public boolean isToHideOnEmptyContent() {
111 public ToolWindowType
getType() {
112 return ToolWindowType
.SLIDING
;
115 public void setType(ToolWindowType type
, @Nullable Runnable runnable
) {
118 public Icon
getIcon() {
122 public void setIcon(Icon icon
) {
125 public String
getTitle() {
129 public void setTitle(String title
) {
132 public boolean isAvailable() {
136 public void setContentUiType(ToolWindowContentUiType type
, @Nullable Runnable runnable
) {
139 public void setDefaultContentUiType(@NotNull ToolWindowContentUiType type
) {
142 public ToolWindowContentUiType
getContentUiType() {
143 return ToolWindowContentUiType
.TABBED
;
146 public void setAvailable(boolean available
, @Nullable Runnable runnable
) {
149 public void installWatcher(ContentManager contentManager
) {
152 public JComponent
getComponent() {
156 public ContentManager
getContentManager() {
157 return MOCK_CONTENT_MANAGER
;
160 public void setDefaultState(@Nullable final ToolWindowAnchor anchor
, @Nullable final ToolWindowType type
, @Nullable final Rectangle floatingBounds
) {
163 public void activate(@Nullable final Runnable runnable
, final boolean autoFocusContents
) {
166 public void activate(@Nullable Runnable runnable
, boolean autoFocusContents
, boolean forced
) {
169 public void showContentPopup(InputEvent inputEvent
) {
173 @NonNls private static final ContentManager MOCK_CONTENT_MANAGER
= new ContentManager() {
174 public void addContent(@NotNull final Content content
) { }
175 public void addContent(@NotNull final Content content
, final Object constraints
) { }
176 public void addContentManagerListener(@NotNull final ContentManagerListener l
) { }
177 public void addDataProvider(@NotNull final DataProvider provider
) { }
178 public void addSelectedContent(@NotNull final Content content
) { }
179 public boolean canCloseAllContents() { return false; }
180 public boolean canCloseContents() { return false; }
181 public Content
findContent(final String displayName
) { return null; }
182 public List
<AnAction
> getAdditionalPopupActions(@NotNull final Content content
) { return Collections
.emptyList(); }
183 public String
getCloseActionName() { return "close"; }
184 public String
getCloseAllButThisActionName() { return "closeallbutthis"; }
185 public JComponent
getComponent() { return new JLabel(); }
186 public Content
getContent(final JComponent component
) { return null; }
188 public Content
getContent(final int index
) { return null; }
189 public int getContentCount() { return 0; }
191 public Content
[] getContents() { return new Content
[0]; }
192 public int getIndexOfContent(final Content content
) { return -1; }
194 public Content
getSelectedContent() { return null; }
196 public Content
[] getSelectedContents() { return new Content
[0]; }
197 public boolean isSelected(@NotNull final Content content
) { return false; }
198 public void removeAllContents(final boolean dispose
) { }
199 public boolean removeContent(@NotNull final Content content
, final boolean dispose
) { return false; }
200 public void removeContentManagerListener(@NotNull final ContentManagerListener l
) { }
201 public void removeFromSelection(@NotNull final Content content
) { }
202 public ActionCallback
selectNextContent() { return new ActionCallback
.Done();}
203 public ActionCallback
selectPreviousContent() { return new ActionCallback
.Done();}
204 public void setSelectedContent(@NotNull final Content content
) { }
205 public ActionCallback
setSelectedContentCB(@NotNull Content content
) { return new ActionCallback
.Done(); }
206 public void setSelectedContent(@NotNull final Content content
, final boolean requestFocus
) { }
207 public ActionCallback
setSelectedContentCB(@NotNull final Content content
, final boolean requestFocus
) { return new ActionCallback
.Done();}
209 public void setSelectedContent(@NotNull Content content
, boolean requestFocus
, boolean forcedFocus
) {
212 public ActionCallback
setSelectedContentCB(@NotNull final Content content
, final boolean requestFocus
, final boolean forcedFocus
) {
213 return new ActionCallback
.Done();
216 public ActionCallback
requestFocus(@Nullable final Content content
, final boolean forced
) {
217 return new ActionCallback
.Done();
220 public void dispose() {}
222 public boolean isDisposed() {
226 public boolean isSingleSelection() {
231 public ContentFactory
getFactory() {
232 return ServiceManager
.getService(ContentFactory
.class);
236 public ToolWindow
registerToolWindow(@NotNull String id
, @NotNull JComponent component
, @NotNull ToolWindowAnchor anchor
) {
237 return HEADLESS_WINDOW
;
240 public ToolWindow
registerToolWindow(@NotNull String id
, @NotNull JComponent component
, @NotNull ToolWindowAnchor anchor
, Disposable parentDisposable
, boolean canWorkInDumbMode
) {
241 return HEADLESS_WINDOW
;
244 public ToolWindow
registerToolWindow(@NotNull String id
, @NotNull JComponent component
, @NotNull ToolWindowAnchor anchor
, Disposable parentDisposable
) {
245 return HEADLESS_WINDOW
;
248 public ToolWindow
registerToolWindow(@NotNull final String id
, final boolean canCloseContent
, @NotNull final ToolWindowAnchor anchor
) {
249 return HEADLESS_WINDOW
;
252 public ToolWindow
registerToolWindow(@NotNull final String id
, final boolean canCloseContent
, @NotNull final ToolWindowAnchor anchor
, final boolean sideTool
) {
253 return HEADLESS_WINDOW
;
256 public ToolWindow
registerToolWindow(@NotNull final String id
, final boolean canCloseContent
, @NotNull final ToolWindowAnchor anchor
,
257 final Disposable parentDisposable
, final boolean dumbAware
) {
258 return HEADLESS_WINDOW
;
261 public void unregisterToolWindow(@NotNull String id
) {
264 public void activateEditorComponent() {
267 public boolean isEditorComponentActive() {
271 public ActionCallback
requestFocus(final Component c
, final boolean forced
) {
272 return new ActionCallback
.Done();
275 public ActionCallback
requestFocus(final ActiveRunnable command
, final boolean forced
) {
276 return new ActionCallback
.Done();
279 public JComponent
getFocusTargetFor(final JComponent comp
) {
283 public String
[] getToolWindowIds() {
284 return ArrayUtil
.EMPTY_STRING_ARRAY
;
287 public String
getActiveToolWindowId() {
291 public ToolWindow
getToolWindow(String id
) {
292 return HEADLESS_WINDOW
;
295 public void invokeLater(Runnable runnable
) {
298 public IdeFocusManager
getFocusManager() {
299 return IdeFocusManagerHeadless
.INSTANCE
;
303 public void notifyByBalloon(@NotNull final String toolWindowId
, final MessageType type
, @NotNull final String text
, @Nullable final Icon icon
,
304 @Nullable final HyperlinkListener listener
) {
307 public void addToolWindowManagerListener(ToolWindowManagerListener l
) {
311 public void removeToolWindowManagerListener(ToolWindowManagerListener l
) {
314 public String
getLastActiveToolWindowId() {
318 public String
getLastActiveToolWindowId(Condition
<JComponent
> condition
) {
322 public DesktopLayout
getLayout() {
323 return new DesktopLayout();
326 public void setLayoutToRestoreLater(DesktopLayout layout
) {
329 public DesktopLayout
getLayoutToRestoreLater() {
330 return new DesktopLayout();
333 public void setLayout(DesktopLayout layout
) {
336 public void clearSideStack() {
339 public void hideToolWindow(final String id
, final boolean hideSide
) {
342 public List
<String
> getIdsOn(final ToolWindowAnchor anchor
) {
343 return new ArrayList
<String
>();