blob: 4e12f29beaa0f11142224cf308084b216bed9c38 [file] [log] [blame]
/*
* Copyright 2000-2009 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.openapi.wm;
import com.intellij.openapi.util.ActionCallback;
import com.intellij.openapi.util.BusyObject;
import com.intellij.openapi.util.Key;
import com.intellij.ui.content.ContentManager;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.InputEvent;
public interface ToolWindow extends BusyObject {
Key<Boolean> SHOW_CONTENT_ICON = new Key<Boolean>("ContentIcon");
/**
* @exception IllegalStateException if tool window isn't installed.
*/
boolean isActive();
/**
* @param runnable A command to execute right after the window gets activated. The call is asynchronous since it may require animation.
* @exception IllegalStateException if tool window isn't installed.
*/
void activate(@Nullable Runnable runnable);
void activate(@Nullable Runnable runnable, boolean autoFocusContents);
void activate(@Nullable Runnable runnable, boolean autoFocusContents, boolean forced);
/**
* @return whether the tool window is visible or not.
* @exception IllegalStateException if tool window isn't installed.
*/
boolean isVisible();
/**
* @param runnable A command to execute right after the window shows up. The call is asynchronous since it may require animation.
* @exception IllegalStateException if tool window isn't installed.
*/
void show(@Nullable Runnable runnable);
/**
* Hides tool window. If the window is active then the method deactivates it.
* Does nothing if tool window isn't visible.
* @param runnable A command to execute right after the window hides. The call is asynchronous since it may require animation.
* @exception IllegalStateException if tool window isn't installed.
*/
void hide(@Nullable Runnable runnable);
/**
* @exception IllegalStateException if tool window isn't installed.
*/
ToolWindowAnchor getAnchor();
/**
* @exception IllegalStateException if tool window isn't installed.
*/
void setAnchor(ToolWindowAnchor anchor, @Nullable Runnable runnable);
/**
* @exception IllegalStateException if tool window isn't installed.
*/
boolean isSplitMode();
/**
* @exception IllegalStateException if tool window isn't installed.
*/
void setSplitMode(boolean split, @Nullable Runnable runnable);
/**
* @exception IllegalStateException if tool window isn't installed.
*/
boolean isAutoHide();
/**
* @exception IllegalStateException if tool window isn't installed.
*/
void setAutoHide(boolean state);
/**
* @exception IllegalStateException if tool window isn't installed.
*/
ToolWindowType getType();
/**
* @exception IllegalStateException if tool window isn't installed.
*/
void setType(ToolWindowType type, @Nullable Runnable runnable);
/**
* @return window icon. Returns <code>null</code> if window has no icon.
*/
Icon getIcon();
/**
* Sets new window icon.
*/
void setIcon(Icon icon);
/**
* @return window title. Returns <code>null</code> if window has no title.
*/
String getTitle();
/**
* Sets new window title.
*/
void setTitle(String title);
/**
* @return window stripe button text.
*/
@NotNull
String getStripeTitle();
/**
* Sets new window stripe button text.
*/
void setStripeTitle(@NotNull String title);
/**
* @return whether the window is available or not.
*/
boolean isAvailable();
/**
* Sets whether the tool window available or not. Term "available" means that tool window
* can be shown and it has button on tool window bar.
* @exception IllegalStateException if tool window isn't installed.
*/
void setAvailable(boolean available, @Nullable Runnable runnable);
void setContentUiType(ToolWindowContentUiType type, @Nullable Runnable runnable);
void setDefaultContentUiType(@NotNull ToolWindowContentUiType type);
ToolWindowContentUiType getContentUiType();
void installWatcher(ContentManager contentManager);
/**
* @return component which represents window content.
*/
JComponent getComponent();
ContentManager getContentManager();
void setDefaultState(@Nullable ToolWindowAnchor anchor, @Nullable ToolWindowType type, @Nullable Rectangle floatingBounds);
void setToHideOnEmptyContent(boolean hideOnEmpty);
boolean isToHideOnEmptyContent();
boolean isDisposed();
void showContentPopup(InputEvent inputEvent);
ActionCallback getActivation();
class Border extends EmptyBorder {
public Border() {
this(true, true, true, true);
}
public Border(boolean top, boolean left, boolean right, boolean bottom) {
super(top ? 2 : 0, left ? 2 : 0, right ? 2 : 0, bottom ? 2 : 0);
}
}
}