| /* |
| * 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.plaf.beg; |
| |
| import com.intellij.ui.Gray; |
| import com.intellij.util.ui.UIUtil; |
| |
| import javax.swing.*; |
| import javax.swing.plaf.ColorUIResource; |
| import javax.swing.tree.TreeCellRenderer; |
| import java.awt.*; |
| |
| //TODO remove the class |
| |
| @SuppressWarnings({"HardCodedStringLiteral"}) |
| public class BegCellRenderer extends JLabel implements TreeCellRenderer, ListCellRenderer { |
| protected Icon myLeafIcon; |
| protected Color myTextBackground; |
| protected boolean mySelected; |
| protected Color mySelectionForeground; |
| protected Color mySelectionBorderColor; |
| protected Icon myOpenIcon; |
| protected boolean myHasFocus; |
| protected Color myTextForeground; |
| protected boolean myDrawsFocusBorderAroundIcon; |
| protected Color mySelectionBackground; |
| protected Icon myClosedIcon; |
| |
| public BegCellRenderer() { |
| setHorizontalAlignment(SwingConstants.LEFT); |
| } |
| |
| public void setSelectionBorderColor(Color color) { |
| mySelectionBorderColor = color; |
| } |
| |
| public Component getTreeCellRendererComponent(JTree tree, Object obj, boolean selected, boolean expanded, boolean leaf, int i1, boolean hasFocus) { |
| setFont(UIUtil.getLabelFont()); |
| setLeafIcon(UIManager.getIcon("Tree.leafIcon")); |
| setClosedIcon(UIManager.getIcon("Tree.closedIcon")); |
| setOpenIcon(UIManager.getIcon("Tree.openIcon")); |
| setSelectionForeground(UIUtil.getTreeSelectionForeground()); |
| setTextForeground(UIUtil.getTreeTextForeground()); |
| setSelectionBackground(UIUtil.getTreeSelectionBackground()); |
| setTextBackground(UIUtil.getTreeTextBackground()); |
| setSelectionBorderColor(UIUtil.getTreeSelectionBorderColor()); |
| Object obj1 = UIManager.get("Tree.drawsFocusBorderAroundIcon"); |
| myDrawsFocusBorderAroundIcon = obj1 != null && ((Boolean)obj1).booleanValue(); |
| |
| myHasFocus = hasFocus; |
| mySelected = selected; |
| String text = tree.convertValueToText(obj, selected, expanded, leaf, i1, hasFocus); |
| setText(text); |
| if (selected){ |
| if(hasFocus){ |
| setForeground(getSelectionForeground()); |
| }else{ |
| setForeground(getTextForeground()); |
| } |
| } |
| else{ |
| setForeground(getTextForeground()); |
| } |
| Icon icon = getIcon(tree, obj, selected, expanded, leaf, i1, hasFocus); |
| setIcon(icon); |
| return this; |
| } |
| |
| public Component getListCellRendererComponent(JList list, Object obj, int index, boolean selected, boolean hasFocus) { |
| setFont(UIUtil.getLabelFont()); |
| setSelectionForeground(UIUtil.getListSelectionForeground()); |
| setTextForeground(UIUtil.getListForeground()); |
| setSelectionBackground(UIManager.getColor("List.selectionBackground")); |
| setTextBackground(UIUtil.getListBackground()); |
| setSelectionBorderColor(UIUtil.getTreeSelectionBorderColor()); |
| Object obj1 = UIManager.get("Tree.drawsFocusBorderAroundIcon"); |
| myDrawsFocusBorderAroundIcon = obj1 != null && ((Boolean)obj1).booleanValue(); |
| |
| myHasFocus = hasFocus; |
| mySelected = selected; |
| String text = String.valueOf(obj); |
| setText(text); |
| if (hasFocus && selected){ |
| setForeground(getSelectionForeground()); |
| }else{ |
| setForeground(getTextForeground()); |
| } |
| return this; |
| } |
| |
| |
| public void setSelectionBackground(Color color) { |
| mySelectionBackground = color; |
| } |
| |
| public Icon getClosedIcon() { |
| return myClosedIcon; |
| } |
| |
| public Dimension getPreferredSize() { |
| Dimension dimension = super.getPreferredSize(); |
| if (dimension != null){ |
| dimension = new Dimension(dimension.width + 3, dimension.height); |
| } |
| return dimension; |
| } |
| |
| public Icon getOriginalClosedIcon() { |
| return UIManager.getIcon("Tree.closedIcon"); |
| } |
| |
| public Color getSelectionBorderColor() { |
| return mySelectionBorderColor; |
| } |
| |
| public Color getSelectionForeground() { |
| return mySelectionForeground; |
| } |
| |
| public Color getTextBackground() { |
| return myTextBackground; |
| } |
| |
| public void setClosedIcon(Icon icon) { |
| myClosedIcon = icon; |
| } |
| |
| public void setTextBackground(Color color) { |
| myTextBackground = color; |
| } |
| |
| public void setTextForeground(Color color) { |
| myTextForeground = color; |
| } |
| |
| protected Icon getIcon(JTree jtree, Object obj, boolean selected, boolean expanded, boolean leaf, int i1, boolean flag3) { |
| Icon icon; |
| if (leaf){ |
| icon = getLeafIcon(); |
| } |
| else |
| if (expanded) |
| icon = getOpenIcon(); |
| else |
| icon = getClosedIcon(); |
| return icon; |
| } |
| |
| public Icon getLeafIcon() { |
| return myLeafIcon; |
| } |
| |
| public void setOpenIcon(Icon icon) { |
| myOpenIcon = icon; |
| } |
| |
| protected void paintNode(Graphics g) { |
| Color color; |
| if (mySelected) { |
| if (myHasFocus){ |
| color = getSelectionBackground(); |
| } |
| else{ |
| color = Gray._223; |
| } |
| } |
| else{ |
| color = getTextBackground(); |
| if (color == null){ |
| color = getBackground(); |
| } |
| } |
| if (color != null){ |
| int i1 = getBorderLeft(); |
| g.setColor(color); |
| g.fillRect(i1 - 1, 0, getWidth() - i1, getHeight()); |
| } |
| } |
| |
| protected void paintBorder(Graphics g) { |
| // if (/*myHasFocus ||*/ mySelected) { |
| if (myHasFocus){ |
| int i1 = getBorderLeft(); |
| if (myDrawsFocusBorderAroundIcon){ |
| i1 = 0; |
| } |
| else |
| if (i1 == -1){ |
| i1 = getBorderLeft(); |
| } |
| Color color = getSelectionBorderColor(); |
| if (color != null){ |
| g.setColor(color); |
| int j1 = getWidth() - 1; |
| int k1 = getHeight() - 1; |
| UIUtil.drawDottedRectangle(g, i1 > 0 ? i1 - 1 : i1, 0, j1, k1); |
| } |
| } |
| } |
| |
| public void paint(Graphics g) { |
| paintNode(g); |
| paintBorder(g); |
| super.paint(g); |
| } |
| |
| public Icon getOpenIcon() { |
| return myOpenIcon; |
| } |
| |
| public void setSelectionForeground(Color color) { |
| mySelectionForeground = color; |
| } |
| |
| public Icon getOriginalOpenIcon() { |
| return UIManager.getIcon("Tree.openIcon"); |
| } |
| |
| public void setLeafIcon(Icon icon) { |
| myLeafIcon = icon; |
| } |
| |
| public void setBackground(Color color) { |
| if (color instanceof ColorUIResource){ |
| color = null; |
| } |
| super.setBackground(color); |
| } |
| |
| public Color getSelectionBackground() { |
| return mySelectionBackground; |
| } |
| |
| |
| public Icon getOriginalLeafIcon() { |
| return UIManager.getIcon("Tree.leafIcon"); |
| } |
| |
| protected int getBorderLeft() { |
| Icon icon = getIcon(); |
| if (icon != null && getText() != null){ |
| return icon.getIconWidth() + Math.max(0, getIconTextGap() - 1); |
| //return 0; |
| } |
| else{ |
| return 0; |
| } |
| } |
| |
| public Color getTextForeground() { |
| return myTextForeground; |
| } |
| |
| } |