diff --git a/jdk/make/docs/CORE_PKGS.gmk b/jdk/make/docs/CORE_PKGS.gmk index 43a380ef836..3694985b1ed 100644 --- a/jdk/make/docs/CORE_PKGS.gmk +++ b/jdk/make/docs/CORE_PKGS.gmk @@ -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 \ diff --git a/jdk/src/share/classes/com/sun/java/swing/SwingUtilities3.java b/jdk/src/share/classes/com/sun/java/swing/SwingUtilities3.java index 324d2172a43..50ce0b760b9 100644 --- a/jdk/src/share/classes/com/sun/java/swing/SwingUtilities3.java +++ b/jdk/src/share/classes/com/sun/java/swing/SwingUtilities3.java @@ -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 vsyncedMap = + Collections.synchronizedMap(new WeakHashMap()); + + /** + * 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. */ diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKLookAndFeel.java b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKLookAndFeel.java index 23e4ee2eee5..aeefca782c2 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKLookAndFeel.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKLookAndFeel.java @@ -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; } } diff --git a/jdk/src/share/classes/java/beans/MetaData.java b/jdk/src/share/classes/java/beans/MetaData.java index defd196457e..f4d307090a5 100644 --- a/jdk/src/share/classes/java/beans/MetaData.java +++ b/jdk/src/share/classes/java/beans/MetaData.java @@ -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()}); } } diff --git a/jdk/src/share/classes/java/text/SimpleDateFormat.java b/jdk/src/share/classes/java/text/SimpleDateFormat.java index d7e99a943fe..1dfa42ea5f2 100644 --- a/jdk/src/share/classes/java/text/SimpleDateFormat.java +++ b/jdk/src/share/classes/java/text/SimpleDateFormat.java @@ -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) { diff --git a/jdk/src/share/classes/javax/swing/BufferStrategyPaintManager.java b/jdk/src/share/classes/javax/swing/BufferStrategyPaintManager.java index 144ab897459..eb230a09050 100644 --- a/jdk/src/share/classes/javax/swing/BufferStrategyPaintManager.java +++ b/jdk/src/share/classes/javax/swing/BufferStrategyPaintManager.java @@ -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 weakBS; private WeakReference 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 { diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicInternalFrameUI.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicInternalFrameUI.java index 46eefa26c14..383930533a2 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicInternalFrameUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicInternalFrameUI.java @@ -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; diff --git a/jdk/src/share/classes/javax/swing/plaf/nimbus/AbstractRegionPainter.java b/jdk/src/share/classes/javax/swing/plaf/nimbus/AbstractRegionPainter.java index 55fb19599c7..bf29e15221d 100644 --- a/jdk/src/share/classes/javax/swing/plaf/nimbus/AbstractRegionPainter.java +++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/AbstractRegionPainter.java @@ -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 { */ 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)); } /** diff --git a/jdk/src/share/classes/javax/swing/plaf/nimbus/Defaults.template b/jdk/src/share/classes/javax/swing/plaf/nimbus/Defaults.template index a0f5afc22c8..492b53583ed 100644 --- a/jdk/src/share/classes/javax/swing/plaf/nimbus/Defaults.template +++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/Defaults.template @@ -278,7 +278,7 @@ ${UI_DEFAULT_INIT} * offset (if any), and whether it is to be bold, italic, or left in its * default form.

*/ - public static final class DerivedFont implements UIDefaults.ActiveValue { + static final class DerivedFont implements UIDefaults.ActiveValue { private float sizeOffset; private Boolean bold; private Boolean italic; diff --git a/jdk/src/share/classes/javax/swing/plaf/nimbus/NimbusLookAndFeel.java b/jdk/src/share/classes/javax/swing/plaf/nimbus/NimbusLookAndFeel.java index eae031b6ba3..8c5d121b7e1 100644 --- a/jdk/src/share/classes/javax/swing/plaf/nimbus/NimbusLookAndFeel.java +++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/NimbusLookAndFeel.java @@ -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) | diff --git a/jdk/src/share/classes/javax/swing/plaf/nimbus/PainterImpl.template b/jdk/src/share/classes/javax/swing/plaf/nimbus/PainterImpl.template index 2afa0005b08..cad178ef7e6 100644 --- a/jdk/src/share/classes/javax/swing/plaf/nimbus/PainterImpl.template +++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/PainterImpl.template @@ -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 diff --git a/jdk/src/share/classes/javax/swing/plaf/nimbus/package.html b/jdk/src/share/classes/javax/swing/plaf/nimbus/package.html index bd3a0f4f4f1..4453cc163fe 100644 --- a/jdk/src/share/classes/javax/swing/plaf/nimbus/package.html +++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/package.html @@ -38,7 +38,7 @@ background {@code Painter}, and there may be several painters for different component states.

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:

     UIManager.put("ProgressBar.tileWidth", myTileWidth);
     UIManager.put("ProgressBar[Enabled].backgroundPainter", myBgPainter);
diff --git a/jdk/src/share/classes/javax/swing/plaf/synth/SynthColorChooserUI.java b/jdk/src/share/classes/javax/swing/plaf/synth/SynthColorChooserUI.java
index 1a4e20fe57d..8a8dbf63220 100644
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthColorChooserUI.java
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthColorChooserUI.java
@@ -69,6 +69,7 @@ class SynthColorChooserUI extends BasicColorChooserUI implements
     }
 
     protected void installDefaults() {
+        super.installDefaults();
         updateStyle(chooser);
     }
 
