001 /* 002 * $Id: ListCellContext.java 3424 2009-07-30 10:53:39Z kleopatra $ 003 * 004 * Copyright 2008 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 package org.jdesktop.swingx.renderer; 022 023 import java.awt.Color; 024 025 import javax.swing.JList; 026 027 /** 028 * List specific <code>CellContext</code>. 029 */ 030 public class ListCellContext extends CellContext { 031 032 /** 033 * Sets state of the cell's context. Note that the component might be null 034 * to indicate a cell without a concrete context. All accessors must cope 035 * with. 036 * 037 * @param component the component the cell resides on, might be null 038 * @param value the content value of the cell 039 * @param row the cell's row index in view coordinates 040 * @param column the cell's column index in view coordinates 041 * @param selected the cell's selected state 042 * @param focused the cell's focused state 043 * @param expanded the cell's expanded state 044 * @param leaf the cell's leaf state 045 */ 046 public void installContext(JList component, Object value, int row, int column, 047 boolean selected, boolean focused, boolean expanded, boolean leaf) { 048 this.component = component; 049 installState(value, row, column, selected, focused, expanded, leaf); 050 this.dropOn = checkDropOnState(); 051 } 052 053 /** 054 * 055 */ 056 private boolean checkDropOnState() { 057 if ((getComponent() == null)) { 058 return false; 059 } 060 JList.DropLocation dropLocation = getComponent().getDropLocation(); 061 if (dropLocation != null 062 && !dropLocation.isInsert() 063 && dropLocation.getIndex() == row) { 064 return true; 065 } 066 return false; 067 } 068 069 070 @Override 071 public JList getComponent() { 072 return (JList) super.getComponent(); 073 } 074 075 /** 076 * {@inheritDoc} 077 */ 078 @Override 079 protected Color getSelectionBackground() { 080 Color selection = null; 081 if (isDropOn()) { 082 selection = getDropCellBackground(); 083 if (selection != null) return selection; 084 } 085 return getComponent() != null ? getComponent().getSelectionBackground() : null; 086 } 087 088 /** 089 * {@inheritDoc} 090 */ 091 @Override 092 protected Color getSelectionForeground() { 093 Color selection = null; 094 if (isDropOn()) { 095 selection = getDropCellForeground(); 096 if (selection != null) return selection; 097 } 098 return getComponent() != null ? getComponent().getSelectionForeground() : null; 099 } 100 101 /** 102 * {@inheritDoc} 103 */ 104 @Override 105 protected String getUIPrefix() { 106 return "List."; 107 } 108 109 110 111 }