From 48ed6852bf333cd1cd230b40712c1ad96adcb446 Mon Sep 17 00:00:00 2001
From: Anton Tarasov
Date: Thu, 18 Jun 2009 11:28:54 +0400
Subject: [PATCH 01/23] 4788402: SortingFocusTraversalPolicy: prob with
non-focusable focus Cycle Root as first
Reviewed-by: dcherepanov
---
.../ContainerOrderFocusTraversalPolicy.java | 12 ++--
.../swing/SortingFocusTraversalPolicy.java | 9 ++-
.../FocusTraversalPolicy/DefaultFTPTest.java | 62 ++++++++++++++++++-
.../FocusTraversalPolicy/LayoutFTPTest.java | 62 ++++++++++++++++++-
4 files changed, 131 insertions(+), 14 deletions(-)
diff --git a/jdk/src/share/classes/java/awt/ContainerOrderFocusTraversalPolicy.java b/jdk/src/share/classes/java/awt/ContainerOrderFocusTraversalPolicy.java
index 187ddc54931..e3913a7fff9 100644
--- a/jdk/src/share/classes/java/awt/ContainerOrderFocusTraversalPolicy.java
+++ b/jdk/src/share/classes/java/awt/ContainerOrderFocusTraversalPolicy.java
@@ -425,15 +425,13 @@ public class ContainerOrderFocusTraversalPolicy extends FocusTraversalPolicy
}
if (log.isLoggable(Level.FINE)) log.fine("### Cycle is " + cycle);
- for (int i = 0; i < cycle.size(); i++) {
- Component comp = cycle.get(i);
+ for (Component comp : cycle) {
if (accept(comp)) {
return comp;
- } else if (comp instanceof Container && comp != aContainer) {
- Container cont = (Container)comp;
- if (cont.isFocusTraversalPolicyProvider()) {
- return cont.getFocusTraversalPolicy().getDefaultComponent(cont);
- }
+ } else if (comp != aContainer &&
+ (comp = getComponentDownCycle(comp, FORWARD_TRAVERSAL)) != null)
+ {
+ return comp;
}
}
}
diff --git a/jdk/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java b/jdk/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java
index 73c391faac5..715732fcee0 100644
--- a/jdk/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java
+++ b/jdk/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java
@@ -444,11 +444,10 @@ public class SortingFocusTraversalPolicy
for (Component comp : cycle) {
if (accept(comp)) {
return comp;
- } else if (comp instanceof Container && comp != aContainer) {
- Container cont = (Container)comp;
- if (cont.isFocusTraversalPolicyProvider()) {
- return cont.getFocusTraversalPolicy().getDefaultComponent(cont);
- }
+ } else if (comp != aContainer &&
+ (comp = getComponentDownCycle(comp, FORWARD_TRAVERSAL)) != null)
+ {
+ return comp;
}
}
return null;
diff --git a/jdk/test/java/awt/Focus/FocusTraversalPolicy/DefaultFTPTest.java b/jdk/test/java/awt/Focus/FocusTraversalPolicy/DefaultFTPTest.java
index 6ad3b1af9d0..b7c91667ae8 100644
--- a/jdk/test/java/awt/Focus/FocusTraversalPolicy/DefaultFTPTest.java
+++ b/jdk/test/java/awt/Focus/FocusTraversalPolicy/DefaultFTPTest.java
@@ -104,7 +104,7 @@ comp[unfocusable] - is set unfocusable.
*/
public class DefaultFTPTest {
- final int TESTS_NUMBER = 10;
+ final int TESTS_NUMBER = 11;
public static void main(String[] args) {
DefaultFTPTest app = new DefaultFTPTest();
@@ -928,3 +928,63 @@ class PolicyTest10 extends AbstractPolicyTest {
}
}
}
+
+/*
+ * frame [ container(root) [...] comp ]
+ * - getDefaultComponent() should implicitly down-cycle into the .
+ * - getFirstComponent() should implicitly down-cycle into the .
+ */
+class PolicyTest11 extends AbstractPolicyTest {
+ protected Frame createFrame() {
+ Frame frame = (Frame) registerComponent("frame", new Frame("Test Frame"));
+ frame.setLayout(new FlowLayout());
+
+ Container cont = (Container)registerComponent("panel", new Panel());
+ cont.add(registerComponent("btn-1", new Button("button")));
+ cont.add(registerComponent("btn-2", new Button("button")));
+
+ frame.add(cont);
+ frame.add(registerComponent("btn-3", new Button("button")));
+
+ return frame;
+ }
+
+ protected void customizeHierarchy() {
+ ((Container)getComponent("frame")).setFocusTraversalPolicy(new DefaultFocusTraversalPolicy());
+ ((Container)getComponent("panel")).setFocusCycleRoot(true);
+ }
+
+ protected Map getForwardOrder() {
+ Map order = new HashMap();
+ order.put("frame", "btn-1");
+ order.put("btn-1", "btn-2");
+ order.put("btn-2", "btn-1");
+ order.put("btn-3", "btn-1");
+ return order;
+ }
+
+ protected Map getBackwardOrder() {
+ Map order = new HashMap();
+ order.put("btn-3", "btn-1");
+ order.put("btn-2", "btn-1");
+ order.put("btn-1", "btn-2");
+ order.put("frame", "btn-3");
+ return order;
+ }
+
+ protected String[] getContainersToTest() {
+ return new String[] {"frame"};
+ }
+
+ protected String getDefaultComp(String focusCycleRoot_id) {
+ return "btn-1";
+ }
+
+ protected String getFirstComp(String focusCycleRoot_id) {
+ return "btn-1";
+ }
+
+ protected String getLastComp(String focusCycleRoot_id) {
+ return "btn-3";
+ }
+}
diff --git a/jdk/test/java/awt/Focus/FocusTraversalPolicy/LayoutFTPTest.java b/jdk/test/java/awt/Focus/FocusTraversalPolicy/LayoutFTPTest.java
index 329845c2ac6..12ef3c2789c 100644
--- a/jdk/test/java/awt/Focus/FocusTraversalPolicy/LayoutFTPTest.java
+++ b/jdk/test/java/awt/Focus/FocusTraversalPolicy/LayoutFTPTest.java
@@ -105,7 +105,7 @@ comp[unfocusable] - is set unfocusable.
*/
public class LayoutFTPTest {
- final int TESTS_NUMBER = 10;
+ final int TESTS_NUMBER = 11;
public static void main(String[] args) {
LayoutFTPTest app = new LayoutFTPTest();
@@ -929,3 +929,63 @@ class PolicyTest10 extends AbstractPolicyTest {
}
}
}
+
+/*
+ * frame [ container(root) [...] comp ]
+ * - getDefaultComponent() should implicitly down-cycle into the .
+ * - getFirstComponent() should implicitly down-cycle into the .
+ */
+class PolicyTest11 extends AbstractPolicyTest {
+ protected Frame createFrame() {
+ JFrame jframe = (JFrame) registerComponent("jframe", new JFrame("Test Frame"));
+ jframe.setLayout(new FlowLayout());
+
+ Container cont = (Container)registerComponent("jpanel", new JPanel());
+ cont.add(registerComponent("btn-1", new JButton("jbutton")));
+ cont.add(registerComponent("btn-2", new JButton("jbutton")));
+
+ jframe.add(cont);
+ jframe.add(registerComponent("btn-3", new JButton("jbutton")));
+
+ return jframe;
+ }
+
+ protected void customizeHierarchy() {
+ ((Container)getComponent("jframe")).setFocusTraversalPolicy(new LayoutFocusTraversalPolicy());
+ ((Container)getComponent("jpanel")).setFocusCycleRoot(true);
+ }
+
+ protected Map getForwardOrder() {
+ Map order = new HashMap();
+ order.put("jframe", "btn-1");
+ order.put("btn-1", "btn-2");
+ order.put("btn-2", "btn-1");
+ order.put("btn-3", "btn-1");
+ return order;
+ }
+
+ protected Map getBackwardOrder() {
+ Map order = new HashMap();
+ order.put("btn-3", "btn-1");
+ order.put("btn-2", "btn-1");
+ order.put("btn-1", "btn-2");
+ order.put("jframe", "btn-3");
+ return order;
+ }
+
+ protected String[] getContainersToTest() {
+ return new String[] {"jframe"};
+ }
+
+ protected String getDefaultComp(String focusCycleRoot_id) {
+ return "btn-1";
+ }
+
+ protected String getFirstComp(String focusCycleRoot_id) {
+ return "btn-1";
+ }
+
+ protected String getLastComp(String focusCycleRoot_id) {
+ return "btn-3";
+ }
+}
From 5cd182518e09fb3a5c6d558e63fb3a52c9e3dc91 Mon Sep 17 00:00:00 2001
From: Lillian Angel
Date: Fri, 19 Jun 2009 16:49:50 -0400
Subject: [PATCH 02/23] 6721086: Toolkit beep does not work consistently
Flush out after bell is sounded
Reviewed-by: anthony
---
jdk/src/solaris/classes/sun/awt/X11/XToolkit.java | 1 +
1 file changed, 1 insertion(+)
diff --git a/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java b/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java
index 1739e6724f1..01d982dff7a 100644
--- a/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java
+++ b/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java
@@ -1177,6 +1177,7 @@ public final class XToolkit extends UNIXToolkit implements Runnable {
awtLock();
try {
XlibWrapper.XBell(getDisplay(), 0);
+ XlibWrapper.XFlush(getDisplay());
} finally {
awtUnlock();
}
From 3006b1fcd0eae804e2219bb9d5523f2521e519b1 Mon Sep 17 00:00:00 2001
From: Peter Zhelezniakov
Date: Mon, 22 Jun 2009 18:08:50 +0400
Subject: [PATCH 03/23] 6849277: Nimbus L&F: lots of painter classes were added
to JDK7 as public
Reviewed-by: malenkov
---
jdk/src/share/classes/javax/swing/plaf/nimbus/Defaults.template | 2 +-
.../share/classes/javax/swing/plaf/nimbus/PainterImpl.template | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
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/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
From beedf39dcee36c5852e1647cd5b717531b0f380f Mon Sep 17 00:00:00 2001
From: Peter Zhelezniakov
Date: Tue, 23 Jun 2009 12:24:11 +0400
Subject: [PATCH 04/23] 6844273: jdk/make/docs/CORE_PKGS.gmk does not list
Nimbus
Reviewed-by: prr
---
jdk/make/docs/CORE_PKGS.gmk | 1 +
jdk/src/share/classes/javax/swing/plaf/nimbus/package.html | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
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/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);
From 2e78b95300dddd20272d383e7f0eb635ac4ac8b6 Mon Sep 17 00:00:00 2001
From: Dmitry Cherepanov
Date: Tue, 23 Jun 2009 13:35:58 +0400
Subject: [PATCH 05/23] 6824169: Need to remove some AWT class dependencies
Reviewed-by: art, anthony, igor, alexp
---
jdk/src/share/classes/java/awt/AWTEvent.java | 7 +
jdk/src/share/classes/java/awt/Component.java | 36 ++--
jdk/src/share/classes/java/awt/Dialog.java | 6 -
.../share/classes/java/awt/EventQueue.java | 13 ++
.../share/classes/java/awt/MenuComponent.java | 17 ++
jdk/src/share/classes/java/awt/PopupMenu.java | 10 +
jdk/src/share/classes/java/awt/Window.java | 6 +-
.../swing/BufferStrategyPaintManager.java | 8 +-
.../classes/javax/swing/JLayeredPane.java | 10 +-
.../swing/LayoutFocusTraversalPolicy.java | 5 +-
.../classes/javax/swing/LookAndFeel.java | 3 +-
.../classes/javax/swing/TransferHandler.java | 36 +---
.../share/classes/javax/swing/UIManager.java | 19 +-
.../javax/swing/text/JTextComponent.java | 18 ++
.../share/classes/sun/awt/AWTAccessor.java | 148 ++++++++++++++-
jdk/src/share/classes/sun/awt/SunToolkit.java | 178 +++++++-----------
.../classes/sun/awt/shell/ShellFolder.java | 12 +-
.../classes/sun/swing/AccessibleMethod.java | 136 -------------
.../classes/sun/swing/SwingAccessor.java | 96 ++++++++++
.../solaris/classes/sun/awt/X11/XToolkit.java | 11 +-
.../sun/awt/windows/WComponentPeer.java | 23 ++-
.../sun/awt/windows/WEmbeddedFrame.java | 7 +-
.../sun/awt/windows/WFileDialogPeer.java | 7 +
.../sun/awt/windows/WPopupMenuPeer.java | 28 +--
.../sun/awt/windows/WPrintDialogPeer.java | 7 +
.../java2d/windows/GDIWindowSurfaceData.java | 14 +-
26 files changed, 469 insertions(+), 392 deletions(-)
delete mode 100644 jdk/src/share/classes/sun/swing/AccessibleMethod.java
create mode 100644 jdk/src/share/classes/sun/swing/SwingAccessor.java
diff --git a/jdk/src/share/classes/java/awt/AWTEvent.java b/jdk/src/share/classes/java/awt/AWTEvent.java
index 768e424643b..3fa01136db8 100644
--- a/jdk/src/share/classes/java/awt/AWTEvent.java
+++ b/jdk/src/share/classes/java/awt/AWTEvent.java
@@ -32,6 +32,7 @@ import java.awt.peer.LightweightPeer;
import java.lang.reflect.Field;
import java.util.logging.Logger;
import java.util.logging.Level;
+import sun.awt.AWTAccessor;
/**
* The root event class for all AWT events.
@@ -230,6 +231,12 @@ public abstract class AWTEvent extends EventObject {
if (!GraphicsEnvironment.isHeadless()) {
initIDs();
}
+ AWTAccessor.setAWTEventAccessor(
+ new AWTAccessor.AWTEventAccessor() {
+ public void setPosted(AWTEvent ev) {
+ ev.isPosted = true;
+ }
+ });
}
private static synchronized Field get_InputEvent_CanAccessSystemClipboard() {
diff --git a/jdk/src/share/classes/java/awt/Component.java b/jdk/src/share/classes/java/awt/Component.java
index 06938ad0115..e07fbe7c5c7 100644
--- a/jdk/src/share/classes/java/awt/Component.java
+++ b/jdk/src/share/classes/java/awt/Component.java
@@ -861,6 +861,17 @@ public abstract class Component implements ImageObserver, MenuContainer,
public boolean isVisible_NoClientCode(Component comp) {
return comp.isVisible_NoClientCode();
}
+ public void setRequestFocusController
+ (RequestFocusController requestController)
+ {
+ Component.setRequestFocusController(requestController);
+ }
+ public AppContext getAppContext(Component comp) {
+ return comp.appContext;
+ }
+ public void setAppContext(Component comp, AppContext appContext) {
+ comp.appContext = appContext;
+ }
});
}
@@ -9824,31 +9835,6 @@ public abstract class Component implements ImageObserver, MenuContainer,
// ****************** END OF MIXING CODE ********************************
- private static boolean doesClassImplement(Class cls, String interfaceName) {
- if (cls == null) return false;
-
- for (Class c : cls.getInterfaces()) {
- if (c.getName().equals(interfaceName)) {
- return true;
- }
- }
- return doesClassImplement(cls.getSuperclass(), interfaceName);
- }
-
- /**
- * Checks that the given object implements the given interface.
- * @param obj Object to be checked
- * @param interfaceName The name of the interface. Must be fully-qualified interface name.
- * @return true, if this object implements the given interface,
- * false, otherwise, or if obj or interfaceName is null
- */
- static boolean doesImplement(Object obj, String interfaceName) {
- if (obj == null) return false;
- if (interfaceName == null) return false;
-
- return doesClassImplement(obj.getClass(), interfaceName);
- }
-
// Note that the method is overriden in the Window class,
// a window doesn't need to be updated in the Z-order.
void updateZOrder() {
diff --git a/jdk/src/share/classes/java/awt/Dialog.java b/jdk/src/share/classes/java/awt/Dialog.java
index a67d94a32ae..4660e6ea07c 100644
--- a/jdk/src/share/classes/java/awt/Dialog.java
+++ b/jdk/src/share/classes/java/awt/Dialog.java
@@ -262,12 +262,6 @@ public class Dialog extends Window {
TOOLKIT_EXCLUDE
};
- /**
- * @since 1.6
- */
- private final static ModalExclusionType DEFAULT_MODAL_EXCLUSION_TYPE =
- ModalExclusionType.APPLICATION_EXCLUDE;
-
/* operations with this list should be synchronized on tree lock*/
transient static IdentityArrayList