001 /* 002 * $Id: HierarchicalColumnHighlighter.java,v 1.3 2005/11/18 11:53:12 kleopatra Exp $ 003 * 004 * Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle, 005 * Santa Clara, California 95054, U.S.A. All rights reserved. 006 * 007 * This library is free software; you can redistribute it and/or 008 * modify it under the terms of the GNU Lesser General Public 009 * License as published by the Free Software Foundation; either 010 * version 2.1 of the License, or (at your option) any later version. 011 * 012 * This library is distributed in the hope that it will be useful, 013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 015 * Lesser General Public License for more details. 016 * 017 * You should have received a copy of the GNU Lesser General Public 018 * License along with this library; if not, write to the Free Software 019 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 020 */ 021 022 package org.jdesktop.swingx.decorator; 023 024 import java.awt.Color; 025 import java.awt.Component; 026 027 /** 028 * HierarchicalColumnHighlighter 029 * 030 * @author Ramesh Gupta 031 */ 032 public class HierarchicalColumnHighlighter extends Highlighter { 033 public HierarchicalColumnHighlighter() { 034 } 035 036 public HierarchicalColumnHighlighter(Color background, Color foreground) { 037 super(background, foreground); 038 } 039 040 protected Color computeBackground(Component component, ComponentAdapter adapter) { 041 if (adapter.isHierarchical()) { 042 Color background = getBackground(); 043 Color seed = background == null ? component.getBackground() : background; 044 seed = computeBackgroundSeed(seed); 045 return adapter.isSelected() ? computeSelectedBackground(seed) : seed; 046 } 047 return null; // don't change the background 048 } 049 050 protected Color computeBackgroundSeed(Color seed) { 051 return new Color(Math.max((int)(seed.getRed() * 0.95), 0), 052 Math.max((int)(seed.getGreen()* 0.95), 0), 053 Math.max((int)(seed.getBlue() * 0.95), 0)); 054 } 055 }