feat(jdk8): move files to new folder to avoid resources compiled.
This commit is contained in:
348
jdkSrc/jdk8/javax/swing/DefaultListCellRenderer.java
Normal file
348
jdkSrc/jdk8/javax/swing/DefaultListCellRenderer.java
Normal file
@@ -0,0 +1,348 @@
|
||||
/*
|
||||
* Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package javax.swing;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.event.*;
|
||||
import javax.swing.border.*;
|
||||
|
||||
import java.awt.Component;
|
||||
import java.awt.Color;
|
||||
import java.awt.Rectangle;
|
||||
|
||||
import java.io.Serializable;
|
||||
import sun.swing.DefaultLookup;
|
||||
|
||||
|
||||
/**
|
||||
* Renders an item in a list.
|
||||
* <p>
|
||||
* <strong><a name="override">Implementation Note:</a></strong>
|
||||
* This class overrides
|
||||
* <code>invalidate</code>,
|
||||
* <code>validate</code>,
|
||||
* <code>revalidate</code>,
|
||||
* <code>repaint</code>,
|
||||
* <code>isOpaque</code>,
|
||||
* and
|
||||
* <code>firePropertyChange</code>
|
||||
* solely to improve performance.
|
||||
* If not overridden, these frequently called methods would execute code paths
|
||||
* that are unnecessary for the default list cell renderer.
|
||||
* If you write your own renderer,
|
||||
* take care to weigh the benefits and
|
||||
* drawbacks of overriding these methods.
|
||||
*
|
||||
* <p>
|
||||
*
|
||||
* <strong>Warning:</strong>
|
||||
* 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 JavaBeans™
|
||||
* has been added to the <code>java.beans</code> package.
|
||||
* Please see {@link java.beans.XMLEncoder}.
|
||||
*
|
||||
* @author Philip Milne
|
||||
* @author Hans Muller
|
||||
*/
|
||||
public class DefaultListCellRenderer extends JLabel
|
||||
implements ListCellRenderer<Object>, Serializable
|
||||
{
|
||||
|
||||
/**
|
||||
* An empty <code>Border</code>. This field might not be used. To change the
|
||||
* <code>Border</code> used by this renderer override the
|
||||
* <code>getListCellRendererComponent</code> method and set the border
|
||||
* of the returned component directly.
|
||||
*/
|
||||
private static final Border SAFE_NO_FOCUS_BORDER = new EmptyBorder(1, 1, 1, 1);
|
||||
private static final Border DEFAULT_NO_FOCUS_BORDER = new EmptyBorder(1, 1, 1, 1);
|
||||
protected static Border noFocusBorder = DEFAULT_NO_FOCUS_BORDER;
|
||||
|
||||
/**
|
||||
* Constructs a default renderer object for an item
|
||||
* in a list.
|
||||
*/
|
||||
public DefaultListCellRenderer() {
|
||||
super();
|
||||
setOpaque(true);
|
||||
setBorder(getNoFocusBorder());
|
||||
setName("List.cellRenderer");
|
||||
}
|
||||
|
||||
private Border getNoFocusBorder() {
|
||||
Border border = DefaultLookup.getBorder(this, ui, "List.cellNoFocusBorder");
|
||||
if (System.getSecurityManager() != null) {
|
||||
if (border != null) return border;
|
||||
return SAFE_NO_FOCUS_BORDER;
|
||||
} else {
|
||||
if (border != null &&
|
||||
(noFocusBorder == null ||
|
||||
noFocusBorder == DEFAULT_NO_FOCUS_BORDER)) {
|
||||
return border;
|
||||
}
|
||||
return noFocusBorder;
|
||||
}
|
||||
}
|
||||
|
||||
public Component getListCellRendererComponent(
|
||||
JList<?> list,
|
||||
Object value,
|
||||
int index,
|
||||
boolean isSelected,
|
||||
boolean cellHasFocus)
|
||||
{
|
||||
setComponentOrientation(list.getComponentOrientation());
|
||||
|
||||
Color bg = null;
|
||||
Color fg = null;
|
||||
|
||||
JList.DropLocation dropLocation = list.getDropLocation();
|
||||
if (dropLocation != null
|
||||
&& !dropLocation.isInsert()
|
||||
&& dropLocation.getIndex() == index) {
|
||||
|
||||
bg = DefaultLookup.getColor(this, ui, "List.dropCellBackground");
|
||||
fg = DefaultLookup.getColor(this, ui, "List.dropCellForeground");
|
||||
|
||||
isSelected = true;
|
||||
}
|
||||
|
||||
if (isSelected) {
|
||||
setBackground(bg == null ? list.getSelectionBackground() : bg);
|
||||
setForeground(fg == null ? list.getSelectionForeground() : fg);
|
||||
}
|
||||
else {
|
||||
setBackground(list.getBackground());
|
||||
setForeground(list.getForeground());
|
||||
}
|
||||
|
||||
if (value instanceof Icon) {
|
||||
setIcon((Icon)value);
|
||||
setText("");
|
||||
}
|
||||
else {
|
||||
setIcon(null);
|
||||
setText((value == null) ? "" : value.toString());
|
||||
}
|
||||
|
||||
setEnabled(list.isEnabled());
|
||||
setFont(list.getFont());
|
||||
|
||||
Border border = null;
|
||||
if (cellHasFocus) {
|
||||
if (isSelected) {
|
||||
border = DefaultLookup.getBorder(this, ui, "List.focusSelectedCellHighlightBorder");
|
||||
}
|
||||
if (border == null) {
|
||||
border = DefaultLookup.getBorder(this, ui, "List.focusCellHighlightBorder");
|
||||
}
|
||||
} else {
|
||||
border = getNoFocusBorder();
|
||||
}
|
||||
setBorder(border);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Overridden for performance reasons.
|
||||
* See the <a href="#override">Implementation Note</a>
|
||||
* for more information.
|
||||
*
|
||||
* @since 1.5
|
||||
* @return <code>true</code> if the background is completely opaque
|
||||
* and differs from the JList's background;
|
||||
* <code>false</code> otherwise
|
||||
*/
|
||||
@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 <a href="#override">Implementation Note</a>
|
||||
* for more information.
|
||||
*/
|
||||
@Override
|
||||
public void validate() {}
|
||||
|
||||
/**
|
||||
* Overridden for performance reasons.
|
||||
* See the <a href="#override">Implementation Note</a>
|
||||
* for more information.
|
||||
*
|
||||
* @since 1.5
|
||||
*/
|
||||
@Override
|
||||
public void invalidate() {}
|
||||
|
||||
/**
|
||||
* Overridden for performance reasons.
|
||||
* See the <a href="#override">Implementation Note</a>
|
||||
* for more information.
|
||||
*
|
||||
* @since 1.5
|
||||
*/
|
||||
@Override
|
||||
public void repaint() {}
|
||||
|
||||
/**
|
||||
* Overridden for performance reasons.
|
||||
* See the <a href="#override">Implementation Note</a>
|
||||
* for more information.
|
||||
*/
|
||||
@Override
|
||||
public void revalidate() {}
|
||||
/**
|
||||
* Overridden for performance reasons.
|
||||
* See the <a href="#override">Implementation Note</a>
|
||||
* for more information.
|
||||
*/
|
||||
@Override
|
||||
public void repaint(long tm, int x, int y, int width, int height) {}
|
||||
|
||||
/**
|
||||
* Overridden for performance reasons.
|
||||
* See the <a href="#override">Implementation Note</a>
|
||||
* for more information.
|
||||
*/
|
||||
@Override
|
||||
public void repaint(Rectangle r) {}
|
||||
|
||||
/**
|
||||
* Overridden for performance reasons.
|
||||
* See the <a href="#override">Implementation Note</a>
|
||||
* for more information.
|
||||
*/
|
||||
@Override
|
||||
protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
|
||||
// Strings get interned...
|
||||
if (propertyName == "text"
|
||||
|| ((propertyName == "font" || propertyName == "foreground")
|
||||
&& oldValue != newValue
|
||||
&& getClientProperty(javax.swing.plaf.basic.BasicHTML.propertyKey) != null)) {
|
||||
|
||||
super.firePropertyChange(propertyName, oldValue, newValue);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Overridden for performance reasons.
|
||||
* See the <a href="#override">Implementation Note</a>
|
||||
* for more information.
|
||||
*/
|
||||
@Override
|
||||
public void firePropertyChange(String propertyName, byte oldValue, byte newValue) {}
|
||||
|
||||
/**
|
||||
* Overridden for performance reasons.
|
||||
* See the <a href="#override">Implementation Note</a>
|
||||
* for more information.
|
||||
*/
|
||||
@Override
|
||||
public void firePropertyChange(String propertyName, char oldValue, char newValue) {}
|
||||
|
||||
/**
|
||||
* Overridden for performance reasons.
|
||||
* See the <a href="#override">Implementation Note</a>
|
||||
* for more information.
|
||||
*/
|
||||
@Override
|
||||
public void firePropertyChange(String propertyName, short oldValue, short newValue) {}
|
||||
|
||||
/**
|
||||
* Overridden for performance reasons.
|
||||
* See the <a href="#override">Implementation Note</a>
|
||||
* for more information.
|
||||
*/
|
||||
@Override
|
||||
public void firePropertyChange(String propertyName, int oldValue, int newValue) {}
|
||||
|
||||
/**
|
||||
* Overridden for performance reasons.
|
||||
* See the <a href="#override">Implementation Note</a>
|
||||
* for more information.
|
||||
*/
|
||||
@Override
|
||||
public void firePropertyChange(String propertyName, long oldValue, long newValue) {}
|
||||
|
||||
/**
|
||||
* Overridden for performance reasons.
|
||||
* See the <a href="#override">Implementation Note</a>
|
||||
* for more information.
|
||||
*/
|
||||
@Override
|
||||
public void firePropertyChange(String propertyName, float oldValue, float newValue) {}
|
||||
|
||||
/**
|
||||
* Overridden for performance reasons.
|
||||
* See the <a href="#override">Implementation Note</a>
|
||||
* for more information.
|
||||
*/
|
||||
@Override
|
||||
public void firePropertyChange(String propertyName, double oldValue, double newValue) {}
|
||||
|
||||
/**
|
||||
* Overridden for performance reasons.
|
||||
* See the <a href="#override">Implementation Note</a>
|
||||
* 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.
|
||||
* <p>
|
||||
* <strong>Warning:</strong>
|
||||
* 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 JavaBeans™
|
||||
* has been added to the <code>java.beans</code> package.
|
||||
* Please see {@link java.beans.XMLEncoder}.
|
||||
*/
|
||||
public static class UIResource extends DefaultListCellRenderer
|
||||
implements javax.swing.plaf.UIResource
|
||||
{
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user