Package reportgen.gui.genepanel.corepanel.entitypanel

Source Code of reportgen.gui.genepanel.corepanel.entitypanel.ModelRenderer

/*
* 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;
    }

}
TOP

Related Classes of reportgen.gui.genepanel.corepanel.entitypanel.ModelRenderer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.