/**
* Copyright 2015 Santhosh Kumar Tekuri
*
* The JLibs authors license this file to you 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 jlibs.swing.tree;
import jlibs.core.graph.Visitor;
import javax.swing.*;
import javax.swing.tree.TreeCellRenderer;
import java.awt.*;
/**
* @author Santhosh Kumar T
*/
public class MyTreeCellRenderer extends JLabel implements TreeCellRenderer{
protected JTree tree;
protected boolean selected;
protected boolean expanded;
protected boolean leaf;
protected int row;
protected boolean hasFocus;
public Color foreground;
public Color selectionForeground;
public Color background;
public Color selectionBackground;
public MyTreeCellRenderer(){
setOpaque(true);
foreground = UIManager.getColor("Tree.textForeground");
selectionForeground = UIManager.getColor("Tree.selectionForeground");
background = UIManager.getColor("Tree.textBackground");
selectionBackground = UIManager.getColor("Tree.selectionBackground");
}
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus){
this.tree = tree;
this.selected = selected;
this.expanded = expanded;
this.leaf = leaf;
this.row = row;
this.hasFocus = hasFocus;
setFont(tree.getFont());
setText(getText(value));
setForeground(selected ? selectionForeground : foreground);
setBackground(selected ? selectionBackground : background);
return this;
}
private Visitor<Object, String> textConvertor;
public void setTextConvertor(Visitor<Object, String> textConvertor){
this.textConvertor = textConvertor;
}
public String getText(Object value){
if(textConvertor!=null)
return textConvertor.visit(value);
else
return tree.convertValueToText(value, selected, expanded, leaf, row, hasFocus);
}
}