This commit is contained in:
Yuri Nesterenko 2009-07-01 00:23:56 -07:00
commit 41cd33fc25
21 changed files with 430 additions and 83 deletions

View File

@ -217,6 +217,7 @@ CORE_PKGS = \
javax.swing.plaf.basic \
javax.swing.plaf.metal \
javax.swing.plaf.multi \
javax.swing.plaf.nimbus \
javax.swing.plaf.synth \
javax.tools \
javax.transaction \

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2002-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
@ -27,13 +27,17 @@ package com.sun.java.swing;
import sun.awt.EventQueueDelegate;
import sun.awt.AppContext;
import java.util.Collections;
import java.util.Map;
import java.util.WeakHashMap;
import java.util.concurrent.Callable;
import java.awt.AWTEvent;
import java.awt.EventQueue;
import java.awt.Component;
import java.awt.Container;
import javax.swing.JComponent;
import javax.swing.RepaintManager;
import javax.swing.SwingUtilities;
/**
* A collection of utility methods for Swing.
@ -69,6 +73,43 @@ public class SwingUtilities3 {
repaintManager);
}
private static final Map<Container, Boolean> vsyncedMap =
Collections.synchronizedMap(new WeakHashMap<Container, Boolean>());
/**
* Sets vsyncRequested state for the {@code rootContainer}. If
* {@code isRequested} is {@code true} then vsynced
* {@code BufferStrategy} is enabled for this {@code rootContainer}.
*
* Note: requesting vsynced painting does not guarantee one. The outcome
* depends on current RepaintManager's RepaintManager.PaintManager
* and on the capabilities of the graphics hardware/software and what not.
*
* @param rootContainer topmost container. Should be either {@code Window}
* or {@code Applet}
* @param isRequested the value to set vsyncRequested state to
*/
public static void setVsyncRequested(Container rootContainer,
boolean isRequested) {
assert SwingUtilities.getRoot(rootContainer) == rootContainer;
if (isRequested) {
vsyncedMap.put(rootContainer, Boolean.TRUE);
} else {
vsyncedMap.remove(rootContainer);
}
}
/**
* Checks if vsync painting is requested for {@code rootContainer}
*
* @param rootContainer topmost container. Should be either Window or Applet
* @return {@code true} if vsync painting is requested for {@code rootContainer}
*/
public static boolean isVsyncRequested(Container rootContainer) {
assert SwingUtilities.getRoot(rootContainer) == rootContainer;
return Boolean.TRUE == vsyncedMap.get(rootContainer);
}
/**
* Returns delegate {@code RepaintManager} for {@code component} hierarchy.
*/

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2002-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
@ -139,7 +139,7 @@ public class GTKLookAndFeel extends SynthLookAndFeel {
});
isSunDesktop = val.booleanValue();
}
if (isSunDesktop) {
if (isSunDesktop && !sun.java2d.SunGraphicsEnvironment.isOpenSolaris) {
isSunCJK = true;
}
}

View File

@ -93,7 +93,7 @@ class EnumPersistenceDelegate extends PersistenceDelegate {
protected Expression instantiate(Object oldInstance, Encoder out) {
Enum e = (Enum) oldInstance;
return new Expression(e, Enum.class, "valueOf", new Object[]{e.getClass(), e.name()});
return new Expression(e, Enum.class, "valueOf", new Object[]{e.getDeclaringClass(), e.name()});
}
}

View File

