|
What this is
Other links
The source code/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2003 Sun * Microsystems, Inc. All Rights Reserved. */ package org.netbeans.modules.refactoring.ui; import java.awt.*; import javax.swing.*; import javax.swing.tree.*; import javax.swing.plaf.ColorUIResource; import org.netbeans.modules.refactoring.api.RefactoringElement; import org.openide.awt.HtmlRenderer; import org.openide.util.Utilities; import org.openide.util.NbBundle; /** * @author Pavel Flaska */ public class CheckRenderer extends JPanel implements TreeCellRenderer { protected JCheckBox check; protected HtmlRenderer.Renderer renderer = HtmlRenderer.createRenderer(); private static Dimension checkDim; static Rectangle checkBounds; static { Dimension old = new JCheckBox().getPreferredSize(); checkDim = new Dimension(old.width, old.height - 5); } public CheckRenderer(boolean isQuery) { setLayout(null); if (isQuery) { check = null; } else { add(check = new JCheckBox()); Color c = UIManager.getColor("Tree.textBackground"); //NOI18N if (c == null) { //May be null on GTK L&F c = Color.WHITE; } check.setBackground(c); // NOI18N Dimension dim = check.getPreferredSize(); check.setPreferredSize(checkDim); } } /** The component returned by HtmlRenderer.Renderer.getTreeCellRendererComponent() */ private Component stringDisplayer = null; public Component getTreeCellRendererComponent(JTree tree, Object value, boolean isSelected, boolean expanded, boolean leaf, int row, boolean hasFocus) { CheckNode node = (CheckNode) value; stringDisplayer = renderer.getTreeCellRendererComponent(tree, getNodeText(node), isSelected, expanded, leaf, row, hasFocus); renderer.setIcon (node.getIcon()); stringDisplayer.setEnabled(!node.isDisabled()); //HtmlRenderer does not tolerate null colors - real ones are needed to //ensure fg/bg always diverge enough to be readable if (stringDisplayer.getBackground() == null) { stringDisplayer.setBackground (tree.getBackground()); } if (stringDisplayer.getForeground() == null) { stringDisplayer.setForeground (tree.getForeground()); } if (check != null) { check.setSelected(node.isSelected()); check.setEnabled(!node.isDisabled()); } return this; } public void paintComponent (Graphics g) { Dimension d_check = check == null ? new Dimension(0, 0) : check.getSize(); Dimension d_label = stringDisplayer == null ? new Dimension(0,0) : stringDisplayer.getPreferredSize(); int y_check = 0; int y_label = 0; if (d_check.height >= d_label.height) { y_label = (d_check.height - d_label.height) / 2; } if (check != null) { check.setBounds (0, 0, d_check.width, d_check.height); check.paint(g); } if (stringDisplayer != null) { int y = y_label-2; stringDisplayer.setBounds (d_check.width, y, d_label.width, getHeight()-1); g.translate (d_check.width, y_label); stringDisplayer.paint(g); g.translate (-d_check.width, -y_label); } } private String getNodeText(CheckNode node) { String nodeLabel = node.getLabel() == null ? NbBundle.getMessage(CheckRenderer.class,"LBL_NotAvailable") : node.getLabel(); nodeLabel = "" + nodeLabel; // NOI18N if (node.needsRefresh()) { nodeLabel += " - " + NbBundle.getMessage(RefactoringPanel.class, "LBL_NeedsRefresh"); } nodeLabel += ""; // NOI18N return nodeLabel; } public Dimension getPreferredSize() { if (stringDisplayer != null) { stringDisplayer.setFont(getFont()); } Dimension d_check = check == null ? new Dimension(0, checkDim.height) : check.getPreferredSize(); Dimension d_label = stringDisplayer != null ? stringDisplayer.getPreferredSize() : new Dimension(0,0); return new Dimension(d_check.width + d_label.width, (d_check.height < d_label.height ? d_label.height : d_check.height)); } public void doLayout() { Dimension d_check = check == null ? new Dimension(0, 0) : check.getPreferredSize(); Dimension d_label = stringDisplayer == null ? new Dimension (0,0) : stringDisplayer.getPreferredSize(); int y_check = 0; int y_label = 0; if (d_check.height < d_label.height) y_check = (d_label.height - d_check.height) / 2; else y_label = (d_check.height - d_label.height) / 2; if (check != null) { check.setLocation(0, y_check); check.setBounds(0, y_check, d_check.width, d_check.height); if (checkBounds == null) checkBounds = check.getBounds(); } } public static Rectangle getCheckBoxRectangle() { return (Rectangle) checkBounds.clone(); } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.