com.jidesoft.list.StyledListCellRenderer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jide-oss Show documentation
Show all versions of jide-oss Show documentation
JIDE Common Layer (Professional Swing Components)
/*
* @(#)StyledListCellRenderer.java 8/11/2005
*
* Copyright 2002 - 2005 JIDE Software Inc. All rights reserved.
*/
package com.jidesoft.list;
import com.jidesoft.plaf.UIDefaultsLookup;
import com.jidesoft.swing.StyledLabel;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.io.Serializable;
/**
* A list cell renderer based on StyledLabel. To use it, you should make your cell renderer extending this one and
* override {@link #customizeStyledLabel(javax.swing.JList,Object,int,boolean,boolean)} method. If your overridden
* method, you can call setStyleRange() or setStyleRanges() based on the item value, if it is leaf etc information.
*/
public class StyledListCellRenderer extends StyledLabel
implements ListCellRenderer, Serializable {
protected static Border noFocusBorder;
/**
* Constructs a default renderer object for an item in a list.
*/
public StyledListCellRenderer() {
super();
if (noFocusBorder == null) {
noFocusBorder = new EmptyBorder(1, 1, 1, 1);
}
setOpaque(true);
setBorder(noFocusBorder);
}
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
applyComponentOrientation(list.getComponentOrientation());
if (isSelected) {
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
}
else {
setBackground(list.getBackground());
setForeground(list.getForeground());
}
setIgnoreColorSettings(isSelected);
customizeStyledLabel(list, value, index, isSelected, cellHasFocus);
setEnabled(list.isEnabled());
setFont(list.getFont());
Border border = null;
if (cellHasFocus) {
if (isSelected) {
border = UIDefaultsLookup.getBorder("List.focusSelectedCellHighlightBorder");
}
if (border == null) {
border = UIDefaultsLookup.getBorder("List.focusCellHighlightBorder");
}
}
else {
border = noFocusBorder;
}
setBorder(border);
return this;
}
/**
* Overrides this method to customize the styled label.
*
* @param list
* @param value
* @param index
* @param isSelected
* @param cellHasFocus
*/
protected void customizeStyledLabel(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
clearStyleRanges();
if (value instanceof Icon) {
setIcon((Icon) value);
setText("");
}
else {
setIcon(null);
setText((value == null) ? "" : value.toString());
}
}
/**
* Overridden for performance reasons. See the Implementation Note for more information.
*
* @return true
if the background is completely opaque and differs from the JList's background;
* false
otherwise
* @since 1.5
*/
@Override
public boolean isOpaque() {
Color back = getBackground();
Component p = getParent();
if (p != null) {
p = p.getParent();
}
// p should now be the JList.
boolean colorMatch = (back != null) && (p != null) &&
back.equals(p.getBackground()) &&
p.isOpaque();
return !colorMatch && super.isOpaque();
}
/**
* Overridden for performance reasons. See the Implementation Note for more information.
*/
@Override
public void validate() {
}
/**
* Overridden for performance reasons. See the Implementation Note for more information.
*
* @since 1.5
*/
@Override
public void invalidate() {
}
/**
* Overridden for performance reasons. See the Implementation Note for more information.
*
* @since 1.5
*/
@Override
public void repaint() {
}
/**
* Overridden for performance reasons. See the Implementation Note for more information.
*/
@Override
public void revalidate() {
}
/**
* Overridden for performance reasons. See the Implementation Note for more information.
*/
@Override
public void repaint(long tm, int x, int y, int width, int height) {
}
/**
* Overridden for performance reasons. See the Implementation Note for more information.
*/
@Override
public void repaint(Rectangle r) {
}
/**
* Overridden for performance reasons. See the Implementation Note for more information.
*/
@Override
protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
// Strings get interned...
if (propertyName.equals("text"))
super.firePropertyChange(propertyName, oldValue, newValue);
}
/**
* Overridden for performance reasons. See the Implementation Note for more information.
*/
@Override
public void firePropertyChange(String propertyName, byte oldValue, byte newValue) {
}
/**
* Overridden for performance reasons. See the Implementation Note for more information.
*/
@Override
public void firePropertyChange(String propertyName, char oldValue, char newValue) {
}
/**
* Overridden for performance reasons. See the Implementation Note for more information.
*/
@Override
public void firePropertyChange(String propertyName, short oldValue, short newValue) {
}
/**
* Overridden for performance reasons. See the Implementation Note for more information.
*/
@Override
public void firePropertyChange(String propertyName, int oldValue, int newValue) {
}
/**
* Overridden for performance reasons. See the Implementation Note for more information.
*/
@Override
public void firePropertyChange(String propertyName, long oldValue, long newValue) {
}
/**
* Overridden for performance reasons. See the Implementation Note for more information.
*/
@Override
public void firePropertyChange(String propertyName, float oldValue, float newValue) {
}
/**
* Overridden for performance reasons. See the Implementation Note for more information.
*/
@Override
public void firePropertyChange(String propertyName, double oldValue, double newValue) {
}
/**
* Overridden for performance reasons. See the Implementation Note for more information.
*/
@Override
public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) {
}
/**
* A subclass of DefaultListCellRenderer that implements UIResource. DefaultListCellRenderer doesn't implement
* UIResource directly so that applications can safely override the cellRenderer property with
* DefaultListCellRenderer subclasses.
*
* Warning: Serialized objects of this class will not be compatible with future Swing releases. The
* current serialization support is appropriate for short term storage or RMI between applications running the same
* version of Swing. As of 1.4, support for long term storage of all JavaBeansTM
* has been added to the java.beans
package. Please see {@link java.beans.XMLEncoder}.
*/
public static class UIResource extends StyledListCellRenderer
implements javax.swing.plaf.UIResource {
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy