Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   *
   * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
   *
   * The contents of this file are subject to the terms of either the GNU
   * General Public License Version 2 only ("GPL") or the Common
   * Development and Distribution License("CDDL") (collectively, the
   * "License"). You may not use this file except in compliance with the
  * License. You can obtain a copy of the License at
  * http://www.netbeans.org/cddl-gplv2.html
  * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
  * specific language governing permissions and limitations under the
  * License.  When distributing the software, include this License Header
  * Notice in each file and include the License file at
  * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
  * particular file as subject to the "Classpath" exception as provided
  * by Sun in the GPL Version 2 section of the License file that
  * accompanied this code. If applicable, add the following below the
  * License Header, with the fields enclosed by brackets [] replaced by
  * your own identifying information:
  * "Portions Copyrighted [year] [name of copyright owner]"
  *
  * If you wish your version of this file to be governed by only the CDDL
  * or only the GPL Version 2, indicate your decision by adding
  * "[Contributor] elects to include this software in this distribution
  * under the [CDDL or GPL Version 2] license." If you do not indicate a
  * single choice of license, a recipient has the option to distribute
  * your version of this file under either the CDDL, the GPL Version 2 or
  * to extend the choice of license to its licensees as provided above.
  * However, if you add GPL Version 2 code and therefore, elected the GPL
  * Version 2 license, then the option applies only if the new code is
  * made subject to such option by the copyright holder.
  *
  * Contributor(s):
  *
  * Portions Copyrighted 2009 Sun Microsystems, Inc.
  */
 
 package org.netbeans.modules.kenai.ui.treelist;
 
 import java.awt.Color;
 import java.awt.Paint;
Wrapper for node renderers. Defines appropriate foreground/background colors, borders. Provides expansion button.

Author(s):
S. Aubrecht
 
 final class RendererPanel extends JPanel {
 
     static final boolean isAqua = "Aqua".equals(UIManager.getLookAndFeel().getID()); //NOI18N
     static final boolean isGtk = "GTK".equals(UIManager.getLookAndFeel().getID()); //NOI18N
 
     private static final Border NO_FOCUS_BORDER = BorderFactory.createCompoundBorder(
             BorderFactory.createMatteBorder(0,0, 1, 0, ColorManager.getDefault().getDefaultBackground()),
             BorderFactory.createEmptyBorder(1, 1, 0, 1) );
     private static Border INNER_BORDER;
 
     private static Color expandableRootBackground = null;
     private static Color expandableRootForeground = null;
     private static Color expandableRootSelectedBackground = null;
     private static Color expandableRootSelectedForeground = null;
 
     private static final Icon EMPTY_ICON = new EmptyIcon();
 
     private final boolean isRoot;
     private final TreeListNode node;;
     private JButton expander;
 
     public RendererPanelfinal TreeListNode node ) {
         supernew BorderLayout() );
 
         ifnull ==  )
             deriveColorsAndMargin();
 
         this. = node;
          = node.getParent() == null;
         setOpaque(! || ! || !node.isExpandable());
         ifnode.isExpandable() ) {
             = new LinkButton(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    node.setExpanded( !node.isExpanded() );
                }
            });
            add. );
        } else if( ! ) {
            addnew JLabelnew EmptyIcon() ), . );
        }
    }
    public void configureColor foregroundColor backgroundboolean isSelectedboolean hasFocusint nestingDepthint rowHeight ) {
        if && .isExpandable() ) {
            foreground = isSelected ?  : ;
            background = isSelected ?  : ;
        }
        JComponent inner = .getComponent(foregroundbackgroundisSelectedhasFocus);
        if.isExpandable() || ! )
            inner.setBorder();
        add(inner.);
        setBackground(background);
        setForeground(foreground);
        ifnull !=  ) {
            .setIcon.isExpanded() ? getExpandedIcon() : getCollapsedIcon() );
            .setPressedIcon(.getIcon());
        }
        Border border = null;
        if (hasFocus) {
            if (isSelected) {
                border = UIManager.getBorder("List.focusSelectedCellHighlightBorder"); // NOI18N
            }
            if (border == null) {
                border = UIManager.getBorder("List.focusCellHighlightBorder"); // NOI18N
            }
        }
        ifnull == border )
            border = ;
        border = BorderFactory.createCompoundBorder(border,
                BorderFactory.createEmptyBorder(..+nestingDepth*rowHeight/2,
                ..));
        setBorder(border);
    }
    @Override
    public void paintComponentGraphics g ) {
        if &&  && .isExpandable() ) {
            Graphics2D g2d = (Graphics2Dg;
            Paint oldPaint = g2d.getPaint();
            g2d.setPaintnew GradientPaint(0,0, ., 0, getHeight()/2, getBackground()) );
            g2d.fillRect(0, 0, getWidth(), getHeight());
            g2d.setPaint(oldPaint);
        } else {
            super.paintComponent(g);
        }
    }

    
