package app.navigps.gui.searchServices.swing;
import app.navigps.gui.searchServices.swing.ImageListForServices;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Insets;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JCheckBox;
import javax.swing.JPanel;
import javax.swing.JTree;
import javax.swing.tree.DefaultTreeCellRenderer;
/**
*
* @author wara
*/
public class JCheckBoxTreeRenderer extends DefaultTreeCellRenderer {
private JPanel panel = new JPanel();
/**
*
*/
public JCheckBox checkBox = new JCheckBox();
/**
*
*/
public JCheckBoxTreeRenderer() {
super();
panel.setLayout(new BorderLayout(3, 0));
checkBox.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
checkBox.setMargin(new Insets(0, 0, 0, 0));
panel.add(checkBox, BorderLayout.WEST);
panel.setOpaque(false);
checkBox.setOpaque(false);
}
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected,
boolean expanded, boolean leaf, int row, boolean hasFocus) {
boolean checked=false;
boolean anyChecked=false;
if(!(checked=((JCheckBoxTree)tree).isChecked(tree.getPathForRow(row)))){
anyChecked = ((JCheckBoxTree)tree).isAnyChildChecked(tree.getPathForRow(row));
}
if(checked || anyChecked ){
checkBox.setSelected(true);
} else {
checkBox.setSelected(false);
}
ImageIcon img = ImageListForServices.getIcon(""+value,false);
if(leaf){
setLeafIcon(img);
}
Component comp = super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
comp.setForeground(Color.WHITE);
setForeground(Color.WHITE);
panel.add(comp, BorderLayout.CENTER);
return (panel);
}
@Override
public Color getBackgroundNonSelectionColor() {
return null;
}
@Override
public Color getBackground() {
return null;
}
}