@ -1030,9 +1030,9 @@ public class SimpleDateFormat extends DateFormat {
case 1: // 'y' - YEAR
if (calendar instanceof GregorianCalendar) {
if (count >= 4)
if (count != 2)
zeroPaddingNumber(value, count, maxIntCount, buffer);
else // count < 4
else // count == 2
zeroPaddingNumber(value, 2, 2, buffer); // clip 1996 to 96
} else {
if (current == null) {

View File

@ -1,5 +1,5 @@
/*
* Copyright 2005-2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2005-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
@ -33,9 +33,13 @@ import java.lang.ref.WeakReference;
import java.security.AccessController;
import java.util.*;
import java.util.logging.*;
import com.sun.java.swing.SwingUtilities3;
import sun.awt.SubRegionShowable;
import sun.java2d.SunGraphics2D;
import sun.security.action.GetPropertyAction;
import sun.java2d.pipe.hw.ExtendedBufferCapabilities;
import sun.awt.SunToolkit;
/**
@ -74,12 +78,6 @@ class BufferStrategyPaintManager extends RepaintManager.PaintManager {
private static Method COMPONENT_CREATE_BUFFER_STRATEGY_METHOD;
private static Method COMPONENT_GET_BUFFER_STRATEGY_METHOD;
/**
* Indicates whether or not we should try and get a flip buffer strategy
* first, default is false.
*/
private static boolean TRY_FLIP;
private static final Logger LOGGER = Logger.getLogger(
"javax.swing.BufferStrategyPaintManager");
@ -152,12 +150,6 @@ class BufferStrategyPaintManager extends RepaintManager.PaintManager {
*/
private boolean disposeBufferOnEnd;
static {
TRY_FLIP = "true".equals(AccessController.doPrivileged(
new GetPropertyAction("swing.useFlipBufferStrategy", "false")));
}
private static Method getGetBufferStrategyMethod() {
if (COMPONENT_GET_BUFFER_STRATEGY_METHOD == null) {
getMethods();
@ -258,7 +250,7 @@ class BufferStrategyPaintManager extends RepaintManager.PaintManager {
try {
BufferInfo info = getBufferInfo(c);
BufferStrategy bufferStrategy;
if (info != null && !info.usingFlip && info.isInSync() &&
if (info != null && info.isInSync() &&
(bufferStrategy = info.getBufferStrategy(false)) != null) {
SubRegionShowable bsSubRegion =
(SubRegionShowable)bufferStrategy;
@ -687,8 +679,6 @@ class BufferStrategyPaintManager extends RepaintManager.PaintManager {
// same reason.
private WeakReference<BufferStrategy> weakBS;
private WeakReference<Container> root;
// Whether or not we're using flip bs or blit.
private boolean usingFlip;
// Indicates whether or not the backbuffer and display are in sync.
// This is set to true when a full repaint on the rootpane is done.
private boolean inSync;
@ -765,13 +755,6 @@ class BufferStrategyPaintManager extends RepaintManager.PaintManager {
return bs;
}
/**
* Returns true if using a flip buffer strategy.
*/
public boolean usingFlip() {
return usingFlip;
}
/**
* Returns true if the buffer strategy of the component differs
* from current buffer strategy.
@ -816,23 +799,19 @@ class BufferStrategyPaintManager extends RepaintManager.PaintManager {
* blit.
*/
private BufferStrategy createBufferStrategy() {
BufferCapabilities caps;
Container root = getRoot();
if (root == null) {
return null;
}
BufferStrategy bs = null;
if (TRY_FLIP) {
bs = createBufferStrategy(root,BufferCapabilities.FlipContents.
COPIED);
usingFlip = true;
if (SwingUtilities3.isVsyncRequested(root)) {
bs = createBufferStrategy(root, true);
if (LOGGER.isLoggable(Level.FINER)) {
LOGGER.finer("createBufferStrategy: using flip strategy");
LOGGER.finer("createBufferStrategy: using vsynced strategy");
}
}
if (bs == null) {
bs = createBufferStrategy(root, null);
usingFlip = false;
bs = createBufferStrategy(root, false);
}
if (!(bs instanceof SubRegionShowable)) {
// We do this for two reasons:
@ -845,15 +824,22 @@ class BufferStrategyPaintManager extends RepaintManager.PaintManager {
return bs;
}
// Creates and returns a buffer strategy of the requested type. If
// Creates and returns a buffer strategy. If
// there is a problem creating the buffer strategy this will
// eat the exception and return null.
private BufferStrategy createBufferStrategy(Container root,
BufferCapabilities.FlipContents type) {
BufferCapabilities caps = new BufferCapabilities(
new ImageCapabilities(true),
new ImageCapabilities(true),
type);
boolean isVsynced) {
BufferCapabilities caps;
if (isVsynced) {
caps = new ExtendedBufferCapabilities(
new ImageCapabilities(true), new ImageCapabilities(true),
BufferCapabilities.FlipContents.COPIED,
ExtendedBufferCapabilities.VSyncType.VSYNC_ON);
} else {
caps = new BufferCapabilities(
new ImageCapabilities(true), new ImageCapabilities(true),
null);
}
BufferStrategy bs = null;
if (SunToolkit.isInstanceOf(root, "java.applet.Applet")) {
try {

View File

@ -1,5 +1,5 @@
/*
* Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1997-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
@ -683,6 +683,7 @@ public class BasicInternalFrameUI extends InternalFrameUI
}
getDesktopManager().endResizingFrame(frame);
resizing = false;
updateFrameCursor();
}
_x = 0;
_y = 0;

View File

@ -31,7 +31,6 @@ import javax.swing.*;
import javax.swing.plaf.UIResource;
import javax.swing.Painter;
import java.awt.print.PrinterGraphics;
import static javax.swing.plaf.nimbus.NimbusLookAndFeel.deriveARGB;
/**
* Convenient base class for defining Painter instances for rendering a
@ -347,7 +346,7 @@ public abstract class AbstractRegionPainter implements Painter<JComponent> {
*/
protected final Color decodeColor(Color color1, Color color2,
float midPoint) {
return new Color(deriveARGB(color1, color2, midPoint));
return new Color(NimbusLookAndFeel.deriveARGB(color1, color2, midPoint));
}
/**

View File

@ -278,7 +278,7 @@ ${UI_DEFAULT_INIT}
* offset (if any), and whether it is to be bold, italic, or left in its
* default form.</p>
*/
public static final class DerivedFont implements UIDefaults.ActiveValue {
static final class DerivedFont implements UIDefaults.ActiveValue {
private float sizeOffset;
private Boolean bold;
private Boolean italic;

View File

@ -436,15 +436,13 @@ public class NimbusLookAndFeel extends SynthLookAndFeel {
*/
static int deriveARGB(Color color1, Color color2, float midPoint) {
int r = color1.getRed() +
(int) ((color2.getRed() - color1.getRed()) * midPoint + 0.5f);
Math.round((color2.getRed() - color1.getRed()) * midPoint);
int g = color1.getGreen() +
(int) ((color2.getGreen() - color1.getGreen()) * midPoint +
0.5f);
Math.round((color2.getGreen() - color1.getGreen()) * midPoint);
int b = color1.getBlue() +
(int) ((color2.getBlue() - color1.getBlue()) * midPoint + 0.5f);
Math.round((color2.getBlue() - color1.getBlue()) * midPoint);
int a = color1.getAlpha() +
(int) ((color2.getAlpha() - color1.getAlpha()) * midPoint +
0.5f);
Math.round((color2.getAlpha() - color1.getAlpha()) * midPoint);
return ((a & 0xFF) << 24) |
((r & 0xFF) << 16) |
((g & 0xFF) << 8) |

View File

@ -31,7 +31,7 @@ import javax.swing.*;
import javax.swing.Painter;
public final class ${PAINTER_NAME} extends AbstractRegionPainter {
final class ${PAINTER_NAME} extends AbstractRegionPainter {
//package private integers representing the available states that
//this painter will paint. These are used when creating a new instance
//of ${PAINTER_NAME} to determine which region/state is being painted

View File

@ -38,7 +38,7 @@ background {@code Painter}, and there may be several painters for different
component states.
<p>Nimbus allows customizing many of its properties, including painters, by
altering the {@link UIDefaults} table. Here's an example:
altering the {@link javax.swing.UIDefaults} table. Here's an example:
<code><pre>
UIManager.put("ProgressBar.tileWidth", myTileWidth);
UIManager.put("ProgressBar[Enabled].backgroundPainter", myBgPainter);

View File

@ -69,6 +69,7 @@ class SynthColorChooserUI extends BasicColorChooserUI implements
}
protected void installDefaults() {
super.installDefaults();
updateStyle(chooser);
}

View File

@ -1,5 +1,5 @@
/*
* Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1998-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
@ -118,12 +118,12 @@ public class DefaultTableCellRenderer extends JLabel
if (System.getSecurityManager() != null) {
if (border != null) return border;
return SAFE_NO_FOCUS_BORDER;
} else {
} else if (border != null) {
if (noFocusBorder == null || noFocusBorder == DEFAULT_NO_FOCUS_BORDER) {
return border;
}
return noFocusBorder;
}
return noFocusBorder;
}
/**

View File

@ -1598,15 +1598,34 @@ public final class NormalizerBase implements Cloneable {
* @param options the optional features to be enabled.
*/
public static String normalize(String str, Normalizer.Form form, int options) {
int len = str.length();
boolean asciiOnly = true;
if (len < 80) {
for (int i = 0; i < len; i++) {
if (str.charAt(i) > 127) {
asciiOnly = false;
break;
}
}
} else {
char[] a = str.toCharArray();
for (int i = 0; i < len; i++) {
if (a[i] > 127) {
asciiOnly = false;
break;
}
}
}
switch (form) {
case NFC :
return NFC.normalize(str, options);
return asciiOnly ? str : NFC.normalize(str, options);
case NFD :
return NFD.normalize(str, options);
return asciiOnly ? str : NFD.normalize(str, options);
case NFKC :
return NFKC.normalize(str, options);
return asciiOnly ? str : NFKC.normalize(str, options);
case NFKD :
return NFKD.normalize(str, options);
return asciiOnly ? str : NFKD.normalize(str, options);
}
throw new IllegalArgumentException("Unexpected normalization form: " +

View File

@ -53,7 +53,7 @@ import javax.swing.*;
public final class RangeMenu extends JComboBox implements ActionListener {
/// Painfully extracted from java.lang.Character.UnicodeBlock. Arrrgh!
/// Unicode 3.0 data.
/// Unicode 5.1.0 data.
private final int[][] UNICODE_RANGES = {
{ 0x000000, 0x00007f }, /// BASIC_LATIN
@ -63,14 +63,16 @@ public final class RangeMenu extends JComboBox implements ActionListener {
{ 0x000250, 0x0002af }, /// IPA_EXTENSIONS
{ 0x0002b0, 0x0002ff }, /// SPACING_MODIFIER_LETTERS
{ 0x000300, 0x00036f }, /// COMBINING_DIACRITICAL_MARKS
{ 0x000370, 0x0003ff }, /// GREEK
{ 0x000370, 0x0003ff }, /// GREEK_AND_COPTIC
{ 0x000400, 0x0004ff }, /// CYRILLIC
{ 0x000500, 0x00052f }, /// CYRILLIC_SUPPLEMENTARY
{ 0x000530, 0x00058f }, /// ARMENIAN
{ 0x000590, 0x0005ff }, /// HEBREW
{ 0x000600, 0x0006ff }, /// ARABIC
{ 0x000700, 0x00074f }, /// SYRIAC
{ 0x000750, 0x00077f }, /// ARABIC_SUPPLEMENT
{ 0x000780, 0x0007bf }, /// THAANA
{ 0x0007c0, 0x0007ff }, /// NKO
{ 0x000900, 0x00097f }, /// DEVANAGARI
{ 0x000980, 0x0009ff }, /// BENGALI
{ 0x000a00, 0x000a7f }, /// GURMUKHI
@ -88,6 +90,7 @@ public final class RangeMenu extends JComboBox implements ActionListener {
{ 0x0010a0, 0x0010ff }, /// GEORGIAN
{ 0x001100, 0x0011ff }, /// HANGUL_JAMO
{ 0x001200, 0x00137f }, /// ETHIOPIC
{ 0x001380, 0x00139f }, /// ETHIOPIC_SUPPLEMENT
{ 0x0013a0, 0x0013ff }, /// CHEROKEE
{ 0x001400, 0x00167f }, /// UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS
{ 0x001680, 0x00169f }, /// OGHAM
@ -100,8 +103,16 @@ public final class RangeMenu extends JComboBox implements ActionListener {
{ 0x001800, 0x0018af }, /// MONGOLIAN
{ 0x001900, 0x00194f }, /// LIMBU
{ 0x001950, 0x00197f }, /// TAI_LE
{ 0x001980, 0x0019df }, /// NEW_TAI_LE
{ 0x0019e0, 0x0019ff }, /// KHMER_SYMBOLS
{ 0x001a00, 0x001a1f }, /// BUGINESE
{ 0x001b00, 0x001b7f }, /// BALINESE
{ 0x001b80, 0x001bbf }, /// SUNDANESE
{ 0x001c00, 0x001c4f }, /// LEPCHA
{ 0x001c50, 0x001c7f }, /// OL_CHIKI
{ 0x001d00, 0x001d7f }, /// PHONETIC_EXTENSIONS
{ 0x001d80, 0x001dbf }, /// PHONEITC EXTENSIONS SUPPLEMENT
{ 0x001dc0, 0x001dff }, /// COMBINING_DIACRITICAL_MAKRS_SUPPLEMENT
{ 0x001e00, 0x001eff }, /// LATIN_EXTENDED_ADDITIONAL
{ 0x001f00, 0x001fff }, /// GREEK_EXTENDED
{ 0x002000, 0x00206f }, /// GENERAL_PUNCTUATION
@ -128,6 +139,14 @@ public final class RangeMenu extends JComboBox implements ActionListener {
{ 0x002980, 0x0029ff }, /// MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B
{ 0x002a00, 0x002aff }, /// SUPPLEMENTAL_MATHEMATICAL_OPERATORS
{ 0x002b00, 0x002bff }, /// MISCELLANEOUS_SYMBOLS_AND_ARROWS
{ 0x002c00, 0x002c5f }, /// GLAGOLITIC
{ 0x002c60, 0x002c7f }, /// LATIN_EXTENDED-C
{ 0x002c80, 0x002cff }, /// COPTIC
{ 0x002d00, 0x002d2f }, /// GEORGIAN_SUPPLEMENT
{ 0x002d30, 0x002d7f }, /// TIFINAGH
{ 0x002d80, 0x002ddf }, /// ETHIOPIC_EXTENDED
{ 0x002de0, 0x002dff }, /// CYRILLIC_EXTENDED-A
{ 0x002e00, 0x002e7f }, /// SUPPLEMENTAL_PUNCTUATION
{ 0x002e80, 0x002eff }, /// CJK_RADICALS_SUPPLEMENT
{ 0x002f00, 0x002fdf }, /// KANGXI_RADICALS
{ 0x002ff0, 0x002fff }, /// IDEOGRAPHIC_DESCRIPTION_CHARACTERS
@ -138,6 +157,7 @@ public final class RangeMenu extends JComboBox implements ActionListener {
{ 0x003130, 0x00318f }, /// HANGUL_COMPATIBILITY_JAMO
{ 0x003190, 0x00319f }, /// KANBUN
{ 0x0031a0, 0x0031bf }, /// BOPOMOFO_EXTENDED
{ 0x0031c0, 0x0031ef }, /// CJK_STROKES
{ 0x0031f0, 0x0031ff }, /// KATAKANA_PHONETIC_EXTENSIONS
{ 0x003200, 0x0032ff }, /// ENCLOSED_CJK_LETTERS_AND_MONTHS
{ 0x003300, 0x0033ff }, /// CJK_COMPATIBILITY
@ -146,13 +166,26 @@ public final class RangeMenu extends JComboBox implements ActionListener {
{ 0x004e00, 0x009fff }, /// CJK_UNIFIED_IDEOGRAPHS
{ 0x00a000, 0x00a48f }, /// YI_SYLLABLES
{ 0x00a490, 0x00a4cf }, /// YI_RADICALS
{ 0x00a500, 0x00a63f }, /// YAI
{ 0x00a640, 0x00a69f }, /// CYRILLIC_EXTENDED-B
{ 0x00a700, 0x00a71f }, /// MODIFIER_TONE_LETTERS
{ 0x00a720, 0x00a7ff }, /// LATIN_EXTENDED-D
{ 0x00a800, 0x00a82f }, /// SYLOTI_NAGRI
{ 0x00a840, 0x00a87f }, /// PHAGS-PA
{ 0x00a880, 0x00a8df }, /// SAURASHTRA
{ 0x00a900, 0x00a92f }, /// KAYAH_LI
{ 0x00a930, 0x00a95f }, /// REJANG
{ 0x00aa00, 0x00aa5f }, /// CHAM
{ 0x00ac00, 0x00d7af }, /// HANGUL_SYLLABLES
{ 0x00d800, 0x00dfff }, /// SURROGATES_AREA
{ 0x00d800, 0x00db7f }, /// HIGH_SURROGATES_AREA
{ 0x00db80, 0x00dbff }, /// HIGH_PRIVATE_USE_SURROGATES_AREA
{ 0x00dc00, 0x00dfff }, /// LOW_SURROGATES_AREA
{ 0x00e000, 0x00f8ff }, /// PRIVATE_USE_AREA
{ 0x00f900, 0x00faff }, /// CJK_COMPATIBILITY_IDEOGRAPHS
{ 0x00fb00, 0x00fb4f }, /// ALPHABETIC_PRESENTATION_FORMS
{ 0x00fb50, 0x00fdff }, /// ARABIC_PRESENTATION_FORMS_A
{ 0x00fe00, 0x00fe0f }, /// VARIATION_SELECTORS
{ 0x00fe10, 0x00fe1f }, /// VERTICAL_FORMS
{ 0x00fe20, 0x00fe2f }, /// COMBINING_HALF_MARKS
{ 0x00fe30, 0x00fe4f }, /// CJK_COMPATIBILITY_FORMS
{ 0x00fe50, 0x00fe6f }, /// SMALL_FORM_VARIANTS
@ -162,17 +195,32 @@ public final class RangeMenu extends JComboBox implements ActionListener {
{ 0x010000, 0x01007f }, /// LINEAR_B_SYLLABARY
{ 0x010080, 0x0100ff }, /// LINEAR_B_IDEOGRAMS
{ 0x010100, 0x01013f }, /// AEGEAN_NUMBERS
{ 0x010140, 0x01018f }, /// ANCIENT_GREEK_NUMBERS
{ 0x010190, 0x0101cf }, /// ANCIENT_SYMBOLS
{ 0x0101d0, 0x0101ff }, /// PHAISTOS_DISC
{ 0x010280, 0x01029f }, /// LYCIAN
{ 0x0102a0, 0x0102df }, /// CARIAN
{ 0x010300, 0x01032f }, /// OLD_ITALIC
{ 0x010330, 0x01034f }, /// GOTHIC
{ 0x010380, 0x01039f }, /// UGARITIC
{ 0x0103a0, 0x0103df }, /// OLD_PERSIAN
{ 0x010400, 0x01044f }, /// DESERET
{ 0x010450, 0x01047f }, /// SHAVIAN
{ 0x010480, 0x0104af }, /// OSMANYA
{ 0x010800, 0x01083f }, /// CYPRIOT_SYLLABARY
{ 0x010900, 0x01091f }, /// PHOENICIAN
{ 0x010920, 0x01093f }, /// LYDIAN
{ 0x010a00, 0x010a5f }, /// KHAROSHTHI
{ 0x012000, 0x0123ff }, /// CUNEIFORM
{ 0x012400, 0x01247f }, /// CUNEIFORM_NUMBERS_AND_PUNCTUATION
{ 0x01d000, 0x01d0ff }, /// BYZANTINE_MUSICAL_SYMBOLS
{ 0x01d100, 0x01d1ff }, /// MUSICAL_SYMBOLS
{ 0x01d200, 0x01d24f }, /// ANCIENT_GREEK_MUSICAL_NOTATION
{ 0x01d300, 0x01d35f }, /// TAI_XUAN_JING_SYMBOLS
{ 0x01d360, 0x01d37f }, /// COUNTING_ROD_NUMERALS
{ 0x01d400, 0x01d7ff }, /// MATHEMATICAL_ALPHANUMERIC_SYMBOLS
{ 0x01f000, 0x01f02f }, /// MAHJONG_TILES
{ 0x01f030, 0x01f09f }, /// DOMINO_TILES
{ 0x020000, 0x02a6df }, /// CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
{ 0x02f800, 0x02fa1f }, /// CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT
{ 0x0e0000, 0x0e007f }, /// TAGS
@ -190,14 +238,16 @@ public final class RangeMenu extends JComboBox implements ActionListener {
"IPA Extensions",
"Spacing Modifier Letters",
"Combining Diacritical Marks",
"Greek",
"Greek and Coptic",
"Cyrillic",
"Cyrillic Supplement",
"Armenian",
"Hebrew",
"Arabic",
"Syriac",
"Arabic Supplement",
"Thaana",
"NKo",
"Devanagari",
"Bengali",
"Gurmukhi",
@ -215,6 +265,7 @@ public final class RangeMenu extends JComboBox implements ActionListener {
"Georgian",
"Hangul Jamo",
"Ethiopic",
"Ethiopic Supplement",
"Cherokee",
"Unified Canadian Aboriginal Syllabics",
"Ogham",
@ -227,14 +278,22 @@ public final class RangeMenu extends JComboBox implements ActionListener {
"Mongolian",
"Limbu",
"Tai Le",
"New Tai Lue",
"Khmer Symbols",
"Buginese",
"Balinese",
"Sundanese",
"Lepcha",
"Ol Chiki",
"Phonetic Extensions",
"Phonetic Extensions Supplement",
"Combining Diacritical Marks Supplement",
"Latin Extended Additional",
"Greek Extended",
"General Punctuation",
"Superscripts and Subscripts",
"Currency Symbols",
"Combining Marks for Symbols",
"Combining Diacritical Marks for Symbols",
"Letterlike Symbols",
"Number Forms",
"Arrows",
@ -255,6 +314,14 @@ public final class RangeMenu extends JComboBox implements ActionListener {
"Miscellaneous Mathematical Symbols-B",
"Supplemental Mathematical Operators",
"Miscellaneous Symbols and Arrows",
"Glagolitic",
"Latin Extended-C",
"Coptic",
"Georgian Supplement",
"Tifinagh",
"Ethiopic Extended",
"Cyrillic Extended-A",
"Supplemental Punctuation",
"CJK Radicals Supplement",
"Kangxi Radicals",
"Ideographic Description Characters",
@ -265,6 +332,7 @@ public final class RangeMenu extends JComboBox implements ActionListener {
"Hangul Compatibility Jamo",
"Kanbun",
"Bopomofo Extended",
"CJK Strokes",
"Katakana Phonetic Extensions",
"Enclosed CJK Letters and Months",
"CJK Compatibility",
@ -273,13 +341,26 @@ public final class RangeMenu extends JComboBox implements ActionListener {
"CJK Unified Ideographs",
"Yi Syllables",
"Yi Radicals",
"Vai",
"Cyrillic Extended-B",
"Modifier Tone Letters",
"Latin Extended-D",
"Syloti Nagri",
"Phags-pa",
"Saurashtra",
"Kayah Li",
"Rejang",
"Cham",
"Hangul Syllables",
"Surrogates Area", // High Surrogates, High Private Use Surrogates, Low Surrogates
"High Surrogates",
"High Private Use Surrogates",
"Low Surrogates",
"Private Use Area",
"CJK Compatibility Ideographs",
"Alphabetic Presentation Forms",
"Arabic Presentation Forms-A",
"Variation Selectors",
"Vertical Forms",
"Combining Half Marks",
"CJK Compatibility Forms",
"Small Form Variants",
@ -289,17 +370,32 @@ public final class RangeMenu extends JComboBox implements ActionListener {
"Linear B Syllabary",
"Linear B Ideograms",
"Aegean Numbers",
"Ancient Greek Numbers",
"Ancient Symbols",
"Phaistos Disc",
"Lycian",
"Carian",
"Old Italic",
"Gothic",
"Ugaritic",
"Old Persian",
"Deseret",
"Shavian",
"Osmanya",
"Cypriot Syllabary",
"Phoenician",
"Lydian",
"Kharoshthi",
"Cuneiform",
"Cuneiform Numbers and Punctuation",
"Byzantine Musical Symbols",
"Musical Symbols",
"Ancient Greek Musical Notation",
"Tai Xuan Jing Symbols",
"Counting Rod Numerals",
"Mathematical Alphanumeric Symbols",
"Mahjong Tiles",
"Domino Tiles",
"CJK Unified Ideographs Extension B",
"CJK Compatibility Ideographs Supplement",
"Tags",

View File

@ -0,0 +1,58 @@
/*
* 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 6852574
* @summary Tests Enum subclass encoding
* @author Sergey Malenkov
*/
public final class Test6852574 extends AbstractTest {
public static void main(String[] args) {
new Test6852574().test(true);
}
protected Object getObject() {
return Data.FIRST;
}
protected Object getAnotherObject() {
return Data.SECOND;
}
public enum Data {
FIRST {
@Override
public String toString() {
return "1";
}
},
SECOND {
@Override
public String toString() {
return "2";
}
}
}
}

View File

@ -24,6 +24,7 @@
* @test
* @bug 6850113
* @summary Verify the return value of digit() for some digits.
* @compile -XDignore.symbol.file=true Bug6850113.java
*/
import sun.text.normalizer.UCharacter;

View File

@ -0,0 +1,81 @@
/*
* 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 6609750
* @summary Make sure that SimpleDateFormat.format() formats years correctly.
*/
import java.text.*;
import java.util.*;
public class Bug6609750 {
public static void main(String[] args) {
boolean error = false;
Locale defaultLocale = Locale.getDefault();
Locale.setDefault(Locale.US);
Date[] dates = {
new Date(9-1900, Calendar.JUNE, 12),
new Date(99-1900, Calendar.JUNE, 12),
new Date(999-1900, Calendar.JUNE, 12),
new Date(2009-1900, Calendar.JUNE, 12),
new Date(30009-1900, Calendar.JUNE, 12),
};
String[] patterns = {
"y", "yy", "yyy", "yyyy", "yyyyy", "yyyyyy"
};
String[][] expectedResults = {
{"9", "09", "009", "0009", "00009", "000009"},
{"99", "99", "099", "0099", "00099", "000099"},
{"999", "99", "999", "0999", "00999", "000999"},
{"2009", "09", "2009", "2009", "02009", "002009"},
{"30009", "09", "30009", "30009", "30009", "030009"},
};
SimpleDateFormat sdf = new SimpleDateFormat();
for (int dateNo = 0; dateNo < dates.length; dateNo++) {
Date date = dates[dateNo];
for (int patternNo = 0; patternNo < patterns.length; patternNo++) {
sdf.applyPattern(patterns[patternNo]);
String got = sdf.format(date);
if (!expectedResults[dateNo][patternNo].equals(got)) {
error = true;
System.err.println("Failed: Unexpected format result: " +
"Expected: \"" + expectedResults[dateNo][patternNo] +
"\", Got: \"" + got + "\" for date " + date +
" with pattern \"" + patterns[patternNo] + "\"");
}
}
}
Locale.setDefault(defaultLocale);
if (error) {
throw new RuntimeException("SimpleDateFormat.format() error.");
};
}
}

View File

@ -35,6 +35,7 @@ import java.awt.Color;
import java.awt.Font;
import java.awt.Insets;
import javax.swing.ActionMap;
import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
@ -51,6 +52,7 @@ import javax.swing.border.LineBorder;
import javax.swing.border.MatteBorder;
import javax.swing.border.SoftBevelBorder;
import javax.swing.border.TitledBorder;
import javax.swing.plaf.ActionMapUIResource;
import javax.swing.plaf.BorderUIResource;
import javax.swing.plaf.synth.SynthLookAndFeel;
import javax.swing.plaf.basic.BasicBorders;
@ -59,7 +61,6 @@ import javax.swing.plaf.metal.MetalBorders;
import javax.swing.plaf.metal.MetalComboBoxEditor;
import sun.swing.plaf.synth.SynthFileChooserUI;
import sun.tools.jconsole.BorderedComponent;
public class Test4856008 {
private static final JLabel LABEL = new JLabel();
@ -133,11 +134,6 @@ public class Test4856008 {
//+ SynthFileChooserUI.UIBorder:
new SynthFileChooser().getUIBorder(),
//+ BorderedComponent.FocusBorder:
getBorder(false),
//+ BorderedComponent.LabeledBorder:
getBorder(true),
};
public static void main(String[] args) {
@ -182,15 +178,6 @@ public class Test4856008 {
return LABEL;
}
// This method is used to get the border from BorderedComponent
private static Border getBorder(boolean labeled) {
JComponent component = new BorderedComponent("4856008", null, true);
CompoundBorder border = (CompoundBorder) component.getBorder();
return labeled
? border.getInsideBorder()
: border.getOutsideBorder();
}
// This class is used to get the instance of BasicBorders.RolloverMarginBorder
private static class ToolBar extends BasicToolBarUI {
private Border getRolloverMarginBorder() {
@ -223,6 +210,11 @@ public class Test4856008 {
return CHOOSER.getBorder();
}
@Override
protected ActionMap createActionMap() {
return new ActionMapUIResource();
}
@Override
public String getFileName() {
return this.name;

View File

@ -0,0 +1,73 @@
/*
* Copyright 2008 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 6849805
@summary Tests NimbusLookAndFeel.deriveColor()
@author Peter Zhelezniakov
@run main Test6849805
*/
import java.awt.Color;
public class Test6849805 {
static boolean pass = true;
static class Minimbus extends javax.swing.plaf.nimbus.NimbusLookAndFeel {
public void test(Color c1, Color c2, float f) {
Color r = getDerivedColor(c1, c2, f);
Color test = (f > 0 ? c2 : c1);
System.out.printf("Got %s, need %s ", r, test);
if (r.getRGB() == test.getRGB() &&
r.getAlpha() == test.getAlpha()) {
System.out.println("Ok");
} else {
System.out.println("FAIL");
pass = false;
}
}
}
public static void main(String[] args) {
Minimbus laf = new Minimbus();
laf.test(Color.WHITE, Color.BLACK, 0f);
laf.test(Color.WHITE, Color.BLACK, 1f);
laf.test(Color.BLACK, Color.WHITE, 0f);
laf.test(Color.BLACK, Color.WHITE, 1f);
laf.test(Color.RED, Color.GREEN, 0f);
laf.test(Color.RED, Color.GREEN, 1f);
laf.test(new Color(127, 127, 127), new Color(51, 151, 212), 0f);
laf.test(new Color(127, 127, 127), new Color(51, 151, 212), 1f);
laf.test(new Color(221, 63, 189), new Color(112, 200, 89), 0f);
laf.test(new Color(221, 63, 189), new Color(112, 200, 89), 1f);
if (! pass) {
throw new RuntimeException("Some testcases failed, see above");
}
}
}