blob: 70ed657378accf4c42a3b8f94c386282c484c8ef [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.ui.content;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.actionSystem.ActionGroup;
import com.intellij.openapi.ui.ComponentContainer;
import com.intellij.openapi.util.BusyObject;
import com.intellij.openapi.util.Computable;
import com.intellij.openapi.util.UserDataHolder;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.beans.PropertyChangeListener;
/**
* Represents a tab or pane displayed in a toolwindow or in another content manager.
*
* @see ContentFactory#createContent(javax.swing.JComponent, String, boolean)
*/
public interface Content extends UserDataHolder, ComponentContainer {
@NonNls
String PROP_DISPLAY_NAME = "displayName";
@NonNls
String PROP_ICON = "icon";
String PROP_ACTIONS = "actions";
@NonNls String PROP_DESCRIPTION = "description";
@NonNls
String PROP_COMPONENT = "component";
String PROP_ALERT = "alerting";
void setComponent(JComponent component);
void setPreferredFocusableComponent(JComponent component);
void setPreferredFocusedComponent(Computable<JComponent> computable);
void setIcon(Icon icon);
Icon getIcon();
void setDisplayName(String displayName);
String getDisplayName();
void setTabName(String tabName);
String getTabName();
void setToolwindowTitle(String toolwindowTitle);
String getToolwindowTitle();
Disposable getDisposer();
/**
* @param disposer a Disposable object which dispose() method will be invoked upon this content release.
*/
void setDisposer(Disposable disposer);
void setShouldDisposeContent(boolean value);
boolean shouldDisposeContent();
String getDescription();
void setDescription(String description);
void addPropertyChangeListener(PropertyChangeListener l);
void removePropertyChangeListener(PropertyChangeListener l);
ContentManager getManager();
boolean isSelected();
void release();
boolean isValid();
boolean isPinned();
void setPinned(boolean locked);
boolean isPinnable();
void setPinnable(boolean pinnable);
boolean isCloseable();
void setCloseable(boolean closeable);
void setActions(ActionGroup actions, String place, @Nullable JComponent contextComponent);
void setSearchComponent(@Nullable JComponent comp);
ActionGroup getActions();
@Nullable JComponent getSearchComponent();
String getPlace();
JComponent getActionsContextComponent();
void setAlertIcon(@Nullable AlertIcon icon);
@Nullable AlertIcon getAlertIcon();
void fireAlert();
@Nullable
BusyObject getBusyObject();
void setBusyObject(BusyObject object);
String getSeparator();
void setSeparator(String separator);
void setPopupIcon(Icon icon);
Icon getPopupIcon();
/**
* @param executionId supposed to identify group of contents (for example "Before Launch" tasks and the main Run Configuration)
*/
void setExecutionId(long executionId);
long getExecutionId();
}