Initialize the various colors we will be using. (copied from org.openide.explorer.propertysheet.PropUtils)
    private static void deriveColorsAndMargin() {
        //make sure UIManager constants for property sheet are initialized
        new PropertySheet();
        Color controlColor = UIManager.getColor("control"); //NOI18N
        if (controlColor == null) {
            controlColor = .;
        }
        int red;
        int green;
        int blue;
        boolean windows = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel".equals//NOI18N
                UIManager.getLookAndFeel().getClass().getName()
            );
        boolean nimbus = "Nimbus".equals(UIManager.getLookAndFeel().getID()); // NOI18N
         = UIManager.getColor("PropSheet.setBackground"); //NOI18N
         = UIManager.getColor("PropSheet.selectedSetBackground"); //NOI18N
        ifnimbus ||  ) {
             = UIManager.getColor"Menu.background" );//NOI18N
             = UIManager.getColor("Tree.selectionBackground"); //NOI18N
        }
        if ( == null) {
            if ( == null) {
                red = adjustColorComponent(controlColor.getRed(), -25, -25);
                green = adjustColorComponent(controlColor.getGreen(), -25, -25);
                blue = adjustColorComponent(controlColor.getBlue(), -25, -25);
                 = new Color(redgreenblue);
            }
        }
        if )
             = new Color( (int)Math.max(0.0, .getRed()*0.85)
                    , (int)Math.max(0.0, .getGreen()*0.85)
                    , (int)Math.max(0.0, .getBlue()*0.85));
        if ( == null) {
            Color col = windows ? UIManager.getColor("Table.selectionBackground"//NOI18N
                                : UIManager.getColor("activeCaptionBorder"); //NOI18N
            if (col == null) {
                col = .;
            }
            red = adjustColorComponent(col.getRed(), -25, -25);
            green = adjustColorComponent(col.getGreen(), -25, -25);
            blue = adjustColorComponent(col.getBlue(), -25, -25);
             = new Color(redgreenblue);
        }
         = UIManager.getColor("PropSheet.setForeground"); //NOI18N
        ifnimbus ||  )
             = new Color( UIManager.getColor"Menu.foreground" ).getRGB() ); //NOI18N
        if ( == null) {
             = UIManager.getColor("Table.foreground"); //NOI18N
            if ( == null) {
                 = UIManager.getColor("textText"); // NOI18N
                if ( == null) {
                     = .;
                }
            }
        }
         = UIManager.getColor("PropSheet.selectedSetForeground"); //NOI18N
        if ( == null) {
             = UIManager.getColor("Table.selectionForeground"); //NOI18N
            if ( == null) {
                 = .;
            }
        }
        if )
             = .;
        Integer i = (Integer) UIManager.get("netbeans.ps.iconmargin"); //NOI18N
        int iconMargin = 0;
        if (i != null) {
            iconMargin = i.intValue();
        } else {
            if ( windows ) {
                iconMargin = 4;
            } else {
                iconMargin = 0;
            }
        }
         = BorderFactory.createEmptyBorder(0, iconMargin, 0, 0);
    }

    
Adjust an rgb color component.

Parameters:
base the color, an RGB value 0-255
adjBright the amount to subtract if base > 128
adjDark the amount to add if base <=128
    private static int adjustColorComponent(int baseint adjBrightint adjDark) {
        if (base > 128) {
            base -= adjBright;
        } else {
            base += adjDark;
        }
        if (base < 0) {
            base = 0;
        }
        if (base > 255) {
            base = 255;
        }
        return base;
    }

    
Get the icon displayed by an expanded set. Typically this is just the same icon the look and feel supplies for trees
    static Icon getExpandedIcon() {
        Icon expandedIcon = UIManager.getIcon( ? "Tree.gtk_expandedIcon" : "Tree.expandedIcon"); //NOI18N
        assert expandedIcon != null"no Tree.expandedIcon found"//NOI18N
        return expandedIcon;
    }

    
Get the icon displayed by a collapsed set. Typically this is just the icon the look and feel supplies for trees
    static Icon getCollapsedIcon() {
        Icon collapsedIcon = UIManager.getIcon( ? "Tree.gtk_collapsedIcon" : "Tree.collapsedIcon"); //NOI18N
        assert collapsedIcon != null"no Tree.collapsedIcon found"//NOI18N
        return collapsedIcon;
    }
    private static class EmptyIcon implements Icon {
        public void paintIcon(Component cGraphics gint xint y) {
        }
        public int getIconWidth() {
            return getExpandedIcon().getIconWidth();
        }
        public int getIconHeight() {
            return getExpandedIcon().getIconHeight();
        }
    }
New to GrepCode? Check out our FAQ X