/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package reportgen.gui.genepanel.corepanel.entitypanel;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JTree;
import javax.swing.UIManager;
import javax.swing.tree.DefaultTreeCellRenderer;
import reportgen.prototype.entity.QEntity;
/**
*
* @author axe
*/
class ModelRenderer extends DefaultTreeCellRenderer {
private Icon join;
private Icon canBeJoined;
public ModelRenderer() {
Icon origin = (Icon) UIManager.get("Tree.closedIcon");
if(origin != null) {
join = makeJoined(origin);
canBeJoined = makeCanBeJoined(origin);
}
}
private Icon makeJoined(Icon origin) {
Image img = new BufferedImage(origin.getIconWidth(), origin.getIconHeight(),
BufferedImage.TYPE_INT_ARGB);
origin.paintIcon(null, img.getGraphics(), 0, 0);
Graphics2D g = (Graphics2D) img.getGraphics();
g.setColor(new Color(255, 255, 255, 200));
g.fill(new Rectangle(origin.getIconWidth(), origin.getIconHeight()));
return new ImageIcon(img);
}
private Icon makeCanBeJoined(Icon origin) {
Image img = new BufferedImage(origin.getIconWidth(), origin.getIconHeight(),
BufferedImage.TYPE_INT_ARGB);
origin.paintIcon(null, img.getGraphics(), 0, 0);
Graphics g = img.getGraphics();
g.setColor(Color.BLACK);
Font fnt = new Font("Areal", Font.BOLD, 12);
g.setFont(fnt);
int fontHeight = g.getFontMetrics().getHeight();
g.drawString("!!!", 0, fontHeight);
return new ImageIcon(img);
}
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
JLabel label = (JLabel) super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
QEntity entity = (QEntity) value;
if(entity.isJoinedAnywere()) {
if(join != null) {
label.setIcon(join);
}
} else if(entity.canBeJoined()) {
if(join != null) {
label.setIcon(canBeJoined);
}
}
return label;
}
}