blob: e4b07345bf3dbceb7550c13c7ae10d53f9587463 [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.impl.content;
import com.intellij.openapi.ui.popup.ListPopup;
import com.intellij.ui.Gray;
import com.intellij.ui.awt.RelativeRectangle;
import com.intellij.ui.content.Content;
import com.intellij.ui.content.ContentManagerEvent;
import com.intellij.util.ui.UIUtil;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
abstract class ContentLayout {
static final Color TAB_BORDER_ACTIVE_WINDOW = new Color(38, 63, 106);
static final Color TAB_BORDER_PASSIVE_WINDOW = new Color(130, 120, 111);
static final Color TAB_BG_ACTIVE_WND_SELECTED_FROM = Gray._111;
static final Color TAB_BG_ACTIVE_WND_SELECTED_TO = Gray._164;
static final Color TAB_BG_ACTIVE_WND_UNSELECTED_FROM = Gray._130;
static final Color TAB_BG_ACTIVE_WND_UNSELECTED_TO = Gray._85;
static final Color TAB_BG_PASSIVE_WND_FROM = new Color(152, 143, 134);
static final Color TAB_BG_PASSIVE_WND_TO = new Color(165, 157, 149);
static final int TAB_ARC = 2;
static final int TAB_SHIFT = 2;
ToolWindowContentUi myUi;
BaseLabel myIdLabel;
ContentLayout(ToolWindowContentUi ui) {
myUi = ui;
}
public abstract void init();
public abstract void reset();
public abstract void layout();
public abstract void paintComponent(Graphics g);
public abstract void paintChildren(Graphics g);
public abstract void update();
public abstract void rebuild();
public abstract int getMinimumWidth();
public abstract void contentAdded(ContentManagerEvent event);
public abstract void contentRemoved(ContentManagerEvent event);
public abstract boolean shouldDrawDecorations();
protected void updateIdLabel(BaseLabel label) {
label.setText(myUi.myWindow.getStripeTitle() + (shouldDrawDecorations() ? ":" : ""));
label.setBorder(new EmptyBorder(0, 2, 0, 8));
if (myUi.myManager.getContentCount() == 1) {
final String text = myUi.myManager.getContent(0).getDisplayName();
if (text != null && text.trim().length() > 0) {
label.setText(label.getText() + " ");
label.setBorder(new EmptyBorder(0, 2, 0, 0));
}
}
label.setVisible(shouldShowId());
}
protected void fillTabShape(Graphics2D g2d, Shape shape, boolean isSelected, Rectangle bounds) {
if (myUi.myWindow.isActive()) {
if (isSelected) {
g2d.setPaint(UIUtil.getGradientPaint(bounds.x, bounds.y, TAB_BG_ACTIVE_WND_SELECTED_FROM, bounds.x, (float)bounds.getMaxY(),
TAB_BG_ACTIVE_WND_SELECTED_TO));
}
else {
g2d.setPaint(UIUtil.getGradientPaint(bounds.x, bounds.y, TAB_BG_ACTIVE_WND_UNSELECTED_FROM, bounds.x, (float)bounds.getMaxY(), TAB_BG_ACTIVE_WND_UNSELECTED_TO));
}
}
else {
g2d.setPaint(
UIUtil.getGradientPaint(bounds.x, bounds.y, TAB_BG_PASSIVE_WND_FROM, bounds.x, (float)bounds.getMaxY(), TAB_BG_PASSIVE_WND_TO));
}
g2d.fill(shape);
}
public abstract void showContentPopup(ListPopup listPopup);
public abstract RelativeRectangle getRectangleFor(Content content);
public abstract Component getComponentFor(Content content);
public abstract String getCloseActionName();
public abstract String getCloseAllButThisActionName();
public abstract String getPreviousContentActionName();
public abstract String getNextContentActionName();
protected boolean shouldShowId() {
final JComponent component = myUi.myWindow.getComponent();
return component != null && !"true".equals(component.getClientProperty(ToolWindowContentUi.HIDE_ID_LABEL));
}
boolean isIdVisible() {
return myIdLabel.isVisible();
}
}