| /* |
| * Copyright 2000-2013 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.wm.ToolWindow; |
| import com.intellij.ui.EngravedTextGraphics; |
| import com.intellij.ui.Gray; |
| import com.intellij.ui.JBColor; |
| import com.intellij.ui.content.Content; |
| import com.intellij.util.ui.UIUtil; |
| import com.intellij.util.ui.WatermarkIcon; |
| |
| import javax.swing.*; |
| import java.awt.*; |
| |
| public class BaseLabel extends JLabel { |
| protected ToolWindowContentUi myUi; |
| |
| private Color myActiveFg; |
| private Color myPassiveFg; |
| private boolean myBold; |
| |
| public BaseLabel(ToolWindowContentUi ui, boolean bold) { |
| myUi = ui; |
| setOpaque(false); |
| myBold = bold; |
| } |
| |
| @Override |
| public void updateUI() { |
| setActiveFg(JBColor.foreground()); |
| setPassiveFg(new JBColor(Gray._75, UIUtil.getLabelDisabledForeground())); |
| super.updateUI(); |
| } |
| |
| @Override |
| public Font getFont() { |
| Font f = UIUtil.getLabelFont(); |
| f = f.deriveFont(f.getStyle(), Math.max(11, f.getSize() - 2)); |
| if (myBold) { |
| f = f.deriveFont(Font.BOLD); |
| } |
| |
| return f; |
| } |
| |
| public static Font getLabelFont() { |
| Font f = UIUtil.getLabelFont(); |
| return f.deriveFont(f.getStyle(), Math.max(11, f.getSize() - 2)); |
| } |
| |
| public void setActiveFg(final Color fg) { |
| myActiveFg = fg; |
| } |
| |
| public void setPassiveFg(final Color passiveFg) { |
| myPassiveFg = passiveFg; |
| } |
| |
| protected void paintComponent(final Graphics g) { |
| final Color fore = myUi.myWindow.isActive() ? myActiveFg : myPassiveFg; |
| setForeground(fore); |
| super.paintComponent(_getGraphics((Graphics2D)g)); |
| } |
| |
| protected Graphics _getGraphics(Graphics2D g) { |
| if (!allowEngravement()) return g; |
| Color foreground = getForeground(); |
| if (Color.BLACK.equals(foreground)) { |
| return new EngravedTextGraphics(g); |
| } |
| |
| return g; |
| } |
| |
| protected boolean allowEngravement() { |
| return true; |
| } |
| |
| protected Color getActiveFg(boolean selected) { |
| return myActiveFg; |
| } |
| |
| protected Color getPassiveFg(boolean selected) { |
| return myPassiveFg; |
| } |
| |
| protected void updateTextAndIcon(Content content, boolean isSelected) { |
| if (content == null) { |
| setText(null); |
| setIcon(null); |
| } |
| else { |
| setText(content.getDisplayName()); |
| setActiveFg(getActiveFg(isSelected)); |
| setPassiveFg(getPassiveFg(isSelected)); |
| |
| setToolTipText(content.getDescription()); |
| |
| final boolean show = Boolean.TRUE.equals(content.getUserData(ToolWindow.SHOW_CONTENT_ICON)); |
| if (show) { |
| if (isSelected) { |
| setIcon(content.getIcon()); |
| } |
| else { |
| setIcon(content.getIcon() != null ? new WatermarkIcon(content.getIcon(), .5f) : null); |
| } |
| } |
| else { |
| setIcon(null); |
| } |
| |
| myBold = false; //isSelected; |
| } |
| } |
| |
| public Content getContent() { |
| return null; |
| } |
| } |