diff --git a/jdk/src/share/classes/javax/swing/table/DefaultTableCellRenderer.java b/jdk/src/share/classes/javax/swing/table/DefaultTableCellRenderer.java
index c203178ce3a..07e7265c9bf 100644
--- a/jdk/src/share/classes/javax/swing/table/DefaultTableCellRenderer.java
+++ b/jdk/src/share/classes/javax/swing/table/DefaultTableCellRenderer.java
@@ -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;
     }
 
     /**
diff --git a/jdk/src/share/classes/sun/text/normalizer/NormalizerBase.java b/jdk/src/share/classes/sun/text/normalizer/NormalizerBase.java
index a82475c6009..b4df3e2a659 100644
--- a/jdk/src/share/classes/sun/text/normalizer/NormalizerBase.java
+++ b/jdk/src/share/classes/sun/text/normalizer/NormalizerBase.java
@@ -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: " +
diff --git a/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java b/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java
index 3dabe1e88f8..52c5783f7c1 100644
--- a/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java
+++ b/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java
@@ -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",
diff --git a/jdk/test/java/beans/XMLEncoder/Test6852574.java b/jdk/test/java/beans/XMLEncoder/Test6852574.java
new file mode 100644
index 00000000000..4b474ecb76c
--- /dev/null
+++ b/jdk/test/java/beans/XMLEncoder/Test6852574.java
@@ -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";
+            }
+        }
+    }
+}
diff --git a/jdk/test/java/text/Bidi/Bug6850113.java b/jdk/test/java/text/Bidi/Bug6850113.java
index 2023df89a58..d77f3c7798d 100644
--- a/jdk/test/java/text/Bidi/Bug6850113.java
+++ b/jdk/test/java/text/Bidi/Bug6850113.java
@@ -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;
diff --git a/jdk/test/java/text/Format/DateFormat/Bug6609750.java b/jdk/test/java/text/Format/DateFormat/Bug6609750.java
new file mode 100644
index 00000000000..d1be2e843b1
--- /dev/null
+++ b/jdk/test/java/text/Format/DateFormat/Bug6609750.java
@@ -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.");
+        };
+    }
+
+}
diff --git a/jdk/test/javax/swing/border/Test4856008.java b/jdk/test/javax/swing/border/Test4856008.java
index 1b045eb46ed..e2c1733c89d 100644
--- a/jdk/test/javax/swing/border/Test4856008.java
+++ b/jdk/test/javax/swing/border/Test4856008.java
@@ -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;
diff --git a/jdk/test/javax/swing/plaf/nimbus/Test6849805.java b/jdk/test/javax/swing/plaf/nimbus/Test6849805.java
new file mode 100644
index 00000000000..10f6fb85aef
--- /dev/null
+++ b/jdk/test/javax/swing/plaf/nimbus/Test6849805.java
@@ -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");
+        }
+    }
+}