⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jdfresourcerenderer.java

📁 java xml 应用开发
💻 JAVA
字号:
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;

import javax.swing.JLabel;
import javax.swing.JTree;
import javax.swing.tree.TreeCellRenderer;

import org.cip4.jdflib.core.JDFElement;
import org.cip4.jdflib.util.StringUtil;

/**
 * @author AnderssA ThunellE SvenoniusI
 * The renderer used for the JTrees in the In & Output View
 */
public class JDFResourceRenderer implements TreeCellRenderer
{
    private JLabel renderer;
    private Color colorFoc = new Color(110, 200, 240);
    private Color colorSel = new Color(200, 200, 200);
    private JDFTreeNode treeNode;
    private JDFElement elem = null;
    private Wrapper w = null;
    private boolean highlightFN;
    private INIReader iniFile;

    public JDFResourceRenderer(INIReader ini)
    {
        renderer = new JLabel();
        renderer.setOpaque(true);
        
        highlightFN = Editor.getEditor().getFrame().getHighlightFN();
        this.iniFile = ini;
    }

    public Component getTreeCellRendererComponent(JTree jdfTree, Object value, boolean sel, boolean expanded,
        boolean leaf, int row, boolean hasFocus)
    {
        treeNode = Editor.getEditor().getFrame().getTreeNode(row, jdfTree);
        
        Color background;
        if (Editor.getEditor().getFrame().isSearching())
            background = sel ? colorSel : Color.white;
        else
            background = hasFocus ? colorFoc : Color.white;

        renderer.setBackground(background);
        renderer.setForeground(Color.black);
        renderer.setFont(new Font("Verdana", Font.PLAIN, 10));
        renderer.setText(value.toString());
        renderer.setToolTipText(value.toString());
        
        if(treeNode.getUserObject()!=null && treeNode.isElement())
            w = (Wrapper) treeNode.getUserObject();
        
        if (w != null)
            elem = (JDFElement) w.getElement();

        if (treeNode.getParent() != null && ((JDFTreeNode) treeNode.getParent()).hasForeignNS())
            treeNode.setForeignNS();
        
        if (treeNode.hasForeignNS() && treeNode.isValid() && highlightFN)
            renderer.setForeground(Color.blue);
            
        if (treeNode.isValid())
        {
            if (treeNode.isElement())
            {
                final String n = StringUtil.token(treeNode.toString(), 0, ":");

                if (n.equals("JDF"))
                {
                    if (hasFocus)
                        renderer.setIcon(iniFile.jdfElemIconS);
                    else
                        renderer.setIcon(iniFile.jdfElemIcon);
                }
                else if (elem != null && elem.hasAttribute("rRef", "", false))
                {
                    if (elem.getAttribute("Usage", "", "").equals("Input"))
                    {
                        if (hasFocus)
                            renderer.setIcon(iniFile.rRefInElemIconS);
                        else
                            renderer.setIcon(iniFile.rRefInElemIcon);
                    }
                    else if (elem.getAttribute("Usage", "", "").equals("Output"))
                    {
                        if (hasFocus)
                            renderer.setIcon(iniFile.rRefOutElemIconS);
                        else
                            renderer.setIcon(iniFile.rRefOutElemIcon);
                    }
                    else
                    {
                        if (hasFocus)
                            renderer.setIcon(iniFile.rRefElemIconS);
                        else
                        renderer.setIcon(iniFile.rRefElemIcon);
                    }
                }
                else
                {
                    if (hasFocus)
                        renderer.setIcon(iniFile.elemIconS);
                    else
                        renderer.setIcon(iniFile.elemIcon);
                }
            }
            else
            {
                final String att = treeNode.toString();
                final String n = StringUtil.token(att, 0, "=");
                final String attValue = att.substring(att.indexOf('"') + 1, att.length() - 1).toLowerCase();
                
                if (attValue.equals("new value"))
                    renderer.setForeground(Color.magenta);

                if (treeNode.isInherited())
                {
                    if (n.equals("PartIDKeys"))
                    {
                        if (hasFocus)
                            renderer.setIcon(iniFile.iPAttIconS);
                        else
                            renderer.setIcon(iniFile.iPAttIcon);
                    }
                    else
                    {
                        if (hasFocus)
                            renderer.setIcon(iniFile.iAttIconS);
                        else
                            renderer.setIcon(iniFile.iAttIcon);
                    }
                }
                else
                {
                    if (n.equals("PartIDKeys"))
                    {
                        if (hasFocus)
                            renderer.setIcon(iniFile.pAttIconS);
                        else
                            renderer.setIcon(iniFile.pAttIcon);
                    }
                    else if (n.equals("rRef"))
                    {
                        if (hasFocus)
                            renderer.setIcon(iniFile.refAttIconS);
                        else
                            renderer.setIcon(iniFile.refAttIcon);
                    }
                    else
                    {
                        if (hasFocus)
                            renderer.setIcon(iniFile.attIconS);
                        else
                            renderer.setIcon(iniFile.attIcon);
                    }
                }
            }
        }
        else
        {
            if (treeNode.isElement())
            {
                renderer.setForeground(Color.red);
                if (hasFocus)
                    renderer.setIcon(iniFile.errElemIconS);
                else
                    renderer.setIcon(iniFile.errElemIcon);
                    
                renderer.setToolTipText("Invalid Element");
            }
            else
            {
                renderer.setForeground(Color.red);
                if (hasFocus)
                    renderer.setIcon(iniFile.errAttIconS);
                else
                    renderer.setIcon(iniFile.errAttIcon);
                    
                renderer.setToolTipText("Invalid Attribute");
            }
        }
        return renderer;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -