mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-17 13:55:20 +00:00
Merge
This commit is contained in:
commit
bf5a0d88c1
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved.
|
||||
* Copyright 2000-2010 Sun Microsystems, Inc. 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
|
||||
@ -146,6 +146,8 @@ public class DefaultPersistenceDelegate extends PersistenceDelegate {
|
||||
* @param out The code output stream.
|
||||
* @return An expression whose value is <code>oldInstance</code>.
|
||||
*
|
||||
* @throws NullPointerException if {@code out} is {@code null}
|
||||
*
|
||||
* @see #DefaultPersistenceDelegate(String[])
|
||||
*/
|
||||
protected Expression instantiate(Object oldInstance, Encoder out) {
|
||||
@ -367,6 +369,8 @@ public class DefaultPersistenceDelegate extends PersistenceDelegate {
|
||||
* @param newInstance The instance that is to be modified.
|
||||
* @param out The stream to which any initialization statements should be written.
|
||||
*
|
||||
* @throws NullPointerException if {@code out} is {@code null}
|
||||
*
|
||||
* @see java.beans.Introspector#getBeanInfo
|
||||
* @see java.beans.PropertyDescriptor
|
||||
*/
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2009 Sun Microsystems, Inc. All Rights Reserved.
|
||||
* Copyright 2000-2010 Sun Microsystems, Inc. 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
|
||||
@ -112,54 +112,82 @@ public class Encoder {
|
||||
|
||||
/**
|
||||
* Returns the persistence delegate for the given type.
|
||||
* The persistence delegate is calculated
|
||||
* by applying the following of rules in order:
|
||||
* <ul>
|
||||
* The persistence delegate is calculated by applying
|
||||
* the following rules in order:
|
||||
* <ol>
|
||||
* <li>
|
||||
* If the type is an array, an internal persistence
|
||||
* delegate is returned which will instantiate an
|
||||
* array of the appropriate type and length, initializing
|
||||
* each of its elements as if they are properties.
|
||||
* If a persistence delegate is associated with the given type
|
||||
* by using the {@link #setPersistenceDelegate} method
|
||||
* it is returned.
|
||||
* <li>
|
||||
* If the type is a proxy, an internal persistence
|
||||
* delegate is returned which will instantiate a
|
||||
* new proxy instance using the static
|
||||
* "newProxyInstance" method defined in the
|
||||
* Proxy class.
|
||||
* A persistence delegate is then looked up by the name
|
||||
* composed of the the fully qualified name of the given type
|
||||
* and the "PersistenceDelegate" postfix.
|
||||
* For example, a persistence delegate for the {@code Bean} class
|
||||
* should be named {@code BeanPersistenceDelegate}
|
||||
* and located in the same package.
|
||||
* <pre>
|
||||
* public class Bean { ... }
|
||||
* public class BeanPersistenceDelegate { ... }</pre>
|
||||
* The instance of the {@code BeanPersistenceDelegate} class
|
||||
* is returned for the {@code Bean} class.
|
||||
* <li>
|
||||
* If the BeanInfo for this type has a <code>BeanDescriptor</code>
|
||||
* which defined a "persistenceDelegate" property, this
|
||||
* value is returned.
|
||||
* If the type is {@code null},
|
||||
* a shared internal persistence delegate is returned
|
||||
* that encodes {@code null} value.
|
||||
* <li>
|
||||
* In all other cases the default persistence delegate
|
||||
* is returned. The default persistence delegate assumes
|
||||
* the type is a <em>JavaBean</em>, implying that it has a default constructor
|
||||
* and that its state may be characterized by the matching pairs
|
||||
* of "setter" and "getter" methods returned by the Introspector.
|
||||
* If the type is a {@code enum} declaration,
|
||||
* a shared internal persistence delegate is returned
|
||||
* that encodes constants of this enumeration
|
||||
* by their names.
|
||||
* <li>
|
||||
* If the type is a primitive type or the corresponding wrapper,
|
||||
* a shared internal persistence delegate is returned
|
||||
* that encodes values of the given type.
|
||||
* <li>
|
||||
* If the type is an array,
|
||||
* a shared internal persistence delegate is returned
|
||||
* that encodes an array of the appropriate type and length,
|
||||
* and each of its elements as if they are properties.
|
||||
* <li>
|
||||
* If the type is a proxy,
|
||||
* a shared internal persistence delegate is returned
|
||||
* that encodes a proxy instance by using
|
||||
* the {@link java.lang.reflect.Proxy#newProxyInstance} method.
|
||||
* <li>
|
||||
* If the {@link BeanInfo} for this type has a {@link BeanDescriptor}
|
||||
* which defined a "persistenceDelegate" attribute,
|
||||
* the value of this named attribute is returned.
|
||||
* <li>
|
||||
* In all other cases the default persistence delegate is returned.
|
||||
* The default persistence delegate assumes the type is a <em>JavaBean</em>,
|
||||
* implying that it has a default constructor and that its state
|
||||
* may be characterized by the matching pairs of "setter" and "getter"
|
||||
* methods returned by the {@link Introspector} class.
|
||||
* The default constructor is the constructor with the greatest number
|
||||
* of parameters that has the {@link ConstructorProperties} annotation.
|
||||
* If none of the constructors have the {@code ConstructorProperties} annotation,
|
||||
* If none of the constructors has the {@code ConstructorProperties} annotation,
|
||||
* then the nullary constructor (constructor with no parameters) will be used.
|
||||
* For example, in the following the nullary constructor
|
||||
* for {@code Foo} will be used, while the two parameter constructor
|
||||
* for {@code Bar} will be used.
|
||||
* <code>
|
||||
* public class Foo {
|
||||
* For example, in the following code fragment, the nullary constructor
|
||||
* for the {@code Foo} class will be used,
|
||||
* while the two-parameter constructor
|
||||
* for the {@code Bar} class will be used.
|
||||
* <pre>
|
||||
* public class Foo {
|
||||
* public Foo() { ... }
|
||||
* public Foo(int x) { ... }
|
||||
* }
|
||||
* public class Bar {
|
||||
* }
|
||||
* public class Bar {
|
||||
* public Bar() { ... }
|
||||
* @ConstructorProperties({"x"})
|
||||
* public Bar(int x) { ... }
|
||||
* @ConstructorProperties({"x", "y"})
|
||||
* public Bar(int x, int y) { ... }
|
||||
* }
|
||||
* </code>
|
||||
* </ul>
|
||||
* }</pre>
|
||||
* </ol>
|
||||
*
|
||||
* @param type The type of the object.
|
||||
* @return The persistence delegate for this type of object.
|
||||
* @param type the class of the objects
|
||||
* @return the persistence delegate for the given type
|
||||
*
|
||||
* @see #setPersistenceDelegate
|
||||
* @see java.beans.Introspector#getBeanInfo
|
||||
@ -176,21 +204,18 @@ public class Encoder {
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the persistence delegate associated with this <code>type</code> to
|
||||
* <code>persistenceDelegate</code>.
|
||||
* Associates the specified persistence delegate with the given type.
|
||||
*
|
||||
* @param type The class of objects that <code>persistenceDelegate</code> applies to.
|
||||
* @param persistenceDelegate The persistence delegate for instances of <code>type</code>.
|
||||
* @param type the class of objects that the specified persistence delegate applies to
|
||||
* @param delegate the persistence delegate for instances of the given type
|
||||
*
|
||||
* @see #getPersistenceDelegate
|
||||
* @see java.beans.Introspector#getBeanInfo
|
||||
* @see java.beans.BeanInfo#getBeanDescriptor
|
||||
*/
|
||||
public void setPersistenceDelegate(Class<?> type,
|
||||
PersistenceDelegate persistenceDelegate)
|
||||
{
|
||||
public void setPersistenceDelegate(Class<?> type, PersistenceDelegate delegate) {
|
||||
synchronized (this.finder) {
|
||||
this.finder.register(type, persistenceDelegate);
|
||||
this.finder.register(type, delegate);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
|
||||
* Copyright 2000-2010 Sun Microsystems, Inc. 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
|
||||
@ -51,12 +51,19 @@ public class Expression extends Statement {
|
||||
private Object value = unbound;
|
||||
|
||||
/**
|
||||
* Creates a new <code>Statement</code> object with a <code>target</code>,
|
||||
* <code>methodName</code> and <code>arguments</code> as per the parameters.
|
||||
* Creates a new {@link Expression} object
|
||||
* for the specified target object to invoke the method
|
||||
* specified by the name and by the array of arguments.
|
||||
* <p>
|
||||
* The {@code target} and the {@code methodName} values should not be {@code null}.
|
||||
* Otherwise an attempt to execute this {@code Expression}
|
||||
* will result in a {@code NullPointerException}.
|
||||
* If the {@code arguments} value is {@code null},
|
||||
* an empty array is used as the value of the {@code arguments} property.
|
||||
*
|
||||
* @param target The target of this expression.
|
||||
* @param methodName The methodName of this expression.
|
||||
* @param arguments The arguments of this expression. If <code>null</code> then an empty array will be used.
|
||||
* @param target the target object of this expression
|
||||
* @param methodName the name of the method to invoke on the specified target
|
||||
* @param arguments the array of arguments to invoke the specified method
|
||||
*
|
||||
* @see #getValue
|
||||
*/
|
||||
@ -66,16 +73,23 @@ public class Expression extends Statement {
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new <code>Expression</code> object for a method
|
||||
* that returns a result. The result will never be calculated
|
||||
* however, since this constructor uses the <code>value</code>
|
||||
* parameter to set the value property by calling the
|
||||
* <code>setValue</code> method.
|
||||
* Creates a new {@link Expression} object with the specified value
|
||||
* for the specified target object to invoke the method
|
||||
* specified by the name and by the array of arguments.
|
||||
* The {@code value} value is used as the value of the {@code value} property,
|
||||
* so the {@link #getValue} method will return it
|
||||
* without executing this {@code Expression}.
|
||||
* <p>
|
||||
* The {@code target} and the {@code methodName} values should not be {@code null}.
|
||||
* Otherwise an attempt to execute this {@code Expression}
|
||||
* will result in a {@code NullPointerException}.
|
||||
* If the {@code arguments} value is {@code null},
|
||||
* an empty array is used as the value of the {@code arguments} property.
|
||||
*
|
||||
* @param value The value of this expression.
|
||||
* @param target The target of this expression.
|
||||
* @param methodName The methodName of this expression.
|
||||
* @param arguments The arguments of this expression. If <code>null</code> then an empty array will be used.
|
||||
* @param value the value of this expression
|
||||
* @param target the target object of this expression
|
||||
* @param methodName the name of the method to invoke on the specified target
|
||||
* @param arguments the array of arguments to invoke the specified method
|
||||
*
|
||||
* @see #setValue
|
||||
*/
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 1996-2009 Sun Microsystems, Inc. All Rights Reserved.
|
||||
* Copyright 1996-2010 Sun Microsystems, Inc. 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
|
||||
@ -29,6 +29,8 @@ import com.sun.beans.WeakCache;
|
||||
import com.sun.beans.finder.BeanInfoFinder;
|
||||
import com.sun.beans.finder.ClassFinder;
|
||||
|
||||
import java.lang.ref.Reference;
|
||||
import java.lang.ref.SoftReference;
|
||||
import java.lang.reflect.Method;
|
||||
import java.lang.reflect.Modifier;
|
||||
|
||||
@ -39,6 +41,7 @@ import java.util.Iterator;
|
||||
import java.util.EventListener;
|
||||
import java.util.List;
|
||||
import java.util.TreeMap;
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
import sun.awt.AppContext;
|
||||
import sun.reflect.misc.ReflectUtil;
|
||||
@ -155,11 +158,11 @@ public class Introspector {
|
||||
return (new Introspector(beanClass, null, USE_ALL_BEANINFO)).getBeanInfo();
|
||||
}
|
||||
synchronized (BEANINFO_CACHE) {
|
||||
WeakCache<Class<?>, BeanInfo> beanInfoCache =
|
||||
(WeakCache<Class<?>, BeanInfo>) AppContext.getAppContext().get(BEANINFO_CACHE);
|
||||
Map<Class<?>, BeanInfo> beanInfoCache =
|
||||
(Map<Class<?>, BeanInfo>) AppContext.getAppContext().get(BEANINFO_CACHE);
|
||||
|
||||
if (beanInfoCache == null) {
|
||||
beanInfoCache = new WeakCache<Class<?>, BeanInfo>();
|
||||
beanInfoCache = new WeakHashMap<Class<?>, BeanInfo>();
|
||||
AppContext.getAppContext().put(BEANINFO_CACHE, beanInfoCache);
|
||||
}
|
||||
BeanInfo beanInfo = beanInfoCache.get(beanClass);
|
||||
@ -341,7 +344,7 @@ public class Introspector {
|
||||
|
||||
public static void flushCaches() {
|
||||
synchronized (BEANINFO_CACHE) {
|
||||
WeakCache beanInfoCache = (WeakCache) AppContext.getAppContext().get(BEANINFO_CACHE);
|
||||
Map beanInfoCache = (Map) AppContext.getAppContext().get(BEANINFO_CACHE);
|
||||
if (beanInfoCache != null) {
|
||||
beanInfoCache.clear();
|
||||
}
|
||||
@ -369,7 +372,7 @@ public class Introspector {
|
||||
throw new NullPointerException();
|
||||
}
|
||||
synchronized (BEANINFO_CACHE) {
|
||||
WeakCache beanInfoCache = (WeakCache) AppContext.getAppContext().get(BEANINFO_CACHE);
|
||||
Map beanInfoCache = (Map) AppContext.getAppContext().get(BEANINFO_CACHE);
|
||||
if (beanInfoCache != null) {
|
||||
beanInfoCache.put(clz, null);
|
||||
}
|
||||
@ -1458,7 +1461,7 @@ class GenericBeanInfo extends SimpleBeanInfo {
|
||||
private PropertyDescriptor[] properties;
|
||||
private int defaultProperty;
|
||||
private MethodDescriptor[] methods;
|
||||
private BeanInfo targetBeanInfo;
|
||||
private final Reference<BeanInfo> targetBeanInfoRef;
|
||||
|
||||
public GenericBeanInfo(BeanDescriptor beanDescriptor,
|
||||
EventSetDescriptor[] events, int defaultEvent,
|
||||
@ -1470,7 +1473,7 @@ class GenericBeanInfo extends SimpleBeanInfo {
|
||||
this.properties = properties;
|
||||
this.defaultProperty = defaultProperty;
|
||||
this.methods = methods;
|
||||
this.targetBeanInfo = targetBeanInfo;
|
||||
this.targetBeanInfoRef = new SoftReference<BeanInfo>(targetBeanInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1509,7 +1512,7 @@ class GenericBeanInfo extends SimpleBeanInfo {
|
||||
methods[i] = new MethodDescriptor(old.methods[i]);
|
||||
}
|
||||
}
|
||||
targetBeanInfo = old.targetBeanInfo;
|
||||
this.targetBeanInfoRef = old.targetBeanInfoRef;
|
||||
}
|
||||
|
||||
public PropertyDescriptor[] getPropertyDescriptors() {
|
||||
@ -1537,6 +1540,7 @@ class GenericBeanInfo extends SimpleBeanInfo {
|
||||
}
|
||||
|
||||
public java.awt.Image getIcon(int iconKind) {
|
||||
BeanInfo targetBeanInfo = this.targetBeanInfoRef.get();
|
||||
if (targetBeanInfo != null) {
|
||||
return targetBeanInfo.getIcon(iconKind);
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved.
|
||||
* Copyright 2000-2010 Sun Microsystems, Inc. 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
|
||||
@ -105,6 +105,8 @@ public abstract class PersistenceDelegate {
|
||||
*
|
||||
* @param oldInstance The instance that will be created by this expression.
|
||||
* @param out The stream to which this expression will be written.
|
||||
*
|
||||
* @throws NullPointerException if {@code out} is {@code null}
|
||||
*/
|
||||
public void writeObject(Object oldInstance, Encoder out) {
|
||||
Object newInstance = out.get(oldInstance);
|
||||
@ -158,6 +160,8 @@ public abstract class PersistenceDelegate {
|
||||
* @param oldInstance The instance that will be created by this expression.
|
||||
* @param out The stream to which this expression will be written.
|
||||
* @return An expression whose value is <code>oldInstance</code>.
|
||||
*
|
||||
* @throws NullPointerException if {@code out} is {@code null}
|
||||
*/
|
||||
protected abstract Expression instantiate(Object oldInstance, Encoder out);
|
||||
|
||||
@ -196,6 +200,8 @@ public abstract class PersistenceDelegate {
|
||||
* @param oldInstance The instance to be copied.
|
||||
* @param newInstance The instance that is to be modified.
|
||||
* @param out The stream to which any initialization statements should be written.
|
||||
*
|
||||
* @throws NullPointerException if {@code out} is {@code null}
|
||||
*/
|
||||
protected void initialize(Class<?> type,
|
||||
Object oldInstance, Object newInstance,
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2009 Sun Microsystems, Inc. All Rights Reserved.
|
||||
* Copyright 2000-2010 Sun Microsystems, Inc. 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
|
||||
@ -69,13 +69,19 @@ public class Statement {
|
||||
ClassLoader loader;
|
||||
|
||||
/**
|
||||
* Creates a new <code>Statement</code> object with a <code>target</code>,
|
||||
* <code>methodName</code> and <code>arguments</code> as per the parameters.
|
||||
*
|
||||
* @param target The target of this statement.
|
||||
* @param methodName The methodName of this statement.
|
||||
* @param arguments The arguments of this statement. If <code>null</code> then an empty array will be used.
|
||||
* Creates a new {@link Statement} object
|
||||
* for the specified target object to invoke the method
|
||||
* specified by the name and by the array of arguments.
|
||||
* <p>
|
||||
* The {@code target} and the {@code methodName} values should not be {@code null}.
|
||||
* Otherwise an attempt to execute this {@code Expression}
|
||||
* will result in a {@code NullPointerException}.
|
||||
* If the {@code arguments} value is {@code null},
|
||||
* an empty array is used as the value of the {@code arguments} property.
|
||||
*
|
||||
* @param target the target object of this statement
|
||||
* @param methodName the name of the method to invoke on the specified target
|
||||
* @param arguments the array of arguments to invoke the specified method
|
||||
*/
|
||||
@ConstructorProperties({"target", "methodName", "arguments"})
|
||||
public Statement(Object target, String methodName, Object[] arguments) {
|
||||
@ -85,27 +91,36 @@ public class Statement {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the target of this statement.
|
||||
* Returns the target object of this statement.
|
||||
* If this method returns {@code null},
|
||||
* the {@link #execute} method
|
||||
* throws a {@code NullPointerException}.
|
||||
*
|
||||
* @return The target of this statement.
|
||||
* @return the target object of this statement
|
||||
*/
|
||||
public Object getTarget() {
|
||||
return target;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the method.
|
||||
* Returns the name of the method to invoke.
|
||||
* If this method returns {@code null},
|
||||
* the {@link #execute} method
|
||||
* throws a {@code NullPointerException}.
|
||||
*
|
||||
* @return The name of the method.
|
||||
* @return the name of the method
|
||||
*/
|
||||
public String getMethodName() {
|
||||
return methodName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the arguments of this statement.
|
||||
* Returns the arguments for the method to invoke.
|
||||
* The number of arguments and their types
|
||||
* must match the method being called.
|
||||
* {@code null} can be used as a synonym of an empty array.
|
||||
*
|
||||
* @return the arguments of this statement.
|
||||
* @return the array of arguments
|
||||
*/
|
||||
public Object[] getArguments() {
|
||||
return arguments;
|
||||
@ -154,6 +169,9 @@ public class Statement {
|
||||
}
|
||||
|
||||
Object[] arguments = getArguments();
|
||||
if (arguments == null) {
|
||||
arguments = emptyArray;
|
||||
}
|
||||
// Class.forName() won't load classes outside
|
||||
// of core from a class inside core. Special
|
||||
// case this method.
|
||||
@ -285,7 +303,9 @@ public class Statement {
|
||||
Object target = getTarget();
|
||||
String methodName = getMethodName();
|
||||
Object[] arguments = getArguments();
|
||||
|
||||
if (arguments == null) {
|
||||
arguments = emptyArray;
|
||||
}
|
||||
StringBuffer result = new StringBuffer(instanceName(target) + "." + methodName + "(");
|
||||
int n = arguments.length;
|
||||
for(int i = 0; i < n; i++) {
|
||||
|
||||
@ -232,7 +232,7 @@ public final class CollationElementIterator
|
||||
buffer = makeReorderedBuffer(consonant, value, buffer, true);
|
||||
value = buffer[0];
|
||||
expIndex = 1;
|
||||
} else {
|
||||
} else if (consonant != NormalizerBase.DONE) {
|
||||
text.previous();
|
||||
}
|
||||
}
|
||||
@ -242,7 +242,7 @@ public final class CollationElementIterator
|
||||
buffer = makeReorderedBuffer(consonant, value, buffer, true);
|
||||
value = buffer[0];
|
||||
expIndex = 1;
|
||||
} else {
|
||||
} else if (consonant != NormalizerBase.DONE) {
|
||||
text.previous();
|
||||
}
|
||||
}
|
||||
|
||||
@ -621,6 +621,8 @@ class RuleBasedBreakIterator extends BreakIterator {
|
||||
return handleNext();
|
||||
}
|
||||
|
||||
private int cachedLastKnownBreak = BreakIterator.DONE;
|
||||
|
||||
/**
|
||||
* Advances the iterator backwards, to the last boundary preceding this one.
|
||||
* @return The position of the last boundary position preceding this one.
|
||||
@ -638,8 +640,16 @@ class RuleBasedBreakIterator extends BreakIterator {
|
||||
// the current position), but not necessarily the last one before
|
||||
// where we started
|
||||
int start = current();
|
||||
getPrevious();
|
||||
int lastResult = handlePrevious();
|
||||
int lastResult = cachedLastKnownBreak;
|
||||
if (lastResult >= start || lastResult <= BreakIterator.DONE) {
|
||||
getPrevious();
|
||||
lastResult = handlePrevious();
|
||||
} else {
|
||||
//it might be better to check if handlePrevious() give us closer
|
||||
//safe value but handlePrevious() is slow too
|
||||
//So, this has to be done carefully
|
||||
text.setIndex(lastResult);
|
||||
}
|
||||
int result = lastResult;
|
||||
|
||||
// iterate forward from the known break position until we pass our
|
||||
@ -653,6 +663,7 @@ class RuleBasedBreakIterator extends BreakIterator {
|
||||
// set the current iteration position to be the last break position
|
||||
// before where we started, and then return that value
|
||||
text.setIndex(lastResult);
|
||||
cachedLastKnownBreak = lastResult;
|
||||
return lastResult;
|
||||
}
|
||||
|
||||
@ -757,7 +768,8 @@ class RuleBasedBreakIterator extends BreakIterator {
|
||||
// then we can just use next() to get our return value
|
||||
text.setIndex(offset);
|
||||
if (offset == text.getBeginIndex()) {
|
||||
return handleNext();
|
||||
cachedLastKnownBreak = handleNext();
|
||||
return cachedLastKnownBreak;
|
||||
}
|
||||
|
||||
// otherwise, we have to sync up first. Use handlePrevious() to back
|
||||
@ -767,10 +779,19 @@ class RuleBasedBreakIterator extends BreakIterator {
|
||||
// position at or before our starting position. Advance forward
|
||||
// from here until we've passed the starting position. The position
|
||||
// we stop on will be the first break position after the specified one.
|
||||
int result = handlePrevious();
|
||||
int result = cachedLastKnownBreak;
|
||||
if (result >= offset || result <= BreakIterator.DONE) {
|
||||
result = handlePrevious();
|
||||
} else {
|
||||
//it might be better to check if handlePrevious() give us closer
|
||||
//safe value but handlePrevious() is slow too
|
||||
//So, this has to be done carefully
|
||||
text.setIndex(result);
|
||||
}
|
||||
while (result != BreakIterator.DONE && result <= offset) {
|
||||
result = handleNext();
|
||||
}
|
||||
cachedLastKnownBreak = result;
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -865,6 +886,8 @@ class RuleBasedBreakIterator extends BreakIterator {
|
||||
text = new SafeCharIterator(newText);
|
||||
}
|
||||
text.first();
|
||||
|
||||
cachedLastKnownBreak = BreakIterator.DONE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -953,7 +953,7 @@ public class Date
|
||||
* without affecting its internal state.
|
||||
*/
|
||||
static final long getMillisOf(Date date) {
|
||||
if (date.cdate == null) {
|
||||
if (date.cdate == null || date.cdate.isNormalized()) {
|
||||
return date.fastTime;
|
||||
}
|
||||
BaseCalendar.Date d = (BaseCalendar.Date) date.cdate.clone();
|
||||
|
||||
@ -27,6 +27,7 @@ package javax.swing;
|
||||
|
||||
import java.util.Enumeration;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.Locale;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
@ -89,11 +90,7 @@ class MultiUIDefaults extends UIDefaults
|
||||
|
||||
@Override
|
||||
public int size() {
|
||||
int n = super.size();
|
||||
for (UIDefaults table : tables) {
|
||||
n += (table != null) ? table.size() : 0;
|
||||
}
|
||||
return n;
|
||||
return entrySet().size();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -104,40 +101,26 @@ class MultiUIDefaults extends UIDefaults
|
||||
@Override
|
||||
public Enumeration<Object> keys()
|
||||
{
|
||||
Enumeration[] enums = new Enumeration[1 + tables.length];
|
||||
enums[0] = super.keys();
|
||||
for(int i = 0; i < tables.length; i++) {
|
||||
UIDefaults table = tables[i];
|
||||
if (table != null) {
|
||||
enums[i + 1] = table.keys();
|
||||
}
|
||||
}
|
||||
return new MultiUIDefaultsEnumerator(enums);
|
||||
return new MultiUIDefaultsEnumerator(
|
||||
MultiUIDefaultsEnumerator.Type.KEYS, entrySet());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Enumeration<Object> elements()
|
||||
{
|
||||
Enumeration[] enums = new Enumeration[1 + tables.length];
|
||||
enums[0] = super.elements();
|
||||
for(int i = 0; i < tables.length; i++) {
|
||||
UIDefaults table = tables[i];
|
||||
if (table != null) {
|
||||
enums[i + 1] = table.elements();
|
||||
}
|
||||
}
|
||||
return new MultiUIDefaultsEnumerator(enums);
|
||||
return new MultiUIDefaultsEnumerator(
|
||||
MultiUIDefaultsEnumerator.Type.ELEMENTS, entrySet());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<Entry<Object, Object>> entrySet() {
|
||||
Set<Entry<Object, Object>> set = new HashSet<Entry<Object, Object>>();
|
||||
if (tables == null) return set;
|
||||
for (UIDefaults table : tables) {
|
||||
if (table != null) {
|
||||
set.addAll(table.entrySet());
|
||||
for (int i = tables.length - 1; i >= 0; i--) {
|
||||
if (tables[i] != null) {
|
||||
set.addAll(tables[i].entrySet());
|
||||
}
|
||||
}
|
||||
set.addAll(super.entrySet());
|
||||
return set;
|
||||
}
|
||||
|
||||
@ -152,50 +135,46 @@ class MultiUIDefaults extends UIDefaults
|
||||
|
||||
private static class MultiUIDefaultsEnumerator implements Enumeration<Object>
|
||||
{
|
||||
Enumeration[] enums;
|
||||
int n = 0;
|
||||
public static enum Type { KEYS, ELEMENTS };
|
||||
private Iterator<Entry<Object, Object>> iterator;
|
||||
private Type type;
|
||||
|
||||
MultiUIDefaultsEnumerator(Enumeration[] enums) {
|
||||
this.enums = enums;
|
||||
MultiUIDefaultsEnumerator(Type type, Set<Entry<Object, Object>> entries) {
|
||||
this.type = type;
|
||||
this.iterator = entries.iterator();
|
||||
}
|
||||
|
||||
public boolean hasMoreElements() {
|
||||
for(int i = n; i < enums.length; i++) {
|
||||
Enumeration e = enums[i];
|
||||
if ((e != null) && (e.hasMoreElements())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return iterator.hasNext();
|
||||
}
|
||||
|
||||
public Object nextElement() {
|
||||
for(; n < enums.length; n++) {
|
||||
Enumeration e = enums[n];
|
||||
if ((e != null) && (e.hasMoreElements())) {
|
||||
return e.nextElement();
|
||||
}
|
||||
switch (type) {
|
||||
case KEYS: return iterator.next().getKey();
|
||||
case ELEMENTS: return iterator.next().getValue();
|
||||
default: return null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object remove(Object key)
|
||||
{
|
||||
Object value = super.remove(key);
|
||||
if (value != null) {
|
||||
return value;
|
||||
}
|
||||
|
||||
for (UIDefaults table : tables) {
|
||||
value = (table != null) ? table.remove(key) : null;
|
||||
if (value != null) {
|
||||
return value;
|
||||
Object value = null;
|
||||
for (int i = tables.length - 1; i >= 0; i--) {
|
||||
if (tables[i] != null) {
|
||||
Object v = tables[i].remove(key);
|
||||
if (v != null) {
|
||||
value = v;
|
||||
}
|
||||
}
|
||||
}
|
||||
Object v = super.remove(key);
|
||||
if (v != null) {
|
||||
value = v;
|
||||
}
|
||||
|
||||
return null;
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -90,6 +90,10 @@ final class ${LAF_NAME}Defaults {
|
||||
*/
|
||||
private Map<String, Region> registeredRegions =
|
||||
new HashMap<String, Region>();
|
||||
|
||||
private Map<JComponent, Map<Region, SynthStyle>> overridesCache =
|
||||
new WeakHashMap<JComponent, Map<Region, SynthStyle>>();
|
||||
|
||||
/**
|
||||
* Our fallback style to avoid NPEs if the proper style cannot be found in
|
||||
* this class. Not sure if relying on DefaultSynthStyle is the best choice.
|
||||
@ -251,7 +255,11 @@ ${UI_DEFAULT_INIT}
|
||||
}
|
||||
|
||||
//return the style, if found, or the default style if not found
|
||||
return foundStyle == null ? defaultStyle : foundStyle.getStyle(comp);
|
||||
return foundStyle == null ? defaultStyle : foundStyle.getStyle(comp, r);
|
||||
}
|
||||
|
||||
public void clearOverridesCache(JComponent c) {
|
||||
overridesCache.remove(c);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -457,15 +465,6 @@ ${UI_DEFAULT_INIT}
|
||||
* Cached shared style.
|
||||
*/
|
||||
private NimbusStyle style;
|
||||
/**
|
||||
* A weakly referenced hash map such that if the reference JComponent
|
||||
* key is garbage collected then the entry is removed from the map.
|
||||
* This cache exists so that when a JComponent has nimbus overrides
|
||||
* in its client map, a unique style will be created and returned
|
||||
* for that JComponent instance, always. In such a situation each
|
||||
* JComponent instance must have its own instance of NimbusStyle.
|
||||
*/
|
||||
private WeakHashMap<JComponent, WeakReference<NimbusStyle>> overridesCache;
|
||||
|
||||
/**
|
||||
* Create a new LazyStyle.
|
||||
@ -513,17 +512,21 @@ ${UI_DEFAULT_INIT}
|
||||
* Gets the style. Creates it if necessary.
|
||||
* @return the style
|
||||
*/
|
||||
SynthStyle getStyle(JComponent c) {
|
||||
SynthStyle getStyle(JComponent c, Region r) {
|
||||
// if the component has overrides, it gets its own unique style
|
||||
// instead of the shared style.
|
||||
if (c.getClientProperty("Nimbus.Overrides") != null) {
|
||||
if (overridesCache == null)
|
||||
overridesCache = new WeakHashMap<JComponent, WeakReference<NimbusStyle>>();
|
||||
WeakReference<NimbusStyle> ref = overridesCache.get(c);
|
||||
NimbusStyle s = ref == null ? null : ref.get();
|
||||
Map<Region, SynthStyle> map = overridesCache.get(c);
|
||||
SynthStyle s = null;
|
||||
if (map == null) {
|
||||
map = new HashMap<Region, SynthStyle>();
|
||||
overridesCache.put(c, map);
|
||||
} else {
|
||||
s = map.get(r);
|
||||
}
|
||||
if (s == null) {
|
||||
s = new NimbusStyle(prefix, c);
|
||||
overridesCache.put(c, new WeakReference<NimbusStyle>(s));
|
||||
map.put(r, s);
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
@ -280,11 +280,15 @@ public class NimbusLookAndFeel extends SynthLookAndFeel {
|
||||
protected boolean shouldUpdateStyleOnEvent(PropertyChangeEvent ev) {
|
||||
String eName = ev.getPropertyName();
|
||||
|
||||
// Always update when overrides or size variant change
|
||||
if ("Nimbus.Overrides" == eName ||
|
||||
// These properties affect style cached inside NimbusDefaults (6860433)
|
||||
if ("name" == eName ||
|
||||
"ancestor" == eName ||
|
||||
"Nimbus.Overrides" == eName ||
|
||||
"Nimbus.Overrides.InheritDefaults" == eName ||
|
||||
"JComponent.sizeVariant" == eName) {
|
||||
|
||||
JComponent c = (JComponent) ev.getSource();
|
||||
defaults.clearOverridesCache(c);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -237,7 +237,16 @@ public class SynthButtonUI extends BasicButtonUI implements
|
||||
// ********************************
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -250,7 +259,13 @@ public class SynthButtonUI extends BasicButtonUI implements
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -264,7 +279,8 @@ public class SynthButtonUI extends BasicButtonUI implements
|
||||
* Paints the specified component.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
AbstractButton b = (AbstractButton)context.getComponent();
|
||||
|
||||
@ -137,7 +137,16 @@ public class SynthColorChooserUI extends BasicColorChooserUI implements
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -151,7 +160,13 @@ public class SynthColorChooserUI extends BasicColorChooserUI implements
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -166,7 +181,8 @@ public class SynthColorChooserUI extends BasicColorChooserUI implements
|
||||
* This implementation does not perform any actions.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
}
|
||||
|
||||
@ -305,7 +305,16 @@ public class SynthComboBoxUI extends BasicComboBoxUI implements
|
||||
// begin ComponentUI Implementation
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -319,7 +328,13 @@ public class SynthComboBoxUI extends BasicComboBoxUI implements
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -333,7 +348,8 @@ public class SynthComboBoxUI extends BasicComboBoxUI implements
|
||||
* Paints the specified component.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
hasFocus = comboBox.hasFocus();
|
||||
|
||||
@ -152,7 +152,16 @@ public class SynthDesktopIconUI extends BasicDesktopIconUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -166,7 +175,13 @@ public class SynthDesktopIconUI extends BasicDesktopIconUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -180,7 +195,8 @@ public class SynthDesktopIconUI extends BasicDesktopIconUI
|
||||
* Paints the specified component. This implementation does nothing.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
}
|
||||
|
||||
@ -439,7 +439,16 @@ public class SynthDesktopPaneUI extends BasicDesktopPaneUI implements
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -453,7 +462,13 @@ public class SynthDesktopPaneUI extends BasicDesktopPaneUI implements
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -467,7 +482,8 @@ public class SynthDesktopPaneUI extends BasicDesktopPaneUI implements
|
||||
* Paints the specified component. This implementation does nothing.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
}
|
||||
|
||||
@ -148,7 +148,16 @@ public class SynthEditorPaneUI extends BasicEditorPaneUI implements SynthUI {
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -164,7 +173,8 @@ public class SynthEditorPaneUI extends BasicEditorPaneUI implements SynthUI {
|
||||
* Paints the specified component.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
super.paint(g, getComponent());
|
||||
|
||||
@ -194,7 +194,16 @@ public class SynthInternalFrameUI extends BasicInternalFrameUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -208,7 +217,13 @@ public class SynthInternalFrameUI extends BasicInternalFrameUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -222,7 +237,8 @@ public class SynthInternalFrameUI extends BasicInternalFrameUI
|
||||
* Paints the specified component. This implementation does nothing.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
}
|
||||
|
||||
@ -156,12 +156,16 @@ public class SynthLabelUI extends BasicLabelUI implements SynthUI {
|
||||
}
|
||||
|
||||
/**
|
||||
* Notifies this UI delegate that it's time to paint the specified
|
||||
* component. This method is invoked by <code>JComponent</code>
|
||||
* when the specified component is being painted.
|
||||
*/
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -175,7 +179,13 @@ public class SynthLabelUI extends BasicLabelUI implements SynthUI {
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -189,7 +199,8 @@ public class SynthLabelUI extends BasicLabelUI implements SynthUI {
|
||||
* Paints the specified component.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
JLabel label = (JLabel)context.getComponent();
|
||||
|
||||
@ -57,7 +57,16 @@ public class SynthListUI extends BasicListUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
|
||||
@ -125,7 +125,16 @@ public class SynthMenuBarUI extends BasicMenuBarUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -139,7 +148,13 @@ public class SynthMenuBarUI extends BasicMenuBarUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -153,7 +168,8 @@ public class SynthMenuBarUI extends BasicMenuBarUI
|
||||
* Paints the specified component. This implementation does nothing.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
}
|
||||
|
||||
@ -227,7 +227,16 @@ public class SynthMenuItemUI extends BasicMenuItemUI implements
|
||||
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -240,7 +249,13 @@ public class SynthMenuItemUI extends BasicMenuItemUI implements
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -254,7 +269,8 @@ public class SynthMenuItemUI extends BasicMenuItemUI implements
|
||||
* Paints the specified component.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
SynthContext accContext = getContext(menuItem,
|
||||
|
||||
@ -227,7 +227,16 @@ public class SynthMenuUI extends BasicMenuUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -241,7 +250,13 @@ public class SynthMenuUI extends BasicMenuUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -255,7 +270,8 @@ public class SynthMenuUI extends BasicMenuUI
|
||||
* Paints the specified component. This implementation does nothing.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
SynthContext accContext = getContext(menuItem,
|
||||
|
||||
@ -149,7 +149,16 @@ public class SynthOptionPaneUI extends BasicOptionPaneUI implements
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -163,7 +172,13 @@ public class SynthOptionPaneUI extends BasicOptionPaneUI implements
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -177,7 +192,8 @@ public class SynthOptionPaneUI extends BasicOptionPaneUI implements
|
||||
* Paints the specified component. This implementation does nothing.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
}
|
||||
|
||||
@ -136,7 +136,16 @@ public class SynthPanelUI extends BasicPanelUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -150,7 +159,13 @@ public class SynthPanelUI extends BasicPanelUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -164,7 +179,8 @@ public class SynthPanelUI extends BasicPanelUI
|
||||
* Paints the specified component. This implementation does nothing.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
// do actual painting
|
||||
|
||||
@ -132,7 +132,16 @@ public class SynthPopupMenuUI extends BasicPopupMenuUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -146,7 +155,13 @@ public class SynthPopupMenuUI extends BasicPopupMenuUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -160,7 +175,8 @@ public class SynthPopupMenuUI extends BasicPopupMenuUI
|
||||
* Paints the specified component. This implementation does nothing.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
}
|
||||
|
||||
@ -193,7 +193,16 @@ public class SynthProgressBarUI extends BasicProgressBarUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -208,7 +217,13 @@ public class SynthProgressBarUI extends BasicProgressBarUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -222,7 +237,8 @@ public class SynthProgressBarUI extends BasicProgressBarUI
|
||||
* Paints the specified component.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
JProgressBar pBar = (JProgressBar)context.getComponent();
|
||||
|
||||
@ -102,7 +102,16 @@ public class SynthRootPaneUI extends BasicRootPaneUI implements SynthUI {
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -116,7 +125,13 @@ public class SynthRootPaneUI extends BasicRootPaneUI implements SynthUI {
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -130,7 +145,8 @@ public class SynthRootPaneUI extends BasicRootPaneUI implements SynthUI {
|
||||
* Paints the specified component. This implementation does nothing.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
}
|
||||
|
||||
@ -222,7 +222,16 @@ public class SynthScrollBarUI extends BasicScrollBarUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -237,7 +246,13 @@ public class SynthScrollBarUI extends BasicScrollBarUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -251,7 +266,8 @@ public class SynthScrollBarUI extends BasicScrollBarUI
|
||||
* Paints the specified component.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
SynthContext subcontext = getContext(scrollbar,
|
||||
|
||||
@ -64,7 +64,16 @@ public class SynthScrollPaneUI extends BasicScrollPaneUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -78,7 +87,13 @@ public class SynthScrollPaneUI extends BasicScrollPaneUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -92,7 +107,8 @@ public class SynthScrollPaneUI extends BasicScrollPaneUI
|
||||
* Paints the specified component.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
Border vpBorder = scrollpane.getViewportBorder();
|
||||
|
||||
@ -135,7 +135,16 @@ public class SynthSeparatorUI extends SeparatorUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -151,7 +160,13 @@ public class SynthSeparatorUI extends SeparatorUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -165,7 +180,8 @@ public class SynthSeparatorUI extends SeparatorUI
|
||||
* Paints the specified component.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
JSeparator separator = (JSeparator)context.getComponent();
|
||||
|
||||
@ -788,7 +788,16 @@ public class SynthSliderUI extends BasicSliderUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -802,7 +811,13 @@ public class SynthSliderUI extends BasicSliderUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -815,7 +830,8 @@ public class SynthSliderUI extends BasicSliderUI
|
||||
* Paints the specified component.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
recalculateIfInsetsChanged();
|
||||
|
||||
@ -283,7 +283,16 @@ public class SynthSpinnerUI extends BasicSpinnerUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -298,7 +307,13 @@ public class SynthSpinnerUI extends BasicSpinnerUI
|
||||
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -312,7 +327,8 @@ public class SynthSpinnerUI extends BasicSpinnerUI
|
||||
* Paints the specified component. This implementation does nothing.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
}
|
||||
|
||||
@ -269,7 +269,16 @@ public class SynthSplitPaneUI extends BasicSplitPaneUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -283,7 +292,13 @@ public class SynthSplitPaneUI extends BasicSplitPaneUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -297,7 +312,8 @@ public class SynthSplitPaneUI extends BasicSplitPaneUI
|
||||
* Paints the specified component. This implementation does nothing.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
// This is done to update package private variables in
|
||||
|
||||
@ -92,8 +92,8 @@ public class SynthTabbedPaneUI extends BasicTabbedPaneUI
|
||||
private SynthStyle tabAreaStyle;
|
||||
private SynthStyle tabContentStyle;
|
||||
|
||||
private Rectangle textRect;
|
||||
private Rectangle iconRect;
|
||||
private Rectangle textRect = new Rectangle();
|
||||
private Rectangle iconRect = new Rectangle();
|
||||
|
||||
private Rectangle tabAreaBounds = new Rectangle();
|
||||
|
||||
@ -115,11 +115,6 @@ public class SynthTabbedPaneUI extends BasicTabbedPaneUI
|
||||
return new SynthTabbedPaneUI();
|
||||
}
|
||||
|
||||
private SynthTabbedPaneUI() {
|
||||
textRect = new Rectangle();
|
||||
iconRect = new Rectangle();
|
||||
}
|
||||
|
||||
private boolean scrollableTabLayoutEnabled() {
|
||||
return (tabPane.getTabLayoutPolicy() == JTabbedPane.SCROLL_TAB_LAYOUT);
|
||||
}
|
||||
@ -362,7 +357,16 @@ public class SynthTabbedPaneUI extends BasicTabbedPaneUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -409,7 +413,13 @@ public class SynthTabbedPaneUI extends BasicTabbedPaneUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -423,7 +433,8 @@ public class SynthTabbedPaneUI extends BasicTabbedPaneUI
|
||||
* Paints the specified component.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
int selectedIndex = tabPane.getSelectedIndex();
|
||||
|
||||
@ -123,7 +123,16 @@ public class SynthTableHeaderUI extends BasicTableHeaderUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -137,7 +146,13 @@ public class SynthTableHeaderUI extends BasicTableHeaderUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -151,7 +166,8 @@ public class SynthTableHeaderUI extends BasicTableHeaderUI
|
||||
* Paints the specified component.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
super.paint(g, context.getComponent());
|
||||
|
||||
@ -256,7 +256,16 @@ public class SynthTableUI extends BasicTableUI
|
||||
//
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -279,7 +288,13 @@ public class SynthTableUI extends BasicTableUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -293,7 +308,8 @@ public class SynthTableUI extends BasicTableUI
|
||||
* Paints the specified component.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
Rectangle clip = g.getClipBounds();
|
||||
|
||||
@ -123,7 +123,16 @@ public class SynthTextAreaUI extends BasicTextAreaUI implements SynthUI {
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -140,7 +149,8 @@ public class SynthTextAreaUI extends BasicTextAreaUI implements SynthUI {
|
||||
* Paints the specified component.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
super.paint(g, getComponent());
|
||||
|
||||
@ -161,7 +161,16 @@ public class SynthTextFieldUI extends BasicTextFieldUI implements SynthUI {
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -182,7 +191,8 @@ public class SynthTextFieldUI extends BasicTextFieldUI implements SynthUI {
|
||||
* model to potentially be updated asynchronously.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
super.paint(g, getComponent());
|
||||
|
||||
@ -198,7 +198,16 @@ public class SynthToolBarUI extends BasicToolBarUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -213,7 +222,13 @@ public class SynthToolBarUI extends BasicToolBarUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -258,7 +273,8 @@ public class SynthToolBarUI extends BasicToolBarUI
|
||||
* Paints the toolbar.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
if (handleIcon != null && toolBar.isFloatable()) {
|
||||
|
||||
@ -121,7 +121,16 @@ public class SynthToolTipUI extends BasicToolTipUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -144,7 +153,13 @@ public class SynthToolTipUI extends BasicToolTipUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -158,7 +173,8 @@ public class SynthToolTipUI extends BasicToolTipUI
|
||||
* Paints the specified component.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
JToolTip tip = (JToolTip)context.getComponent();
|
||||
|
||||
@ -250,7 +250,16 @@ public class SynthTreeUI extends BasicTreeUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -273,7 +282,13 @@ public class SynthTreeUI extends BasicTreeUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -287,7 +302,8 @@ public class SynthTreeUI extends BasicTreeUI
|
||||
* Paints the specified component.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
paintContext = context;
|
||||
|
||||
@ -150,7 +150,16 @@ public class SynthViewportUI extends ViewportUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Notifies this UI delegate to repaint the specified component.
|
||||
* This method paints the component background, then calls
|
||||
* the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* <p>In general, this method does not need to be overridden by subclasses.
|
||||
* All Look and Feel rendering code should reside in the {@code paint} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void update(Graphics g, JComponent c) {
|
||||
@ -174,7 +183,13 @@ public class SynthViewportUI extends ViewportUI
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* Paints the specified component according to the Look and Feel.
|
||||
* <p>This method is not used by Synth Look and Feel.
|
||||
* Painting is handled by the {@link #paint(SynthContext,Graphics)} method.
|
||||
*
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @param c the component being painted
|
||||
* @see #paint(SynthContext,Graphics)
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g, JComponent c) {
|
||||
@ -188,7 +203,8 @@ public class SynthViewportUI extends ViewportUI
|
||||
* Paints the specified component. This implementation does nothing.
|
||||
*
|
||||
* @param context context for the component being painted
|
||||
* @param g {@code Graphics} object used for painting
|
||||
* @param g the {@code Graphics} object used for painting
|
||||
* @see #update(Graphics,JComponent)
|
||||
*/
|
||||
protected void paint(SynthContext context, Graphics g) {
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
|
||||
* Copyright 2010 Sun Microsystems, Inc. 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
|
||||
@ -38,6 +38,7 @@ import infos.ThirdBeanBeanInfo;
|
||||
|
||||
import java.beans.BeanInfo;
|
||||
import java.beans.Introspector;
|
||||
import java.lang.ref.Reference;
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
import sun.awt.SunToolkit;
|
||||
@ -61,9 +62,10 @@ public class TestBeanInfo implements Runnable {
|
||||
try {
|
||||
actual = Introspector.getBeanInfo(type);
|
||||
type = actual.getClass();
|
||||
Field field = type.getDeclaredField("targetBeanInfo"); // NON-NLS: field name
|
||||
Field field = type.getDeclaredField("targetBeanInfoRef"); // NON-NLS: field name
|
||||
field.setAccessible(true);
|
||||
actual = (BeanInfo) field.get(actual);
|
||||
Reference ref = (Reference) field.get(actual);
|
||||
actual = (BeanInfo) ref.get();
|
||||
}
|
||||
catch (Exception exception) {
|
||||
throw new Error("unexpected error", exception);
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
|
||||
* Copyright 2010 Sun Microsystems, Inc. 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
|
||||
@ -24,9 +24,9 @@
|
||||
/*
|
||||
* @test
|
||||
* @bug 5102804
|
||||
* @ignore This test is not predictable with regards to GC
|
||||
* @summary Tests memory leak
|
||||
* @author Sergey Malenkov
|
||||
* @run main/othervm -ms16m -mx16m Test5102804
|
||||
*/
|
||||
|
||||
import java.beans.BeanInfo;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
|
||||
* Copyright 2004-2010 Sun Microsystems, Inc. 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
|
||||
@ -26,6 +26,7 @@
|
||||
* @bug 4646747
|
||||
* @summary Tests that persistence delegate is correct after memory stress
|
||||
* @author Mark Davidson
|
||||
* @run main/othervm -ms16m -mx16m Test4646747
|
||||
*/
|
||||
|
||||
import java.beans.DefaultPersistenceDelegate;
|
||||
@ -41,11 +42,14 @@ public class Test4646747 {
|
||||
encoder.setPersistenceDelegate(Test4646747.class, new MyPersistenceDelegate());
|
||||
// WARNING: This can eat up a lot of memory
|
||||
Object[] obs = new Object[10000];
|
||||
for (int i = 0; i < obs.length; i++) {
|
||||
obs[i] = new int[1000];
|
||||
while (obs != null) {
|
||||
try {
|
||||
obs = new Object[obs.length + obs.length / 3];
|
||||
}
|
||||
catch (OutOfMemoryError error) {
|
||||
obs = null;
|
||||
}
|
||||
}
|
||||
System.gc();
|
||||
System.gc();
|
||||
PersistenceDelegate pd = encoder.getPersistenceDelegate(Test4646747.class);
|
||||
if (!(pd instanceof MyPersistenceDelegate))
|
||||
throw new Error("persistence delegate has been lost");
|
||||
|
||||
84
jdk/test/java/text/Collator/Bug5047314.java
Normal file
84
jdk/test/java/text/Collator/Bug5047314.java
Normal file
@ -0,0 +1,84 @@
|
||||
/*
|
||||
* Copyright (c) 2009 Sun Microsystems, Inc. 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.
|
||||
*
|
||||
* 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 5047314
|
||||
* @summary verify that compare() and getCollationKey() don't go into an infinite loop for unfinished Thai/Lao text.
|
||||
* @run main/timeout=60 Bug5047314
|
||||
*/
|
||||
import java.text.Collator;
|
||||
import java.util.Locale;
|
||||
|
||||
public class Bug5047314 {
|
||||
|
||||
private static Collator colLao = Collator.getInstance(new Locale("lo"));
|
||||
private static Collator colThai = Collator.getInstance(new Locale("th"));
|
||||
|
||||
private static String[] textLao = {
|
||||
"\u0ec0", "\u0ec1", "\u0ec2", "\u0ec3", "\u0ec4"
|
||||
};
|
||||
private static String[] textThai = {
|
||||
"\u0e40", "\u0e41", "\u0e42", "\u0e43", "\u0e44"
|
||||
};
|
||||
|
||||
public static void main(String[] args) {
|
||||
testLao1();
|
||||
testLao2();
|
||||
testThai1();
|
||||
testThai2();
|
||||
}
|
||||
|
||||
private static void testLao1() {
|
||||
System.out.print("Test(Lao 1) .... ");
|
||||
for (int i = 0; i < textLao.length; i++) {
|
||||
colLao.compare(textLao[i], textLao[i]);
|
||||
}
|
||||
System.out.println("Passed.");
|
||||
}
|
||||
|
||||
private static void testLao2() {
|
||||
System.out.print("Test(Lao 2) .... ");
|
||||
for (int i = 0; i < textLao.length; i++) {
|
||||
colLao.compare(textLao[i], textLao[i]);
|
||||
}
|
||||
System.out.println("Passed.");
|
||||
}
|
||||
|
||||
private static void testThai1() {
|
||||
System.out.print("Test(Thai 1) .... ");
|
||||
for (int i = 0; i < textThai.length; i++) {
|
||||
colThai.compare(textThai[i], textThai[i]);
|
||||
}
|
||||
System.out.println("Passed.");
|
||||
}
|
||||
|
||||
private static void testThai2() {
|
||||
System.out.print("Test(Thai 2) .... ");
|
||||
for (int i = 0; i < textThai.length; i++) {
|
||||
colThai.getCollationKey(textThai[i]);
|
||||
}
|
||||
System.out.println("Passed.");
|
||||
}
|
||||
|
||||
}
|
||||
42
jdk/test/java/util/TimeZone/TimeZoneDatePermissionCheck.java
Normal file
42
jdk/test/java/util/TimeZone/TimeZoneDatePermissionCheck.java
Normal file
@ -0,0 +1,42 @@
|
||||
/* Testcase for PR381 Stackoverflow error with security manager, signed jars
|
||||
* and -Djava.security.debug set.
|
||||
* Copyright (c) 2009, Red Hat Inc.
|
||||
* 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. Sun designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* Test class. Create a test keystore and dummy cert, create a jar file to
|
||||
* sign with the test class in it. Sign it run it with the security manager
|
||||
* on, plus accesscontroller debugging, will go into infinite recursion
|
||||
* trying to get enough permissions for printing Date of failing
|
||||
* certificate, unless fix is applied.
|
||||
*/
|
||||
public class TimeZoneDatePermissionCheck
|
||||
{
|
||||
public static void main(String[] args)
|
||||
{
|
||||
System.out.println(new Date());
|
||||
}
|
||||
}
|
||||
58
jdk/test/java/util/TimeZone/TimeZoneDatePermissionCheck.sh
Normal file
58
jdk/test/java/util/TimeZone/TimeZoneDatePermissionCheck.sh
Normal file
@ -0,0 +1,58 @@
|
||||
# Testcase for PR381 Stackoverflow error with security manager, signed jars
|
||||
# and -Djava.security.debug set.
|
||||
#
|
||||
# Copyright (c) 2009, Red Hat Inc.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# 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 for more details.
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# @test
|
||||
# @bug 6584033
|
||||
# @summary Stackoverflow error with security manager, signed jars and debug.
|
||||
# @build TimeZoneDatePermissionCheck
|
||||
# @run shell TimeZoneDatePermissionCheck.sh
|
||||
|
||||
# Set default if not run under jtreg from test dir itself
|
||||
if [ "${TESTCLASSES}" = "" ] ; then
|
||||
TESTCLASSES="."
|
||||
fi
|
||||
if [ "${TESTJAVA}" = "" ] ; then
|
||||
TESTJAVA=/usr
|
||||
fi
|
||||
|
||||
# create a test keystore and dummy cert
|
||||
rm -f ${TESTCLASSES}/timezonedatetest.store
|
||||
${TESTJAVA}/bin/keytool -genkeypair -alias testcert \
|
||||
-keystore ${TESTCLASSES}/timezonedatetest.store \
|
||||
-storepass testpass -validity 360 \
|
||||
-dname "cn=Mark Wildebeest, ou=FreeSoft, o=Red Hat, c=NL" \
|
||||
-keypass testpass
|
||||
|
||||
# create a jar file to sign with the test class in it.
|
||||
rm -f ${TESTCLASSES}/timezonedatetest.jar
|
||||
${TESTJAVA}/bin/jar cf \
|
||||
${TESTCLASSES}/timezonedatetest.jar \
|
||||
-C ${TESTCLASSES} TimeZoneDatePermissionCheck.class
|
||||
|
||||
# sign it
|
||||
${TESTJAVA}/bin/jarsigner \
|
||||
-keystore ${TESTCLASSES}/timezonedatetest.store \
|
||||
-storepass testpass ${TESTCLASSES}/timezonedatetest.jar testcert
|
||||
|
||||
# run it with the security manager on, plus accesscontroller debugging
|
||||
# will go into infinite recursion trying to get enough permissions for
|
||||
# printing Date of failing certificate unless fix is applied.
|
||||
${TESTJAVA}/bin/java -Djava.security.manager \
|
||||
-Djava.security.debug=access,failure,policy \
|
||||
-cp ${TESTCLASSES}/timezonedatetest.jar TimeZoneDatePermissionCheck
|
||||
28
jdk/test/javax/swing/MultiUIDefaults/4300666/bug4300666.html
Normal file
28
jdk/test/javax/swing/MultiUIDefaults/4300666/bug4300666.html
Normal file
@ -0,0 +1,28 @@
|
||||
<!--
|
||||
Copyright 2007 Sun Microsystems, Inc. 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.
|
||||
|
||||
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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
have any questions.
|
||||
-->
|
||||
|
||||
<html>
|
||||
<body>
|
||||
<applet code="bug4300666.class" width=200 height=200></applet>
|
||||
</body>
|
||||
</html>
|
||||
40
jdk/test/javax/swing/MultiUIDefaults/4300666/bug4300666.java
Normal file
40
jdk/test/javax/swing/MultiUIDefaults/4300666/bug4300666.java
Normal file
@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright 2007 Sun Microsystems, Inc. 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.
|
||||
*
|
||||
* 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
|
||||
/* @test
|
||||
@bug 4300666
|
||||
@summary Printing UIDefaults throws NoSuchElementExcept
|
||||
@author Andrey Pikalev
|
||||
@run applet bug4300666.html
|
||||
*/
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
|
||||
public class bug4300666 extends JApplet {
|
||||
|
||||
public void init() {
|
||||
UIDefaults d = UIManager.getDefaults();
|
||||
d.toString();
|
||||
}
|
||||
}
|
||||
94
jdk/test/javax/swing/MultiUIDefaults/4331767/bug4331767.java
Normal file
94
jdk/test/javax/swing/MultiUIDefaults/4331767/bug4331767.java
Normal file
@ -0,0 +1,94 @@
|
||||
/*
|
||||
* Copyright 2007 Sun Microsystems, Inc. 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.
|
||||
*
|
||||
* 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
|
||||
/* @test
|
||||
@bug 4331767
|
||||
@summary Tests that custom implementation of UIDefaults.getUIError() is
|
||||
called when an UI error occurs
|
||||
@author Peter Zhelezniakov
|
||||
@run main bug4331767
|
||||
*/
|
||||
import javax.swing.*;
|
||||
import javax.swing.plaf.metal.MetalLookAndFeel;
|
||||
import java.util.Locale;
|
||||
|
||||
public class bug4331767
|
||||
{
|
||||
private static boolean passed = false;
|
||||
|
||||
public static void main(String[] argv) {
|
||||
try {
|
||||
UIManager.setLookAndFeel(new BrokenLookAndFeel());
|
||||
} catch (Exception e) {
|
||||
throw new Error("Failed to set BrokenLookAndFeel, cannot test", e);
|
||||
}
|
||||
|
||||
// This should call BrokenUIDefaults.getUIError()
|
||||
new JButton();
|
||||
|
||||
if (!passed) {
|
||||
throw new RuntimeException("Failed: Custom getUIError() not called");
|
||||
}
|
||||
}
|
||||
|
||||
static class BrokenUIDefaults extends UIDefaults {
|
||||
UIDefaults defaults;
|
||||
|
||||
public BrokenUIDefaults(UIDefaults def) {
|
||||
defaults = def;
|
||||
}
|
||||
|
||||
public Object get(Object key) {
|
||||
if ("ButtonUI".equals(key)) {
|
||||
System.err.println("[II] Called BrokenUIDefaults.get(Object)");
|
||||
return "a nonexistent class";
|
||||
}
|
||||
return defaults.get(key);
|
||||
}
|
||||
|
||||
public Object get(Object key, Locale l) {
|
||||
if ("ButtonUI".equals(key)) {
|
||||
System.err.println("[II] Called BrokenUIDefaults.get(Object, Locale)");
|
||||
return "a nonexistent class";
|
||||
}
|
||||
return defaults.get(key, l);
|
||||
}
|
||||
|
||||
protected void getUIError(String msg) {
|
||||
System.err.println("[II] BrokenUIDefaults.getUIError() called, test passes");
|
||||
passed = true;
|
||||
}
|
||||
}
|
||||
|
||||
static class BrokenLookAndFeel extends MetalLookAndFeel {
|
||||
UIDefaults defaults;
|
||||
|
||||
public BrokenLookAndFeel() {
|
||||
defaults = new BrokenUIDefaults(super.getDefaults());
|
||||
}
|
||||
|
||||
public UIDefaults getDefaults() {
|
||||
return defaults;
|
||||
}
|
||||
}
|
||||
}
|
||||
98
jdk/test/javax/swing/MultiUIDefaults/Test6860438.java
Normal file
98
jdk/test/javax/swing/MultiUIDefaults/Test6860438.java
Normal file
@ -0,0 +1,98 @@
|
||||
/*
|
||||
* Copyright 2009 Sun Microsystems, Inc. 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.
|
||||
*
|
||||
* 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
|
||||
/* @test
|
||||
@bug 6860438
|
||||
@summary Tests various MultiUIDefaults methods
|
||||
@author Peter Zhelezniakov
|
||||
@run main Test6860438
|
||||
*/
|
||||
|
||||
import java.util.Enumeration;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import javax.swing.UIManager;
|
||||
|
||||
public class Test6860438
|
||||
{
|
||||
static final String KEY = "Test6860438.key";
|
||||
static final String VALUE = "Test6860438.value";
|
||||
|
||||
void check(Object key, Object value, boolean present, int size) {
|
||||
check(UIManager.get(key) == value, "UIManager.get()");
|
||||
check(UIManager.getDefaults().size() == size, "MultiUIDefaults.size()");
|
||||
|
||||
checkEnumeration(UIManager.getDefaults().keys(),
|
||||
key, present, "MultiUIDefaults.keys()");
|
||||
checkEnumeration(UIManager.getDefaults().elements(),
|
||||
value, present, "MultiUIDefaults.elements()");
|
||||
|
||||
// check MultiUIDefaults.entrySet()
|
||||
boolean found = false;
|
||||
Set<Entry<Object, Object>> entries = UIManager.getDefaults().entrySet();
|
||||
for (Entry<Object, Object> e: entries) {
|
||||
if (e.getKey() == key) {
|
||||
check(e.getValue() == value, "MultiUIDefaults.entrySet()");
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
check(found == present, "MultiUIDefaults.entrySet()");
|
||||
}
|
||||
|
||||
void checkEnumeration(Enumeration<Object> e, Object elem,
|
||||
boolean present, String error) {
|
||||
boolean found = false;
|
||||
while (e.hasMoreElements()) {
|
||||
if (e.nextElement() == elem) {
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
check(found == present, error);
|
||||
}
|
||||
|
||||
void check(boolean condition, String methodName) {
|
||||
if (! condition) {
|
||||
throw new RuntimeException(methodName + " failed");
|
||||
}
|
||||
}
|
||||
|
||||
void test() {
|
||||
int size = UIManager.getDefaults().size();
|
||||
|
||||
// create a new value, size increases
|
||||
UIManager.getLookAndFeelDefaults().put(KEY, VALUE);
|
||||
check(KEY, VALUE, true, size + 1);
|
||||
|
||||
// override the value, size remains the same
|
||||
UIManager.put(KEY, VALUE);
|
||||
check(KEY, VALUE, true, size + 1);
|
||||
|
||||
// remove the value, size decreases
|
||||
UIManager.getDefaults().remove(KEY);
|
||||
check(KEY, null, false, size);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
new Test6860438().test();
|
||||
}
|
||||
}
|
||||
165
jdk/test/javax/swing/plaf/nimbus/ColorCustomizationTest.java
Normal file
165
jdk/test/javax/swing/plaf/nimbus/ColorCustomizationTest.java
Normal file
@ -0,0 +1,165 @@
|
||||
/*
|
||||
* Copyright 2009 Sun Microsystems, Inc. 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.
|
||||
*
|
||||
* 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
|
||||
/* @test
|
||||
@bug 6860433
|
||||
@summary Tests variuos techniques of Nimbus color customization
|
||||
@author Peter Zhelezniakov
|
||||
@run main ColorCustomizationTest
|
||||
*/
|
||||
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.UIDefaults;
|
||||
import javax.swing.UIManager;
|
||||
import java.awt.Color;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.image.BufferedImage;
|
||||
import javax.swing.UnsupportedLookAndFeelException;
|
||||
import javax.swing.plaf.ColorUIResource;
|
||||
import javax.swing.plaf.nimbus.NimbusLookAndFeel;
|
||||
import javax.swing.plaf.synth.Region;
|
||||
|
||||
public class ColorCustomizationTest
|
||||
{
|
||||
final static int WIDTH = 200;
|
||||
final static int HEIGHT = 100;
|
||||
|
||||
static NimbusLookAndFeel nimbus;
|
||||
|
||||
final JLabel label;
|
||||
final Graphics g;
|
||||
|
||||
ColorCustomizationTest() {
|
||||
label = new JLabel();
|
||||
label.setSize(200, 100);
|
||||
|
||||
g = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_ARGB).getGraphics();
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
nimbus = new NimbusLookAndFeel();
|
||||
try {
|
||||
UIManager.setLookAndFeel(nimbus);
|
||||
} catch (UnsupportedLookAndFeelException e) {
|
||||
throw new Error("Unable to set Nimbus LAF");
|
||||
}
|
||||
SwingUtilities.invokeAndWait(new Runnable() {
|
||||
@Override public void run() {
|
||||
new ColorCustomizationTest().test();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void check(Color c) {
|
||||
SwingUtilities.updateComponentTreeUI(label);
|
||||
label.paint(g);
|
||||
if (label.getBackground().getRGB() != c.getRGB()) {
|
||||
System.err.println("Color mismatch!");
|
||||
System.err.println(" found: " + label.getBackground());
|
||||
System.err.println(" expected: " + c);
|
||||
throw new RuntimeException("Test failed");
|
||||
}
|
||||
}
|
||||
|
||||
void test() {
|
||||
testOverrides();
|
||||
testInheritance();
|
||||
testNames();
|
||||
testBaseColor();
|
||||
}
|
||||
|
||||
void testOverrides() {
|
||||
Color defaultColor = label.getBackground();
|
||||
|
||||
// override default background
|
||||
UIDefaults defs = new UIDefaults();
|
||||
defs.put("Label.background", new ColorUIResource(Color.RED));
|
||||
label.putClientProperty("Nimbus.Overrides", defs);
|
||||
check(Color.RED);
|
||||
|
||||
// change overriding color
|
||||
defs = new UIDefaults();
|
||||
defs.put("Label.background", new ColorUIResource(Color.GREEN));
|
||||
label.putClientProperty("Nimbus.Overrides", defs);
|
||||
check(Color.GREEN);
|
||||
|
||||
// remove override
|
||||
label.putClientProperty("Nimbus.Overrides", null);
|
||||
check(defaultColor);
|
||||
}
|
||||
|
||||
void testInheritance() {
|
||||
Color defaultColor = label.getBackground();
|
||||
|
||||
// more specific setting is in global defaults
|
||||
UIManager.put("Label[Enabled].background", new ColorUIResource(Color.RED));
|
||||
|
||||
// less specific one is in overrides
|
||||
UIDefaults defs = new UIDefaults();
|
||||
defs.put("Label.background", new ColorUIResource(Color.GREEN));
|
||||
|
||||
// global wins
|
||||
label.putClientProperty("Nimbus.Overrides", defs);
|
||||
check(Color.RED);
|
||||
|
||||
// now override wins
|
||||
label.putClientProperty("Nimbus.Overrides.InheritDefaults", false);
|
||||
check(Color.GREEN);
|
||||
|
||||
// global is back
|
||||
label.putClientProperty("Nimbus.Overrides.InheritDefaults", true);
|
||||
check(Color.RED);
|
||||
|
||||
// back to default color
|
||||
UIManager.put("Label[Enabled].background", null);
|
||||
label.putClientProperty("Nimbus.Overrides.InheritDefaults", false);
|
||||
label.putClientProperty("Nimbus.Overrides", null);
|
||||
check(defaultColor);
|
||||
}
|
||||
|
||||
void testNames() {
|
||||
Color defaultColor = label.getBackground();
|
||||
|
||||
UIManager.put("\"BlueLabel\"[Enabled].background",
|
||||
new ColorUIResource(Color.BLUE));
|
||||
UIManager.put("\"RedLabel\"[Enabled].background",
|
||||
new ColorUIResource(Color.RED));
|
||||
nimbus.register(Region.LABEL, "\"BlueLabel\"");
|
||||
nimbus.register(Region.LABEL, "\"RedLabel\"");
|
||||
|
||||
label.setName("BlueLabel");
|
||||
check(Color.BLUE);
|
||||
label.setName("RedLabel");
|
||||
check(Color.RED);
|
||||
|
||||
// remove name, color goes back to default
|
||||
label.setName(null);
|
||||
check(defaultColor);
|
||||
}
|
||||
|
||||
void testBaseColor() {
|
||||
UIManager.put("control", Color.GREEN);
|
||||
check(Color.GREEN);
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user