--- a/jdk/src/java.desktop/macosx/classes/com/apple/laf/AquaComboBoxPopup.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/macosx/classes/com/apple/laf/AquaComboBoxPopup.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -204,7 +204,8 @@
if ((p.x + comboBoxBounds.width < 0) || (p.y + comboBoxBounds.height < 0) || (p.x > scrSize.width) || (p.y > scrSize.height)) {
return null;
}
- return new Rectangle(0, 22, scrSize.width, scrSize.height - 22);
+ Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(comboBox.getGraphicsConfiguration());
+ return new Rectangle(0, insets.top, scrSize.width, scrSize.height - insets.top - insets.bottom);
}
for (final GraphicsDevice gd : gs) {
@@ -314,10 +315,17 @@
}
final Rectangle r = new Rectangle(px, py, pw, ph);
- // Check whether it goes below the bottom of the screen, if so flip it
- if (r.y + r.height < top.y + scrBounds.y + scrBounds.height) return r;
-
- return new Rectangle(px, -r.height + comboBoxInsets.top, r.width, r.height);
+ if (py + ph > scrBounds.y + scrBounds.height) {
+ if (ph <= -scrBounds.y ) {
+ // popup goes above
+ r.y = -ph ;
+ } else {
+ // a full screen height popup
+ r.y = scrBounds.y + Math.max(0, (scrBounds.height - ph) / 2 );
+ r.height = Math.min(scrBounds.height, ph);
+ }
+ }
+ return r;
}
// The one to use when itemCount <= maxRowCount. Size never adjusts for arrows
--- a/jdk/src/java.desktop/macosx/classes/com/apple/laf/AquaSpinnerUI.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/macosx/classes/com/apple/laf/AquaSpinnerUI.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -232,12 +232,12 @@
editor.setInheritsPopupMenu(true);
if (editor.getFont() instanceof UIResource) {
- editor.setFont(spinner.getFont());
+ editor.setFont(new FontUIResource(spinner.getFont()));
}
final JFormattedTextField editorTextField = ((DefaultEditor)editor).getTextField();
if (editorTextField.getFont() instanceof UIResource) {
- editorTextField.setFont(spinner.getFont());
+ editorTextField.setFont(new FontUIResource(spinner.getFont()));
}
final InputMap spinnerInputMap = getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
final InputMap editorInputMap = editorTextField.getInputMap();
@@ -648,12 +648,12 @@
ui.updateToolTipTextForChildren(spinner);
} else if ("font".equals(propertyName)) {
JComponent editor = spinner.getEditor();
- if (editor != null && editor instanceof JSpinner.DefaultEditor) {
+ if (editor instanceof JSpinner.DefaultEditor) {
JTextField tf =
((JSpinner.DefaultEditor) editor).getTextField();
if (tf != null) {
if (tf.getFont() instanceof UIResource) {
- tf.setFont(spinner.getFont());
+ tf.setFont(new FontUIResource(spinner.getFont()));
}
}
}
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/LWMouseInfoPeer.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/LWMouseInfoPeer.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -51,8 +51,12 @@
return false;
}
- final Object windowPeer = AWTAccessor.getComponentAccessor().getPeer(w);
- return LWWindowPeer.getWindowUnderCursor() == windowPeer;
+ LWWindowPeer windowPeer = AWTAccessor.getComponentAccessor().getPeer(w);
+ if (windowPeer == null) {
+ return false;
+ }
+
+ return LWToolkit.getLWToolkit().getPlatformWindowUnderMouse() == windowPeer.getPlatformWindow();
}
}
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/LWTextAreaPeer.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/LWTextAreaPeer.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,6 @@
* questions.
*/
-
package sun.lwawt;
import java.awt.Component;
@@ -40,7 +39,6 @@
import javax.swing.JTextArea;
import javax.swing.ScrollPaneConstants;
import javax.swing.text.Document;
-import javax.swing.text.JTextComponent;
/**
* Lightweight implementation of {@link TextAreaPeer}. Delegates most of the
@@ -75,12 +73,13 @@
super.initializeImpl();
final int visibility = getTarget().getScrollbarVisibility();
synchronized (getDelegateLock()) {
+ getTextComponent().setWrapStyleWord(true);
setScrollBarVisibility(visibility);
}
}
@Override
- JTextComponent getTextComponent() {
+ JTextArea getTextComponent() {
return getDelegate().getView();
}
@@ -165,7 +164,7 @@
// JTextArea.replaceRange() is called.
final Document document = getTextComponent().getDocument();
document.removeDocumentListener(this);
- getDelegate().getView().replaceRange(text, start, end);
+ getTextComponent().replaceRange(text, start, end);
revalidate();
postEvent(new TextEvent(getTarget(), TextEvent.TEXT_VALUE_CHANGED));
document.addDocumentListener(this);
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/LWToolkit.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/LWToolkit.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -396,6 +396,8 @@
return new LWMouseInfoPeer();
}
+ protected abstract PlatformWindow getPlatformWindowUnderMouse();
+
@Override
public final PrintJob getPrintJob(Frame frame, String doctitle,
Properties props) {
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/LWWindowPeer.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/LWWindowPeer.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -61,6 +61,7 @@
private static final int MINIMUM_HEIGHT = 1;
private Insets insets = new Insets(0, 0, 0, 0);
+ private Rectangle maximizedBounds;
private GraphicsDevice graphicsDevice;
private GraphicsConfiguration graphicsConfig;
@@ -176,8 +177,10 @@
if (getTarget() instanceof Frame) {
- setTitle(((Frame) getTarget()).getTitle());
- setState(((Frame) getTarget()).getExtendedState());
+ Frame frame = (Frame) getTarget();
+ setTitle(frame.getTitle());
+ setState(frame.getExtendedState());
+ setMaximizedBounds(frame.getMaximizedBounds());
} else if (getTarget() instanceof Dialog) {
setTitle(((Dialog) getTarget()).getTitle());
}
@@ -543,9 +546,40 @@
return windowState;
}
+ private boolean isMaximizedBoundsSet() {
+ synchronized (getStateLock()) {
+ return maximizedBounds != null;
+ }
+ }
+
+ private Rectangle getDefaultMaximizedBounds() {
+ GraphicsConfiguration config = getGraphicsConfiguration();
+ Insets screenInsets = ((CGraphicsDevice) config.getDevice())
+ .getScreenInsets();
+ Rectangle gcBounds = config.getBounds();
+ return new Rectangle(
+ gcBounds.x + screenInsets.left,
+ gcBounds.y + screenInsets.top,
+ gcBounds.width - screenInsets.left - screenInsets.right,
+ gcBounds.height - screenInsets.top - screenInsets.bottom);
+ }
+
@Override
public void setMaximizedBounds(Rectangle bounds) {
- // TODO: not implemented
+ boolean isMaximizedBoundsSet;
+ synchronized (getStateLock()) {
+ this.maximizedBounds = (isMaximizedBoundsSet = (bounds != null))
+ ? constrainBounds(bounds) : null;
+ }
+
+ setPlatformMaximizedBounds(isMaximizedBoundsSet ? maximizedBounds
+ : getDefaultMaximizedBounds());
+ }
+
+ private void setPlatformMaximizedBounds(Rectangle bounds) {
+ platformWindow.setMaximizedBounds(
+ bounds.x, bounds.y,
+ bounds.width, bounds.height);
}
@Override
@@ -635,6 +669,10 @@
// Second, update the graphics config and surface data
final boolean isNewDevice = updateGraphicsDevice();
+ if (isNewDevice && !isMaximizedBoundsSet()) {
+ setPlatformMaximizedBounds(getDefaultMaximizedBounds());
+ }
+
if (resized || isNewDevice) {
replaceSurfaceData();
updateMinimumSize();
@@ -749,11 +787,10 @@
lastMouseEventPeer = targetPeer;
}
} else {
- PlatformWindow topmostPlatforWindow =
- platformWindow.getTopmostPlatformWindowUnderMouse();
+ PlatformWindow topmostPlatformWindow = LWToolkit.getLWToolkit().getPlatformWindowUnderMouse();
LWWindowPeer topmostWindowPeer =
- topmostPlatforWindow != null ? topmostPlatforWindow.getPeer() : null;
+ topmostPlatformWindow != null ? topmostPlatformWindow.getPeer() : null;
// topmostWindowPeer == null condition is added for the backward
// compatibility with applets. It can be removed when the
@@ -764,8 +801,7 @@
screenX, screenY, modifiers, clickCount, popupTrigger,
targetPeer);
} else {
- LWComponentPeer<?, ?> topmostTargetPeer =
- topmostWindowPeer != null ? topmostWindowPeer.findPeerAt(r.x + x, r.y + y) : null;
+ LWComponentPeer<?, ?> topmostTargetPeer = topmostWindowPeer.findPeerAt(r.x + x, r.y + y);
topmostWindowPeer.generateMouseEnterExitEventsForComponents(when, button, x, y,
screenX, screenY, modifiers, clickCount, popupTrigger,
topmostTargetPeer);
@@ -1057,6 +1093,9 @@
public final void displayChanged() {
if (updateGraphicsDevice()) {
updateMinimumSize();
+ if (!isMaximizedBoundsSet()) {
+ setPlatformMaximizedBounds(getDefaultMaximizedBounds());
+ }
}
// Replace surface unconditionally, because internal state of the
// GraphicsDevice could be changed.
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/PlatformWindow.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/PlatformWindow.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -67,6 +67,11 @@
public void setBounds(int x, int y, int w, int h);
/*
+ * Sets the maximized bounds.
+ */
+ public default void setMaximizedBounds(int x, int y, int w, int h){}
+
+ /*
* Returns the graphics device where the window is.
*/
public GraphicsDevice getGraphicsDevice();
@@ -107,8 +112,6 @@
public void setAlwaysOnTop(boolean value);
- public PlatformWindow getTopmostPlatformWindowUnderMouse();
-
public void updateFocusableWindowState();
public boolean rejectFocusRequest(CausedFocusEvent.Cause cause);
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CAccessibility.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CAccessibility.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -630,7 +630,7 @@
if (!allowIgnored) {
final AccessibleRole role = context.getAccessibleRole();
- if (role != null && ignoredRoles.contains(roleKey(role))) {
+ if (role != null && ignoredRoles != null && ignoredRoles.contains(roleKey(role))) {
// Get the child's unignored children.
_addChildren(child, whichChildren, false, childrenAndRoles);
} else {
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformEmbeddedFrame.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformEmbeddedFrame.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -129,11 +129,6 @@
@Override
public void setAlwaysOnTop(boolean value) {}
- // This method should be properly implemented for applets.
- // It returns null just as a stub.
- @Override
- public PlatformWindow getTopmostPlatformWindowUnderMouse() { return null; }
-
@Override
public void updateFocusableWindowState() {}
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformLWWindow.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformLWWindow.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -162,11 +162,6 @@
}
@Override
- public PlatformWindow getTopmostPlatformWindowUnderMouse(){
- return null;
- }
-
- @Override
public void setOpacity(float opacity) {
}
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java Wed Jun 03 18:11:45 2015 -0700
@@ -51,6 +51,8 @@
private static native void nativeSetNSWindowMenuBar(long nsWindowPtr, long menuBarPtr);
private static native Insets nativeGetNSWindowInsets(long nsWindowPtr);
private static native void nativeSetNSWindowBounds(long nsWindowPtr, double x, double y, double w, double h);
+ private static native void nativeSetNSWindowStandardFrame(long nsWindowPtr,
+ double x, double y, double w, double h);
private static native void nativeSetNSWindowMinMax(long nsWindowPtr, double minW, double minH, double maxW, double maxH);
private static native void nativePushNSWindowToBack(long nsWindowPtr);
private static native void nativePushNSWindowToFront(long nsWindowPtr);
@@ -61,9 +63,9 @@
private static native void nativeSetEnabled(long nsWindowPtr, boolean isEnabled);
private static native void nativeSynthesizeMouseEnteredExitedEvents();
private static native void nativeDispose(long nsWindowPtr);
- private static native CPlatformWindow nativeGetTopmostPlatformWindowUnderMouse();
private static native void nativeEnterFullScreenMode(long nsWindowPtr);
private static native void nativeExitFullScreenMode(long nsWindowPtr);
+ static native CPlatformWindow nativeGetTopmostPlatformWindowUnderMouse();
// Loger to report issues happened during execution but that do not affect functionality
private static final PlatformLogger logger = PlatformLogger.getLogger("sun.lwawt.macosx.CPlatformWindow");
@@ -474,6 +476,10 @@
nativeSetNSWindowBounds(getNSWindowPtr(), x, y, w, h);
}
+ public void setMaximizedBounds(int x, int y, int w, int h) {
+ nativeSetNSWindowStandardFrame(getNSWindowPtr(), x, y, w, h);
+ }
+
private boolean isMaximized() {
return undecorated ? this.normalBounds != null
: CWrapper.NSWindow.isZoomed(getNSWindowPtr());
@@ -750,10 +756,6 @@
setStyleBits(ALWAYS_ON_TOP, isAlwaysOnTop);
}
- public PlatformWindow getTopmostPlatformWindowUnderMouse(){
- return CPlatformWindow.nativeGetTopmostPlatformWindowUnderMouse();
- }
-
@Override
public void setOpacity(float opacity) {
CWrapper.NSWindow.setAlphaValue(getNSWindowPtr(), opacity);
@@ -983,13 +985,11 @@
}
private void checkZoom() {
- if (target instanceof Frame && isVisible()) {
- Frame targetFrame = (Frame)target;
- if (targetFrame.getExtendedState() != Frame.MAXIMIZED_BOTH && isMaximized()) {
- deliverZoom(true);
- } else if (targetFrame.getExtendedState() == Frame.MAXIMIZED_BOTH && !isMaximized()) {
- deliverZoom(false);
- }
+ int state = peer.getState();
+ if (state != Frame.MAXIMIZED_BOTH && isMaximized()) {
+ deliverZoom(true);
+ } else if (state == Frame.MAXIMIZED_BOTH && !isMaximized()) {
+ deliverZoom(false);
}
}
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CRobot.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CRobot.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -78,7 +78,7 @@
@Override
public void mousePress(int buttons) {
mouseButtonsState |= buttons;
-
+ checkMousePos();
mouseEvent(fDevice.getCGDisplayID(), mouseLastX, mouseLastY,
buttons, true, false);
}
@@ -92,11 +92,40 @@
@Override
public void mouseRelease(int buttons) {
mouseButtonsState &= ~buttons;
-
+ checkMousePos();
mouseEvent(fDevice.getCGDisplayID(), mouseLastX, mouseLastY,
buttons, false, false);
}
+ /**
+ * Set unknown mouse location, if needed.
+ */
+ private void checkMousePos() {
+ if (mouseLastX == MOUSE_LOCATION_UNKNOWN ||
+ mouseLastY == MOUSE_LOCATION_UNKNOWN) {
+
+ Rectangle deviceBounds = fDevice.getDefaultConfiguration().getBounds();
+ Point mousePos = CCursorManager.getInstance().getCursorPosition();
+
+ if (mousePos.x < deviceBounds.x) {
+ mousePos.x = deviceBounds.x;
+ }
+ else if (mousePos.x > deviceBounds.x + deviceBounds.width) {
+ mousePos.x = deviceBounds.x + deviceBounds.width;
+ }
+
+ if (mousePos.y < deviceBounds.y) {
+ mousePos.y = deviceBounds.y;
+ }
+ else if (mousePos.y > deviceBounds.y + deviceBounds.height) {
+ mousePos.y = deviceBounds.y + deviceBounds.height;
+ }
+
+ mouseLastX = mousePos.x;
+ mouseLastY = mousePos.y;
+ }
+ }
+
@Override
public native void mouseWheel(int wheelAmt);
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CViewPlatformEmbeddedFrame.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CViewPlatformEmbeddedFrame.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -144,11 +144,6 @@
}
@Override
- public PlatformWindow getTopmostPlatformWindowUnderMouse() {
- return null;
- }
-
- @Override
public void updateFocusableWindowState() {
}
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/LWCToolkit.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/LWCToolkit.java Wed Jun 03 18:11:45 2015 -0700
@@ -929,4 +929,9 @@
!path.endsWith("/") &&
!path.endsWith(".");
}
+
+ @Override
+ protected PlatformWindow getPlatformWindowUnderMouse() {
+ return CPlatformWindow.nativeGetTopmostPlatformWindowUnderMouse();
+ }
}
--- a/jdk/src/java.desktop/macosx/native/include/jawt_md.h Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/macosx/native/include/jawt_md.h Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2013 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
--- a/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTWindow.h Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTWindow.h Wed Jun 03 18:11:45 2015 -0700
@@ -46,6 +46,7 @@
NSWindow *nsWindow;
AWTWindow *ownerWindow;
jint preFullScreenLevel;
+ NSRect standardFrame;
}
// An instance of either AWTWindow_Normal or AWTWindow_Panel
@@ -59,7 +60,7 @@
@property (nonatomic) jint styleBits;
@property (nonatomic) BOOL isEnabled;
@property (nonatomic) jint preFullScreenLevel;
-
+@property (nonatomic) NSRect standardFrame;
- (id) initWithPlatformWindow:(JNFWeakJObjectWrapper *)javaPlatformWindow
ownerWindow:owner
--- a/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTWindow.m Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTWindow.m Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -184,6 +184,7 @@
@synthesize isEnabled;
@synthesize ownerWindow;
@synthesize preFullScreenLevel;
+@synthesize standardFrame;
- (void) updateMinMaxSize:(BOOL)resizable {
if (resizable) {
@@ -509,6 +510,12 @@
// window exposing in _setVisible:(BOOL)
}
+- (NSRect)windowWillUseStandardFrame:(NSWindow *)window
+ defaultFrame:(NSRect)newFrame {
+
+ return [self standardFrame];
+}
+
- (void) _deliverIconify:(BOOL)iconify {
AWT_ASSERT_APPKIT_THREAD;
@@ -953,6 +960,30 @@
/*
* Class: sun_lwawt_macosx_CPlatformWindow
+ * Method: nativeSetNSWindowStandardFrame
+ * Signature: (JDDDD)V
+ */
+JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowStandardFrame
+(JNIEnv *env, jclass clazz, jlong windowPtr, jdouble originX, jdouble originY,
+ jdouble width, jdouble height)
+{
+ JNF_COCOA_ENTER(env);
+
+ NSRect jrect = NSMakeRect(originX, originY, width, height);
+
+ NSWindow *nsWindow = OBJC(windowPtr);
+ [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
+
+ NSRect rect = ConvertNSScreenRect(NULL, jrect);
+ AWTWindow *window = (AWTWindow*)[nsWindow delegate];
+ window.standardFrame = rect;
+ }];
+
+ JNF_COCOA_EXIT(env);
+}
+
+/*
+ * Class: sun_lwawt_macosx_CPlatformWindow
* Method: nativeSetNSWindowMinMax
* Signature: (JDDDD)V
*/
@@ -1131,15 +1162,16 @@
JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeGetTopmostPlatformWindowUnderMouse
(JNIEnv *env, jclass clazz)
{
- jobject topmostWindowUnderMouse = nil;
+ __block jobject topmostWindowUnderMouse = nil;
JNF_COCOA_ENTER(env);
- AWT_ASSERT_APPKIT_THREAD;
- AWTWindow *awtWindow = [AWTWindow getTopmostWindowUnderMouse];
- if (awtWindow != nil) {
- topmostWindowUnderMouse = [awtWindow.javaPlatformWindow jObject];
- }
+ [ThreadUtilities performOnMainThreadWaiting:YES block:^{
+ AWTWindow *awtWindow = [AWTWindow getTopmostWindowUnderMouse];
+ if (awtWindow != nil) {
+ topmostWindowUnderMouse = [awtWindow.javaPlatformWindow jObject];
+ }
+ }];
JNF_COCOA_EXIT(env);
--- a/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CCursorManager.m Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CCursorManager.m Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -118,13 +118,11 @@
JNF_COCOA_ENTER(env);
- __block NSPoint pt = NSZeroPoint;
-
- [ThreadUtilities performOnMainThreadWaiting:YES block:^(){
- pt = ConvertNSScreenPoint(env, [NSEvent mouseLocation]);
- }];
-
- jpt = NSToJavaPoint(env, pt);
+ CGEventRef event = CGEventCreate(NULL);
+ CGPoint globalPos = CGEventGetLocation(event);
+ CFRelease(event);
+
+ jpt = NSToJavaPoint(env, globalPos);
JNF_COCOA_EXIT(env);
--- a/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CRobot.m Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CRobot.m Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -146,47 +146,10 @@
// This is the native method called when Robot mouse events occur.
// The CRobot tracks the mouse position, and which button was
- // pressed. If the mouse position is unknown it is obtained from
- // CGEvents. The peer also tracks the mouse button desired state,
+ // pressed. The peer also tracks the mouse button desired state,
// the appropriate key modifier state, and whether the mouse action
// is simply a mouse move with no mouse button state changes.
- CGError err = kCGErrorSuccess;
-
- CGRect globalDeviceBounds = CGDisplayBounds(displayID);
-
- // Set unknown mouse location, if needed.
- if ((mouseLastX == sun_lwawt_macosx_CRobot_MOUSE_LOCATION_UNKNOWN) ||
- (mouseLastY == sun_lwawt_macosx_CRobot_MOUSE_LOCATION_UNKNOWN))
- {
- CGEventRef event = CGEventCreate(NULL);
- if (event == NULL) {
- return;
- }
-
- CGPoint globalPos = CGEventGetLocation(event);
- CFRelease(event);
-
- // Normalize the coords within this display device, as
- // per Robot rules.
- if (globalPos.x < CGRectGetMinX(globalDeviceBounds)) {
- globalPos.x = CGRectGetMinX(globalDeviceBounds);
- }
- else if (globalPos.x > CGRectGetMaxX(globalDeviceBounds)) {
- globalPos.x = CGRectGetMaxX(globalDeviceBounds);
- }
-
- if (globalPos.y < CGRectGetMinY(globalDeviceBounds)) {
- globalPos.y = CGRectGetMinY(globalDeviceBounds);
- }
- else if (globalPos.y > CGRectGetMaxY(globalDeviceBounds)) {
- globalPos.y = CGRectGetMaxY(globalDeviceBounds);
- }
-
- mouseLastX = (jint)globalPos.x;
- mouseLastY = (jint)globalPos.y;
- }
-
// volatile, otherwise it warns that it might be clobbered by 'longjmp'
volatile CGPoint point;
--- a/jdk/src/java.desktop/share/classes/com/sun/beans/decoder/ArrayElementHandler.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/beans/decoder/ArrayElementHandler.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2013 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
--- a/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/GTKEngine.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/GTKEngine.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -93,7 +93,9 @@
*/
static enum Settings {
GTK_FONT_NAME,
- GTK_ICON_SIZES
+ GTK_ICON_SIZES,
+ GTK_CURSOR_BLINK,
+ GTK_CURSOR_BLINK_TIME
}
/* Custom regions are needed for representing regions that don't exist
--- a/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/GTKLookAndFeel.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/GTKLookAndFeel.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -371,7 +371,17 @@
int vProgWidth = 22 - (progXThickness * 2);
int vProgHeight = 80 - (progYThickness * 2);
- Integer caretBlinkRate = Integer.valueOf(500);
+ Integer caretBlinkRate;
+ if (Boolean.FALSE.equals(GTKEngine.INSTANCE.getSetting(
+ GTKEngine.Settings.GTK_CURSOR_BLINK))) {
+ caretBlinkRate = Integer.valueOf(0);
+ } else {
+ caretBlinkRate = (Integer) GTKEngine.INSTANCE.getSetting(
+ GTKEngine.Settings.GTK_CURSOR_BLINK_TIME);
+ if (caretBlinkRate == null) {
+ caretBlinkRate = Integer.valueOf(500);
+ }
+ }
Insets zeroInsets = new InsetsUIResource(0, 0, 0, 0);
Double defaultCaretAspectRatio = new Double(0.025);
--- a/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk.properties Wed Jun 03 18:11:45 2015 -0700
@@ -34,9 +34,9 @@
FileChooser.newFolderNoDirectoryError.textAndMnemonic=Error creating directory "{0}": No such file or directory
FileChooser.deleteFileButton.textAndMnemonic=De&lete File
FileChooser.renameFileButton.textAndMnemonic=&Rename File
-FileChooser.cancelButton.textAndMnemonic=&Cancel
-FileChooser.saveButton.textAndMnemonic=&OK
-FileChooser.openButton.textAndMnemonic=&OK
+FileChooser.cancelButton.textAndMnemonic=Cancel
+FileChooser.saveButton.textAndMnemonic=OK
+FileChooser.openButton.textAndMnemonic=OK
FileChooser.saveDialogTitle.textAndMnemonic=Save
FileChooser.openDialogTitle.textAndMnemonic=Open
FileChooser.pathLabel.textAndMnemonic=&Selection:
--- a/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_de.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_de.properties Wed Jun 03 18:11:45 2015 -0700
@@ -34,9 +34,9 @@
FileChooser.newFolderNoDirectoryError.textAndMnemonic=Fehler beim Erstellen von Verzeichnis "{0}": Datei oder Verzeichnis nicht vorhanden
FileChooser.deleteFileButton.textAndMnemonic=Datei &l\u00F6schen
FileChooser.renameFileButton.textAndMnemonic=Datei &umbenennen
-FileChooser.cancelButton.textAndMnemonic=&Abbrechen
-FileChooser.saveButton.textAndMnemonic=&OK
-FileChooser.openButton.textAndMnemonic=&OK
+FileChooser.cancelButton.textAndMnemonic=Abbrechen
+FileChooser.saveButton.textAndMnemonic=OK
+FileChooser.openButton.textAndMnemonic=OK
FileChooser.saveDialogTitle.textAndMnemonic=Speichern
FileChooser.openDialogTitle.textAndMnemonic=\u00D6ffnen
FileChooser.pathLabel.textAndMnemonic=Aus&wahl:
--- a/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_es.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_es.properties Wed Jun 03 18:11:45 2015 -0700
@@ -34,9 +34,9 @@
FileChooser.newFolderNoDirectoryError.textAndMnemonic=Error al crear el directorio "{0}": no existe dicho archivo o directorio
FileChooser.deleteFileButton.textAndMnemonic=Su&primir Archivo
FileChooser.renameFileButton.textAndMnemonic=Cambiar Nomb&re de Archivo
-FileChooser.cancelButton.textAndMnemonic=&Cancelar
-FileChooser.saveButton.textAndMnemonic=&Aceptar
-FileChooser.openButton.textAndMnemonic=&Aceptar
+FileChooser.cancelButton.textAndMnemonic=Cancelar
+FileChooser.saveButton.textAndMnemonic=Aceptar
+FileChooser.openButton.textAndMnemonic=Aceptar
FileChooser.saveDialogTitle.textAndMnemonic=Guardar
FileChooser.openDialogTitle.textAndMnemonic=Abrir
FileChooser.pathLabel.textAndMnemonic=&Selecci\u00F3n:
--- a/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_fr.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_fr.properties Wed Jun 03 18:11:45 2015 -0700
@@ -34,9 +34,9 @@
FileChooser.newFolderNoDirectoryError.textAndMnemonic=Erreur lors de la cr\u00E9ation du r\u00E9pertoire "{0}" : ce fichier ou r\u00E9pertoire n''existe pas
FileChooser.deleteFileButton.textAndMnemonic=Supprimer &le fichier
FileChooser.renameFileButton.textAndMnemonic=&Renommer le fichier
-FileChooser.cancelButton.textAndMnemonic=&Annuler
-FileChooser.saveButton.textAndMnemonic=&OK
-FileChooser.openButton.textAndMnemonic=&OK
+FileChooser.cancelButton.textAndMnemonic=Annuler
+FileChooser.saveButton.textAndMnemonic=OK
+FileChooser.openButton.textAndMnemonic=OK
FileChooser.saveDialogTitle.textAndMnemonic=Enregistrer
FileChooser.openDialogTitle.textAndMnemonic=Ouvrir
FileChooser.pathLabel.textAndMnemonic=&S\u00E9lection :
--- a/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_it.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_it.properties Wed Jun 03 18:11:45 2015 -0700
@@ -34,9 +34,9 @@
FileChooser.newFolderNoDirectoryError.textAndMnemonic=Errore durante la creazione della directory "{0}": file o directory inesistente
FileChooser.deleteFileButton.textAndMnemonic=E&limina file
FileChooser.renameFileButton.textAndMnemonic=&Rinomina file
-FileChooser.cancelButton.textAndMnemonic=&Annulla
-FileChooser.saveButton.textAndMnemonic=&OK
-FileChooser.openButton.textAndMnemonic=&OK
+FileChooser.cancelButton.textAndMnemonic=Annulla
+FileChooser.saveButton.textAndMnemonic=OK
+FileChooser.openButton.textAndMnemonic=OK
FileChooser.saveDialogTitle.textAndMnemonic=Salva
FileChooser.openDialogTitle.textAndMnemonic=Apri
FileChooser.pathLabel.textAndMnemonic=&Selezione:
--- a/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ja.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ja.properties Wed Jun 03 18:11:45 2015 -0700
@@ -34,9 +34,9 @@
FileChooser.newFolderNoDirectoryError.textAndMnemonic=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA"{0}"\u306E\u4F5C\u6210\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F: \u3053\u306E\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306F\u5B58\u5728\u3057\u307E\u305B\u3093
FileChooser.deleteFileButton.textAndMnemonic=\u30D5\u30A1\u30A4\u30EB\u306E\u524A\u9664(&L)
FileChooser.renameFileButton.textAndMnemonic=\u30D5\u30A1\u30A4\u30EB\u306E\u540D\u524D\u5909\u66F4(&R)
-FileChooser.cancelButton.textAndMnemonic=\u53D6\u6D88(&C)
-FileChooser.saveButton.textAndMnemonic=OK(&O)
-FileChooser.openButton.textAndMnemonic=OK(&O)
+FileChooser.cancelButton.textAndMnemonic=\u53D6\u6D88
+FileChooser.saveButton.textAndMnemonic=OK
+FileChooser.openButton.textAndMnemonic=OK
FileChooser.saveDialogTitle.textAndMnemonic=\u4FDD\u5B58
FileChooser.openDialogTitle.textAndMnemonic=\u958B\u304F
FileChooser.pathLabel.textAndMnemonic=\u9078\u629E(&S):
--- a/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ko.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ko.properties Wed Jun 03 18:11:45 2015 -0700
@@ -34,9 +34,9 @@
FileChooser.newFolderNoDirectoryError.textAndMnemonic="{0}" \uB514\uB809\uD1A0\uB9AC\uB97C \uC0DD\uC131\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: \uD574\uB2F9 \uD30C\uC77C \uB610\uB294 \uB514\uB809\uD1A0\uB9AC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.
FileChooser.deleteFileButton.textAndMnemonic=\uD30C\uC77C \uC0AD\uC81C(&L)
FileChooser.renameFileButton.textAndMnemonic=\uD30C\uC77C \uC774\uB984 \uBC14\uAFB8\uAE30(&R)
-FileChooser.cancelButton.textAndMnemonic=\uCDE8\uC18C(&C)
-FileChooser.saveButton.textAndMnemonic=\uD655\uC778(&O)
-FileChooser.openButton.textAndMnemonic=\uD655\uC778(&O)
+FileChooser.cancelButton.textAndMnemonic=\uCDE8\uC18C
+FileChooser.saveButton.textAndMnemonic=\uD655\uC778
+FileChooser.openButton.textAndMnemonic=\uD655\uC778
FileChooser.saveDialogTitle.textAndMnemonic=\uC800\uC7A5
FileChooser.openDialogTitle.textAndMnemonic=\uC5F4\uAE30
FileChooser.pathLabel.textAndMnemonic=\uC120\uD0DD \uC0AC\uD56D(&S):
--- a/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_pt_BR.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_pt_BR.properties Wed Jun 03 18:11:45 2015 -0700
@@ -34,9 +34,9 @@
FileChooser.newFolderNoDirectoryError.textAndMnemonic=Erro ao criar o diret\u00F3rio "{0}": N\u00E3o h\u00E1 arquivo ou diret\u00F3rio
FileChooser.deleteFileButton.textAndMnemonic=De&letar Arquivo
FileChooser.renameFileButton.textAndMnemonic=&Renomear Arquivo
-FileChooser.cancelButton.textAndMnemonic=&Cancelar
-FileChooser.saveButton.textAndMnemonic=&OK
-FileChooser.openButton.textAndMnemonic=&OK
+FileChooser.cancelButton.textAndMnemonic=Cancelar
+FileChooser.saveButton.textAndMnemonic=OK
+FileChooser.openButton.textAndMnemonic=OK
FileChooser.saveDialogTitle.textAndMnemonic=Salvar
FileChooser.openDialogTitle.textAndMnemonic=Abrir
FileChooser.pathLabel.textAndMnemonic=&Sele\u00E7\u00E3o:
--- a/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_sv.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_sv.properties Wed Jun 03 18:11:45 2015 -0700
@@ -34,9 +34,9 @@
FileChooser.newFolderNoDirectoryError.textAndMnemonic=Ett fel intr\u00E4ffade vid f\u00F6rs\u00F6k att skapa katalogen "{0}": Filen eller katalogen finns inte
FileChooser.deleteFileButton.textAndMnemonic=Ta &bort fil
FileChooser.renameFileButton.textAndMnemonic=&\u00C4ndra namn p\u00E5 filen
-FileChooser.cancelButton.textAndMnemonic=&Avbryt
-FileChooser.saveButton.textAndMnemonic=&OK
-FileChooser.openButton.textAndMnemonic=&OK
+FileChooser.cancelButton.textAndMnemonic=Avbryt
+FileChooser.saveButton.textAndMnemonic=OK
+FileChooser.openButton.textAndMnemonic=OK
FileChooser.saveDialogTitle.textAndMnemonic=Spara
FileChooser.openDialogTitle.textAndMnemonic=\u00D6ppna
FileChooser.pathLabel.textAndMnemonic=&Urval:
--- a/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_CN.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_CN.properties Wed Jun 03 18:11:45 2015 -0700
@@ -34,9 +34,9 @@
FileChooser.newFolderNoDirectoryError.textAndMnemonic=\u521B\u5EFA\u76EE\u5F55 "{0}" \u65F6\u51FA\u9519: \u6CA1\u6709\u6B64\u7C7B\u6587\u4EF6\u6216\u76EE\u5F55
FileChooser.deleteFileButton.textAndMnemonic=\u5220\u9664\u6587\u4EF6(&L)
FileChooser.renameFileButton.textAndMnemonic=\u91CD\u547D\u540D\u6587\u4EF6(&R)
-FileChooser.cancelButton.textAndMnemonic=\u53D6\u6D88(&C)
-FileChooser.saveButton.textAndMnemonic=\u786E\u5B9A(&O)
-FileChooser.openButton.textAndMnemonic=\u786E\u5B9A(&O)
+FileChooser.cancelButton.textAndMnemonic=\u53D6\u6D88
+FileChooser.saveButton.textAndMnemonic=\u786E\u5B9A
+FileChooser.openButton.textAndMnemonic=\u786E\u5B9A
FileChooser.saveDialogTitle.textAndMnemonic=\u4FDD\u5B58
FileChooser.openDialogTitle.textAndMnemonic=\u6253\u5F00
FileChooser.pathLabel.textAndMnemonic=\u9009\u5B9A\u5185\u5BB9(&S):
--- a/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_TW.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_TW.properties Wed Jun 03 18:11:45 2015 -0700
@@ -34,9 +34,9 @@
FileChooser.newFolderNoDirectoryError.textAndMnemonic=\u5EFA\u7ACB\u76EE\u9304 "{0}" \u6642\u767C\u751F\u932F\u8AA4: \u6C92\u6709\u6B64\u6A94\u6848\u6216\u76EE\u9304
FileChooser.deleteFileButton.textAndMnemonic=\u522A\u9664\u6A94\u6848(&L)
FileChooser.renameFileButton.textAndMnemonic=\u91CD\u65B0\u547D\u540D\u6A94\u6848(&R)
-FileChooser.cancelButton.textAndMnemonic=\u53D6\u6D88(&C)
-FileChooser.saveButton.textAndMnemonic=\u78BA\u5B9A(&O)
-FileChooser.openButton.textAndMnemonic=\u78BA\u5B9A(&O)
+FileChooser.cancelButton.textAndMnemonic=\u53D6\u6D88
+FileChooser.saveButton.textAndMnemonic=\u78BA\u5B9A
+FileChooser.openButton.textAndMnemonic=\u78BA\u5B9A
FileChooser.saveDialogTitle.textAndMnemonic=\u5132\u5B58
FileChooser.openDialogTitle.textAndMnemonic=\u958B\u555F
FileChooser.pathLabel.textAndMnemonic=\u9078\u53D6(&S):
--- a/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/basic/resources/basic.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/basic/resources/basic.properties Wed Jun 03 18:11:45 2015 -0700
@@ -43,13 +43,13 @@
Specify a different file name.
FileChooser.acceptAllFileFilter.textAndMnemonic=All Files
FileChooser.cancelButton.textAndMnemonic=Cancel
-FileChooser.saveButton.textAndMnemonic=&Save
-FileChooser.openButton.textAndMnemonic=&Open
+FileChooser.saveButton.textAndMnemonic=Save
+FileChooser.openButton.textAndMnemonic=Open
FileChooser.saveDialogTitle.textAndMnemonic=Save
FileChooser.openDialogTitle.textAndMnemonic=Open
FileChooser.updateButton.textAndMnemonic=&Update
FileChooser.helpButton.textAndMnemonic=&Help
-FileChooser.directoryOpenButton.textAndMnemonic=&Open
+FileChooser.directoryOpenButton.textAndMnemonic=Open
# File Size Units
FileChooser.fileSizeKiloBytes={0} KB
--- a/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_de.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_de.properties Wed Jun 03 18:11:45 2015 -0700
@@ -42,13 +42,13 @@
FileChooser.renameErrorFileExists.textAndMnemonic={0} kann nicht umbenannt werden: Es ist bereits eine Datei mit dem angegebenen Namen vorhanden. Geben Sie einen anderen Dateinamen an.
FileChooser.acceptAllFileFilter.textAndMnemonic=Alle Dateien
FileChooser.cancelButton.textAndMnemonic=Abbrechen
-FileChooser.saveButton.textAndMnemonic=&Speichern
-FileChooser.openButton.textAndMnemonic=\u00D6&ffnen
+FileChooser.saveButton.textAndMnemonic=Speichern
+FileChooser.openButton.textAndMnemonic=\u00D6ffnen
FileChooser.saveDialogTitle.textAndMnemonic=Speichern
FileChooser.openDialogTitle.textAndMnemonic=\u00D6ffnen
FileChooser.updateButton.textAndMnemonic=A&ktualisieren
FileChooser.helpButton.textAndMnemonic=&Hilfe
-FileChooser.directoryOpenButton.textAndMnemonic=\u00D6&ffnen
+FileChooser.directoryOpenButton.textAndMnemonic=\u00D6ffnen
# File Size Units
FileChooser.fileSizeKiloBytes={0} KB
--- a/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_es.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_es.properties Wed Jun 03 18:11:45 2015 -0700
@@ -42,13 +42,13 @@
FileChooser.renameErrorFileExists.textAndMnemonic=No se puede cambiar el nombre de {0}: ya existe un archivo con el nombre especificado. Especifique otro nombre de archivo.
FileChooser.acceptAllFileFilter.textAndMnemonic=Todos los Archivos
FileChooser.cancelButton.textAndMnemonic=Cancelar
-FileChooser.saveButton.textAndMnemonic=&Guardar
-FileChooser.openButton.textAndMnemonic=&Abrir
+FileChooser.saveButton.textAndMnemonic=Guardar
+FileChooser.openButton.textAndMnemonic=Abrir
FileChooser.saveDialogTitle.textAndMnemonic=Guardar
FileChooser.openDialogTitle.textAndMnemonic=Abrir
FileChooser.updateButton.textAndMnemonic=Act&ualizar
FileChooser.helpButton.textAndMnemonic=A&yuda
-FileChooser.directoryOpenButton.textAndMnemonic=&Abrir
+FileChooser.directoryOpenButton.textAndMnemonic=Abrir
# File Size Units
FileChooser.fileSizeKiloBytes={0} KB
--- a/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_fr.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_fr.properties Wed Jun 03 18:11:45 2015 -0700
@@ -42,13 +42,13 @@
FileChooser.renameErrorFileExists.textAndMnemonic=Impossible de renommer {0} : il existe d\u00E9j\u00E0 un fichier portant le nom indiqu\u00E9. Indiquez-en un autre.
FileChooser.acceptAllFileFilter.textAndMnemonic=Tous les fichiers
FileChooser.cancelButton.textAndMnemonic=Annuler
-FileChooser.saveButton.textAndMnemonic=Enregi&strer
-FileChooser.openButton.textAndMnemonic=&Ouvrir
+FileChooser.saveButton.textAndMnemonic=Enregistrer
+FileChooser.openButton.textAndMnemonic=Ouvrir
FileChooser.saveDialogTitle.textAndMnemonic=Enregistrer
FileChooser.openDialogTitle.textAndMnemonic=Ouvrir
FileChooser.updateButton.textAndMnemonic=Mettre \u00E0 jo&ur
FileChooser.helpButton.textAndMnemonic=&Aide
-FileChooser.directoryOpenButton.textAndMnemonic=&Ouvrir
+FileChooser.directoryOpenButton.textAndMnemonic=Ouvrir
# File Size Units
FileChooser.fileSizeKiloBytes={0} KB
--- a/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_it.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_it.properties Wed Jun 03 18:11:45 2015 -0700
@@ -42,13 +42,13 @@
FileChooser.renameErrorFileExists.textAndMnemonic=Impossibile rinominare {0}: esiste gi\u00E0 un file con il nome specificato. Specificare un altro nome.
FileChooser.acceptAllFileFilter.textAndMnemonic=Tutti i file
FileChooser.cancelButton.textAndMnemonic=Annulla
-FileChooser.saveButton.textAndMnemonic=Sal&va
-FileChooser.openButton.textAndMnemonic=&Apri
+FileChooser.saveButton.textAndMnemonic=Salva
+FileChooser.openButton.textAndMnemonic=Apri
FileChooser.saveDialogTitle.textAndMnemonic=Salva
FileChooser.openDialogTitle.textAndMnemonic=Apri
FileChooser.updateButton.textAndMnemonic=Ag&giorna
FileChooser.helpButton.textAndMnemonic=&?
-FileChooser.directoryOpenButton.textAndMnemonic=&Apri
+FileChooser.directoryOpenButton.textAndMnemonic=Apri
# File Size Units
FileChooser.fileSizeKiloBytes={0} KB
--- a/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_pt_BR.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_pt_BR.properties Wed Jun 03 18:11:45 2015 -0700
@@ -42,13 +42,13 @@
FileChooser.renameErrorFileExists.textAndMnemonic=N\u00E3o \u00E9 poss\u00EDvel renomear {0}: Um arquivo com o nome especificado j\u00E1 existe. Especifique outro nome de arquivo.
FileChooser.acceptAllFileFilter.textAndMnemonic=Todos os Arquivos
FileChooser.cancelButton.textAndMnemonic=Cancelar
-FileChooser.saveButton.textAndMnemonic=&Salvar
-FileChooser.openButton.textAndMnemonic=A&brir
+FileChooser.saveButton.textAndMnemonic=Salvar
+FileChooser.openButton.textAndMnemonic=Abrir
FileChooser.saveDialogTitle.textAndMnemonic=Salvar
FileChooser.openDialogTitle.textAndMnemonic=Abrir
FileChooser.updateButton.textAndMnemonic=At&ualizar
FileChooser.helpButton.textAndMnemonic=Aj&uda
-FileChooser.directoryOpenButton.textAndMnemonic=A&brir
+FileChooser.directoryOpenButton.textAndMnemonic=Abrir
# File Size Units
FileChooser.fileSizeKiloBytes={0} KB
--- a/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties Wed Jun 03 18:11:45 2015 -0700
@@ -42,13 +42,13 @@
FileChooser.renameErrorFileExists.textAndMnemonic=Kan inte namn\u00E4ndra {0}: En fil med angivet namn finns redan. Ange ett annat filnamn.
FileChooser.acceptAllFileFilter.textAndMnemonic=Alla filer
FileChooser.cancelButton.textAndMnemonic=Avbryt
-FileChooser.saveButton.textAndMnemonic=&Spara
-FileChooser.openButton.textAndMnemonic=&\u00D6ppna
+FileChooser.saveButton.textAndMnemonic=Spara
+FileChooser.openButton.textAndMnemonic=\u00D6ppna
FileChooser.saveDialogTitle.textAndMnemonic=Spara
FileChooser.openDialogTitle.textAndMnemonic=\u00D6ppna
FileChooser.updateButton.textAndMnemonic=Upp&datera
FileChooser.helpButton.textAndMnemonic=&Hj\u00E4lp
-FileChooser.directoryOpenButton.textAndMnemonic=&\u00D6ppna
+FileChooser.directoryOpenButton.textAndMnemonic=\u00D6ppna
# File Size Units
FileChooser.fileSizeKiloBytes={0} KB
--- a/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal.properties Wed Jun 03 18:11:45 2015 -0700
@@ -43,8 +43,6 @@
FileChooser.fileTypeHeader.textAndMnemonic=Type
FileChooser.fileDateHeader.textAndMnemonic=Modified
FileChooser.fileAttrHeader.textAndMnemonic=Attributes
-FileChooser.saveButton.textAndMnemonic=Save
-FileChooser.openButton.textAndMnemonic=Open
############ Used by MetalTitlePane if rendering window decorations############
MetalTitlePane.restore.titleAndMnemonic=&Restore
--- a/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_de.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_de.properties Wed Jun 03 18:11:45 2015 -0700
@@ -43,8 +43,6 @@
FileChooser.fileTypeHeader.textAndMnemonic=Typ
FileChooser.fileDateHeader.textAndMnemonic=Ge\u00E4ndert
FileChooser.fileAttrHeader.textAndMnemonic=Attribute
-FileChooser.saveButton.textAndMnemonic=Speichern
-FileChooser.openButton.textAndMnemonic=\u00D6ffnen
############ Used by MetalTitlePane if rendering window decorations############
MetalTitlePane.restore.titleAndMnemonic=&Wiederherstellen
--- a/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_es.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_es.properties Wed Jun 03 18:11:45 2015 -0700
@@ -43,8 +43,6 @@
FileChooser.fileTypeHeader.textAndMnemonic=Tipo
FileChooser.fileDateHeader.textAndMnemonic=Modificado
FileChooser.fileAttrHeader.textAndMnemonic=Atributos
-FileChooser.saveButton.textAndMnemonic=Guardar
-FileChooser.openButton.textAndMnemonic=Abrir
############ Used by MetalTitlePane if rendering window decorations############
MetalTitlePane.restore.titleAndMnemonic=&Restaurar
--- a/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_fr.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_fr.properties Wed Jun 03 18:11:45 2015 -0700
@@ -43,8 +43,6 @@
FileChooser.fileTypeHeader.textAndMnemonic=Type
FileChooser.fileDateHeader.textAndMnemonic=Modifi\u00E9
FileChooser.fileAttrHeader.textAndMnemonic=Attributs
-FileChooser.saveButton.textAndMnemonic=Enregistrer
-FileChooser.openButton.textAndMnemonic=Ouvrir
############ Used by MetalTitlePane if rendering window decorations############
MetalTitlePane.restore.titleAndMnemonic=&Restaurer
--- a/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_it.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_it.properties Wed Jun 03 18:11:45 2015 -0700
@@ -43,8 +43,6 @@
FileChooser.fileTypeHeader.textAndMnemonic=Tipo
FileChooser.fileDateHeader.textAndMnemonic=Modificato
FileChooser.fileAttrHeader.textAndMnemonic=Attributi
-FileChooser.saveButton.textAndMnemonic=Salva
-FileChooser.openButton.textAndMnemonic=Apri
############ Used by MetalTitlePane if rendering window decorations############
MetalTitlePane.restore.titleAndMnemonic=&Ripristina
--- a/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_ja.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_ja.properties Wed Jun 03 18:11:45 2015 -0700
@@ -43,8 +43,6 @@
FileChooser.fileTypeHeader.textAndMnemonic=\u30BF\u30A4\u30D7
FileChooser.fileDateHeader.textAndMnemonic=\u4FEE\u6B63\u65E5
FileChooser.fileAttrHeader.textAndMnemonic=\u5C5E\u6027
-FileChooser.saveButton.textAndMnemonic=\u4FDD\u5B58
-FileChooser.openButton.textAndMnemonic=\u958B\u304F
############ Used by MetalTitlePane if rendering window decorations############
MetalTitlePane.restore.titleAndMnemonic=\u5FA9\u5143(&R)
--- a/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_ko.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_ko.properties Wed Jun 03 18:11:45 2015 -0700
@@ -43,8 +43,6 @@
FileChooser.fileTypeHeader.textAndMnemonic=\uC720\uD615
FileChooser.fileDateHeader.textAndMnemonic=\uC218\uC815 \uB0A0\uC9DC
FileChooser.fileAttrHeader.textAndMnemonic=\uC18D\uC131
-FileChooser.saveButton.textAndMnemonic=\uC800\uC7A5
-FileChooser.openButton.textAndMnemonic=\uC5F4\uAE30
############ Used by MetalTitlePane if rendering window decorations############
MetalTitlePane.restore.titleAndMnemonic=\uBCF5\uC6D0(&R)
--- a/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_pt_BR.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_pt_BR.properties Wed Jun 03 18:11:45 2015 -0700
@@ -43,8 +43,6 @@
FileChooser.fileTypeHeader.textAndMnemonic=Tipo
FileChooser.fileDateHeader.textAndMnemonic=Modificado
FileChooser.fileAttrHeader.textAndMnemonic=Atributos
-FileChooser.saveButton.textAndMnemonic=Salvar
-FileChooser.openButton.textAndMnemonic=Abrir
############ Used by MetalTitlePane if rendering window decorations############
MetalTitlePane.restore.titleAndMnemonic=&Restaurar
--- a/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_sv.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_sv.properties Wed Jun 03 18:11:45 2015 -0700
@@ -43,8 +43,6 @@
FileChooser.fileTypeHeader.textAndMnemonic=Typ
FileChooser.fileDateHeader.textAndMnemonic=\u00C4ndrad
FileChooser.fileAttrHeader.textAndMnemonic=Attribut
-FileChooser.saveButton.textAndMnemonic=Spara
-FileChooser.openButton.textAndMnemonic=\u00D6ppna
############ Used by MetalTitlePane if rendering window decorations############
MetalTitlePane.restore.titleAndMnemonic=&\u00C5terst\u00E4ll
--- a/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_zh_CN.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_zh_CN.properties Wed Jun 03 18:11:45 2015 -0700
@@ -43,8 +43,6 @@
FileChooser.fileTypeHeader.textAndMnemonic=\u7C7B\u578B
FileChooser.fileDateHeader.textAndMnemonic=\u4FEE\u6539\u65E5\u671F
FileChooser.fileAttrHeader.textAndMnemonic=\u5C5E\u6027
-FileChooser.saveButton.textAndMnemonic=\u4FDD\u5B58
-FileChooser.openButton.textAndMnemonic=\u6253\u5F00
############ Used by MetalTitlePane if rendering window decorations############
MetalTitlePane.restore.titleAndMnemonic=\u8FD8\u539F(&R)
--- a/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_zh_TW.properties Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_zh_TW.properties Wed Jun 03 18:11:45 2015 -0700
@@ -43,8 +43,6 @@
FileChooser.fileTypeHeader.textAndMnemonic=\u985E\u578B
FileChooser.fileDateHeader.textAndMnemonic=\u4FEE\u6539\u65E5\u671F
FileChooser.fileAttrHeader.textAndMnemonic=\u5C6C\u6027
-FileChooser.saveButton.textAndMnemonic=\u5132\u5B58
-FileChooser.openButton.textAndMnemonic=\u958B\u555F
############ Used by MetalTitlePane if rendering window decorations############
MetalTitlePane.restore.titleAndMnemonic=\u56DE\u5FA9(&R)
--- a/jdk/src/java.desktop/share/classes/java/awt/Component.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/Component.java Wed Jun 03 18:11:45 2015 -0700
@@ -1312,6 +1312,25 @@
}
/**
+ * Determines the bounds of a visible part of the component relative to its
+ * parent.
+ *
+ * @return the visible part of bounds
+ */
+ private Rectangle getRecursivelyVisibleBounds() {
+ final Component container = getContainer();
+ final Rectangle bounds = getBounds();
+ if (container == null) {
+ // we are top level window or haven't a container, return our bounds
+ return bounds;
+ }
+ // translate the container's bounds to our coordinate space
+ final Rectangle parentsBounds = container.getRecursivelyVisibleBounds();
+ parentsBounds.setLocation(0, 0);
+ return parentsBounds.intersection(bounds);
+ }
+
+ /**
* Translates absolute coordinates into coordinates in the coordinate
* space of this component.
*/
@@ -1487,7 +1506,7 @@
ComponentPeer peer = this.peer;
if (peer != null) {
peer.setEnabled(true);
- if (visible) {
+ if (visible && !getRecursivelyVisibleBounds().isEmpty()) {
updateCursorImmediately();
}
}
@@ -1541,7 +1560,7 @@
ComponentPeer peer = this.peer;
if (peer != null) {
peer.setEnabled(false);
- if (visible) {
+ if (visible && !getRecursivelyVisibleBounds().isEmpty()) {
updateCursorImmediately();
}
}
--- a/jdk/src/java.desktop/share/classes/java/awt/Container.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/Container.java Wed Jun 03 18:11:45 2015 -0700
@@ -44,6 +44,7 @@
import java.lang.ref.WeakReference;
import java.security.AccessController;
+import java.util.ArrayList;
import java.util.EventListener;
import java.util.HashSet;
import java.util.Set;
@@ -100,7 +101,7 @@
* @see #add
* @see #getComponents
*/
- private java.util.List<Component> component = new java.util.ArrayList<Component>();
+ private java.util.List<Component> component = new ArrayList<>();
/**
* Layout manager for this container.
@@ -2568,28 +2569,24 @@
if (!contains(x, y)) {
return null;
}
+ Component lightweight = null;
synchronized (getTreeLock()) {
- // Two passes: see comment in sun.awt.SunGraphicsCallback
- for (int i = 0; i < component.size(); i++) {
- Component comp = component.get(i);
- if (comp != null &&
- !(comp.peer instanceof LightweightPeer)) {
- if (comp.contains(x - comp.x, y - comp.y)) {
+ // Optimized version of two passes:
+ // see comment in sun.awt.SunGraphicsCallback
+ for (final Component comp : component) {
+ if (comp.contains(x - comp.x, y - comp.y)) {
+ if (!comp.isLightweight()) {
+ // return heavyweight component as soon as possible
return comp;
}
- }
- }
- for (int i = 0; i < component.size(); i++) {
- Component comp = component.get(i);
- if (comp != null &&
- comp.peer instanceof LightweightPeer) {
- if (comp.contains(x - comp.x, y - comp.y)) {
- return comp;
+ if (lightweight == null) {
+ // save and return later the first lightweight component
+ lightweight = comp;
}
}
}
}
- return this;
+ return lightweight != null ? lightweight : this;
}
/**
@@ -2693,52 +2690,54 @@
return null;
}
- final Component findComponentAtImpl(int x, int y, boolean ignoreEnabled){
- checkTreeLock();
+ final Component findComponentAtImpl(int x, int y, boolean ignoreEnabled) {
+ // checkTreeLock(); commented for a performance reason
if (!(contains(x, y) && visible && (ignoreEnabled || enabled))) {
return null;
}
-
- // Two passes: see comment in sun.awt.SunGraphicsCallback
- for (int i = 0; i < component.size(); i++) {
- Component comp = component.get(i);
- if (comp != null &&
- !(comp.peer instanceof LightweightPeer)) {
- if (comp instanceof Container) {
- comp = ((Container)comp).findComponentAtImpl(x - comp.x,
- y - comp.y,
- ignoreEnabled);
- } else {
- comp = comp.getComponentAt(x - comp.x, y - comp.y);
+ Component lightweight = null;
+ // Optimized version of two passes:
+ // see comment in sun.awt.SunGraphicsCallback
+ for (final Component comp : component) {
+ final int x1 = x - comp.x;
+ final int y1 = y - comp.y;
+ if (!comp.contains(x1, y1)) {
+ continue; // fast path
+ }
+ if (!comp.isLightweight()) {
+ final Component child = getChildAt(comp, x1, y1, ignoreEnabled);
+ if (child != null) {
+ // return heavyweight component as soon as possible
+ return child;
}
- if (comp != null && comp.visible &&
- (ignoreEnabled || comp.enabled))
- {
- return comp;
+ } else {
+ if (lightweight == null) {
+ // save and return later the first lightweight component
+ lightweight = getChildAt(comp, x1, y1, ignoreEnabled);
}
}
}
- for (int i = 0; i < component.size(); i++) {
- Component comp = component.get(i);
- if (comp != null &&
- comp.peer instanceof LightweightPeer) {
- if (comp instanceof Container) {
- comp = ((Container)comp).findComponentAtImpl(x - comp.x,
- y - comp.y,
- ignoreEnabled);
- } else {
- comp = comp.getComponentAt(x - comp.x, y - comp.y);
- }
- if (comp != null && comp.visible &&
- (ignoreEnabled || comp.enabled))
- {
- return comp;
- }
- }
+ return lightweight != null ? lightweight : this;
+ }
+
+ /**
+ * Helper method for findComponentAtImpl. Finds a child component using
+ * findComponentAtImpl for Container and getComponentAt for Component.
+ */
+ private static Component getChildAt(Component comp, int x, int y,
+ boolean ignoreEnabled) {
+ if (comp instanceof Container) {
+ comp = ((Container) comp).findComponentAtImpl(x, y,
+ ignoreEnabled);
+ } else {
+ comp = comp.getComponentAt(x, y);
}
-
- return this;
+ if (comp != null && comp.visible &&
+ (ignoreEnabled || comp.enabled)) {
+ return comp;
+ }
+ return null;
}
/**
@@ -4420,6 +4419,18 @@
private static final PlatformLogger eventLog = PlatformLogger.getLogger("java.awt.event.LightweightDispatcher");
+ private static final int BUTTONS_DOWN_MASK;
+
+ static {
+ int[] buttonsDownMask = AWTAccessor.getInputEventAccessor().
+ getButtonDownMasks();
+ int mask = 0;
+ for (int buttonDownMask : buttonsDownMask) {
+ mask |= buttonDownMask;
+ }
+ BUTTONS_DOWN_MASK = mask;
+ }
+
LightweightDispatcher(Container nativeContainer) {
this.nativeContainer = nativeContainer;
mouseEventTarget = new WeakReference<>(null);
@@ -4488,25 +4499,12 @@
private boolean isMouseGrab(MouseEvent e) {
int modifiers = e.getModifiersEx();
- if(e.getID() == MouseEvent.MOUSE_PRESSED
- || e.getID() == MouseEvent.MOUSE_RELEASED)
- {
- switch (e.getButton()) {
- case MouseEvent.BUTTON1:
- modifiers ^= InputEvent.BUTTON1_DOWN_MASK;
- break;
- case MouseEvent.BUTTON2:
- modifiers ^= InputEvent.BUTTON2_DOWN_MASK;
- break;
- case MouseEvent.BUTTON3:
- modifiers ^= InputEvent.BUTTON3_DOWN_MASK;
- break;
- }
+ if (e.getID() == MouseEvent.MOUSE_PRESSED
+ || e.getID() == MouseEvent.MOUSE_RELEASED) {
+ modifiers ^= InputEvent.getMaskForButton(e.getButton());
}
/* modifiers now as just before event */
- return ((modifiers & (InputEvent.BUTTON1_DOWN_MASK
- | InputEvent.BUTTON2_DOWN_MASK
- | InputEvent.BUTTON3_DOWN_MASK)) != 0);
+ return ((modifiers & BUTTONS_DOWN_MASK) != 0);
}
/**
--- a/jdk/src/java.desktop/share/classes/java/awt/Menu.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/Menu.java Wed Jun 03 18:11:45 2015 -0700
@@ -413,9 +413,9 @@
items.removeElementAt(index);
MenuPeer peer = (MenuPeer)this.peer;
if (peer != null) {
+ peer.delItem(index);
mi.removeNotify();
mi.parent = null;
- peer.delItem(index);
}
}
}
--- a/jdk/src/java.desktop/share/classes/java/awt/MenuBar.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/MenuBar.java Wed Jun 03 18:11:45 2015 -0700
@@ -222,7 +222,6 @@
if (m.parent != null) {
m.parent.remove(m);
}
- menus.addElement(m);
m.parent = this;
MenuBarPeer peer = (MenuBarPeer)this.peer;
@@ -232,6 +231,7 @@
}
peer.addMenu(m);
}
+ menus.addElement(m);
return m;
}
}
@@ -248,9 +248,9 @@
menus.removeElementAt(index);
MenuBarPeer peer = (MenuBarPeer)this.peer;
if (peer != null) {
+ peer.delMenu(index);
m.removeNotify();
m.parent = null;
- peer.delMenu(index);
}
if (helpMenu == m) {
helpMenu = null;
--- a/jdk/src/java.desktop/share/classes/java/awt/MenuComponent.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/MenuComponent.java Wed Jun 03 18:11:45 2015 -0700
@@ -77,7 +77,7 @@
* @see #setFont(Font)
* @see #getFont()
*/
- Font font;
+ volatile Font font;
/**
* The menu component's name, which defaults to <code>null</code>.
@@ -302,11 +302,13 @@
* @see java.awt.font.TextAttribute
*/
public void setFont(Font f) {
- font = f;
- //Fixed 6312943: NullPointerException in method MenuComponent.setFont(Font)
- MenuComponentPeer peer = this.peer;
- if (peer != null) {
- peer.setFont(f);
+ synchronized (getTreeLock()) {
+ font = f;
+ //Fixed 6312943: NullPointerException in method MenuComponent.setFont(Font)
+ MenuComponentPeer peer = this.peer;
+ if (peer != null) {
+ peer.setFont(f);
+ }
}
}
--- a/jdk/src/java.desktop/share/classes/java/awt/WaitDispatchSupport.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/WaitDispatchSupport.java Wed Jun 03 18:11:45 2015 -0700
@@ -65,6 +65,7 @@
private AtomicBoolean keepBlockingEDT = new AtomicBoolean(false);
private AtomicBoolean keepBlockingCT = new AtomicBoolean(false);
+ private AtomicBoolean afterExit = new AtomicBoolean(false);
private static synchronized void initializeTimer() {
if (timer == null) {
@@ -114,7 +115,7 @@
}
boolean extEvaluate =
(extCondition != null) ? extCondition.evaluate() : true;
- if (!keepBlockingEDT.get() || !extEvaluate) {
+ if (!keepBlockingEDT.get() || !extEvaluate || afterExit.get()) {
if (timerTask != null) {
timerTask.cancel();
timerTask = null;
@@ -174,110 +175,116 @@
log.fine("The secondary loop is already running, aborting");
return false;
}
+ try {
+ if (afterExit.get()) {
+ log.fine("Exit was called already, aborting");
+ return false;
+ }
- final Runnable run = new Runnable() {
- public void run() {
- log.fine("Starting a new event pump");
- if (filter == null) {
- dispatchThread.pumpEvents(condition);
- } else {
- dispatchThread.pumpEventsForFilter(condition, filter);
+ final Runnable run = new Runnable() {
+ public void run() {
+ log.fine("Starting a new event pump");
+ if (filter == null) {
+ dispatchThread.pumpEvents(condition);
+ } else {
+ dispatchThread.pumpEventsForFilter(condition, filter);
+ }
}
- }
- };
+ };
+
+ // We have two mechanisms for blocking: if we're on the
+ // dispatch thread, start a new event pump; if we're
+ // on any other thread, call wait() on the treelock
- // We have two mechanisms for blocking: if we're on the
- // dispatch thread, start a new event pump; if we're
- // on any other thread, call wait() on the treelock
-
- Thread currentThread = Thread.currentThread();
- if (currentThread == dispatchThread) {
- if (log.isLoggable(PlatformLogger.Level.FINEST)) {
- log.finest("On dispatch thread: " + dispatchThread);
- }
- if (interval != 0) {
+ Thread currentThread = Thread.currentThread();
+ if (currentThread == dispatchThread) {
if (log.isLoggable(PlatformLogger.Level.FINEST)) {
- log.finest("scheduling the timer for " + interval + " ms");
+ log.finest("On dispatch thread: " + dispatchThread);
+ }
+ if (interval != 0) {
+ if (log.isLoggable(PlatformLogger.Level.FINEST)) {
+ log.finest("scheduling the timer for " + interval + " ms");
+ }
+ timer.schedule(timerTask = new TimerTask() {
+ @Override
+ public void run() {
+ if (keepBlockingEDT.compareAndSet(true, false)) {
+ wakeupEDT();
+ }
+ }
+ }, interval);
+ }
+ // Dispose SequencedEvent we are dispatching on the current
+ // AppContext, to prevent us from hang - see 4531693 for details
+ SequencedEvent currentSE = KeyboardFocusManager.
+ getCurrentKeyboardFocusManager().getCurrentSequencedEvent();
+ if (currentSE != null) {
+ if (log.isLoggable(PlatformLogger.Level.FINE)) {
+ log.fine("Dispose current SequencedEvent: " + currentSE);
+ }
+ currentSE.dispose();
}
- timer.schedule(timerTask = new TimerTask() {
- @Override
- public void run() {
- if (keepBlockingEDT.compareAndSet(true, false)) {
- wakeupEDT();
+ // In case the exit() method is called before starting
+ // new event pump it will post the waking event to EDT.
+ // The event will be handled after the new event pump
+ // starts. Thus, the enter() method will not hang.
+ //
+ // Event pump should be privileged. See 6300270.
+ AccessController.doPrivileged(new PrivilegedAction<Void>() {
+ public Void run() {
+ run.run();
+ return null;
+ }
+ });
+ } else {
+ if (log.isLoggable(PlatformLogger.Level.FINEST)) {
+ log.finest("On non-dispatch thread: " + currentThread);
+ }
+ keepBlockingCT.set(true);
+ synchronized (getTreeLock()) {
+ if (afterExit.get()) return false;
+ if (filter != null) {
+ dispatchThread.addEventFilter(filter);
+ }
+ try {
+ EventQueue eq = dispatchThread.getEventQueue();
+ eq.postEvent(new PeerEvent(this, run, PeerEvent.PRIORITY_EVENT));
+ if (interval > 0) {
+ long currTime = System.currentTimeMillis();
+ while (keepBlockingCT.get() &&
+ ((extCondition != null) ? extCondition.evaluate() : true) &&
+ (currTime + interval > System.currentTimeMillis()))
+ {
+ getTreeLock().wait(interval);
+ }
+ } else {
+ while (keepBlockingCT.get() &&
+ ((extCondition != null) ? extCondition.evaluate() : true))
+ {
+ getTreeLock().wait();
+ }
+ }
+ if (log.isLoggable(PlatformLogger.Level.FINE)) {
+ log.fine("waitDone " + keepBlockingEDT.get() + " " + keepBlockingCT.get());
+ }
+ } catch (InterruptedException e) {
+ if (log.isLoggable(PlatformLogger.Level.FINE)) {
+ log.fine("Exception caught while waiting: " + e);
+ }
+ } finally {
+ if (filter != null) {
+ dispatchThread.removeEventFilter(filter);
}
}
- }, interval);
- }
- // Dispose SequencedEvent we are dispatching on the current
- // AppContext, to prevent us from hang - see 4531693 for details
- SequencedEvent currentSE = KeyboardFocusManager.
- getCurrentKeyboardFocusManager().getCurrentSequencedEvent();
- if (currentSE != null) {
- if (log.isLoggable(PlatformLogger.Level.FINE)) {
- log.fine("Dispose current SequencedEvent: " + currentSE);
}
- currentSE.dispose();
- }
- // In case the exit() method is called before starting
- // new event pump it will post the waking event to EDT.
- // The event will be handled after the new event pump
- // starts. Thus, the enter() method will not hang.
- //
- // Event pump should be privileged. See 6300270.
- AccessController.doPrivileged(new PrivilegedAction<Void>() {
- public Void run() {
- run.run();
- return null;
- }
- });
- } else {
- if (log.isLoggable(PlatformLogger.Level.FINEST)) {
- log.finest("On non-dispatch thread: " + currentThread);
}
- synchronized (getTreeLock()) {
- if (filter != null) {
- dispatchThread.addEventFilter(filter);
- }
- try {
- EventQueue eq = dispatchThread.getEventQueue();
- eq.postEvent(new PeerEvent(this, run, PeerEvent.PRIORITY_EVENT));
- keepBlockingCT.set(true);
- if (interval > 0) {
- long currTime = System.currentTimeMillis();
- while (keepBlockingCT.get() &&
- ((extCondition != null) ? extCondition.evaluate() : true) &&
- (currTime + interval > System.currentTimeMillis()))
- {
- getTreeLock().wait(interval);
- }
- } else {
- while (keepBlockingCT.get() &&
- ((extCondition != null) ? extCondition.evaluate() : true))
- {
- getTreeLock().wait();
- }
- }
- if (log.isLoggable(PlatformLogger.Level.FINE)) {
- log.fine("waitDone " + keepBlockingEDT.get() + " " + keepBlockingCT.get());
- }
- } catch (InterruptedException e) {
- if (log.isLoggable(PlatformLogger.Level.FINE)) {
- log.fine("Exception caught while waiting: " + e);
- }
- } finally {
- if (filter != null) {
- dispatchThread.removeEventFilter(filter);
- }
- }
- // If the waiting process has been stopped because of the
- // time interval passed or an exception occurred, the state
- // should be changed
- keepBlockingEDT.set(false);
- keepBlockingCT.set(false);
- }
+ return true;
}
-
- return true;
+ finally {
+ keepBlockingEDT.set(false);
+ keepBlockingCT.set(false);
+ afterExit.set(false);
+ }
}
/**
@@ -288,7 +295,8 @@
log.fine("exit(): blockingEDT=" + keepBlockingEDT.get() +
", blockingCT=" + keepBlockingCT.get());
}
- if (keepBlockingEDT.compareAndSet(true, false)) {
+ afterExit.set(true);
+ if (keepBlockingEDT.getAndSet(false)) {
wakeupEDT();
return true;
}
--- a/jdk/src/java.desktop/share/classes/java/awt/font/OpenType.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/font/OpenType.java Wed Jun 03 18:11:45 2015 -0700
@@ -331,7 +331,7 @@
* Optical bounds. Table tag "opbd" in the Open
* Type Specification.
*/
- public final static int TAG_OPBD = 0x6d6f7274;
+ public final static int TAG_OPBD = 0x6F706264;
/**
* Glyph properties. Table tag "prop" in the Open
--- a/jdk/src/java.desktop/share/classes/javax/swing/GroupLayout.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/GroupLayout.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -218,6 +218,9 @@
private static final int UNSET = Integer.MIN_VALUE;
+ // Maximum spring size constrain to avoid integer overflow
+ private static final int INFINITE = Integer.MAX_VALUE >> 1;
+
/**
* Indicates the size from the component or gap should be used for a
* particular range value.
@@ -1389,7 +1392,7 @@
}
int constrain(int value) {
- return Math.min(value, Short.MAX_VALUE);
+ return Math.min(value, INFINITE);
}
int getBaseline() {
--- a/jdk/src/java.desktop/share/classes/javax/swing/JApplet.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/JApplet.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,14 +24,18 @@
*/
package javax.swing;
-import java.awt.*;
-import java.awt.event.*;
import java.applet.Applet;
-import java.beans.PropertyChangeListener;
-import java.util.Locale;
-import java.util.Vector;
-import java.io.Serializable;
-import javax.accessibility.*;
+import java.awt.AWTEvent;
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Graphics;
+import java.awt.HeadlessException;
+import java.awt.LayoutManager;
+
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleContext;
/**
* An extended version of <code>java.applet.Applet</code> that adds support for
@@ -243,9 +247,8 @@
* hidden: true
* description: The menubar for accessing pulldown menus from this applet.
*/
- @SuppressWarnings("deprecation")
- public void setJMenuBar(JMenuBar menuBar) {
- getRootPane().setMenuBar(menuBar);
+ public void setJMenuBar(final JMenuBar menuBar) {
+ getRootPane().setJMenuBar(menuBar);
}
/**
@@ -254,9 +257,8 @@
* @return the menubar set on this applet
* @see #setJMenuBar
*/
- @SuppressWarnings("deprecation")
public JMenuBar getJMenuBar() {
- return getRootPane().getMenuBar();
+ return getRootPane().getJMenuBar();
}
--- a/jdk/src/java.desktop/share/classes/javax/swing/JDialog.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/JDialog.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -849,9 +849,8 @@
* hidden: true
* description: The menubar for accessing pulldown menus from this dialog.
*/
- @SuppressWarnings("deprecation")
- public void setJMenuBar(JMenuBar menu) {
- getRootPane().setMenuBar(menu);
+ public void setJMenuBar(final JMenuBar menu) {
+ getRootPane().setJMenuBar(menu);
}
/**
@@ -860,12 +859,10 @@
* @return the menubar set on this dialog
* @see #setJMenuBar
*/
- @SuppressWarnings("deprecation")
public JMenuBar getJMenuBar() {
- return getRootPane().getMenuBar();
+ return getRootPane().getJMenuBar();
}
-
/**
* Returns whether calls to {@code add} and
* {@code setLayout} are forwarded to the {@code contentPane}.
--- a/jdk/src/java.desktop/share/classes/javax/swing/JFrame.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/JFrame.java Wed Jun 03 18:11:45 2015 -0700
@@ -486,9 +486,8 @@
* hidden: true
* description: The menubar for accessing pulldown menus from this frame.
*/
- @SuppressWarnings("deprecation")
- public void setJMenuBar(JMenuBar menubar) {
- getRootPane().setMenuBar(menubar);
+ public void setJMenuBar(final JMenuBar menubar) {
+ getRootPane().setJMenuBar(menubar);
}
/**
@@ -497,9 +496,8 @@
*
* @see #setJMenuBar
*/
- @SuppressWarnings("deprecation")
public JMenuBar getJMenuBar() {
- return getRootPane().getMenuBar();
+ return getRootPane().getJMenuBar();
}
/**
--- a/jdk/src/java.desktop/share/classes/javax/swing/JSpinner.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/JSpinner.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -42,8 +42,6 @@
import javax.accessibility.*;
import sun.util.locale.provider.LocaleProviderAdapter;
import sun.util.locale.provider.LocaleResources;
-import sun.util.locale.provider.LocaleServiceProviderPool;
-
/**
* A single line input field that lets the user select a
@@ -77,12 +75,12 @@
* try {
* spinner.commitEdit();
* }
- * catch (ParseException pe) {{
+ * catch (ParseException pe) {
* // Edited value is invalid, spinner.getValue() will return
* // the last valid value, you could revert the spinner to show that:
- * JComponent editor = spinner.getEditor()
+ * JComponent editor = spinner.getEditor();
* if (editor instanceof DefaultEditor) {
- * ((DefaultEditor)editor).getTextField().setValue(spinner.getValue();
+ * ((DefaultEditor)editor).getTextField().setValue(spinner.getValue());
* }
* // reset the value to some known value:
* spinner.setValue(fallbackValue);
@@ -972,7 +970,7 @@
* and editing the value of a <code>SpinnerDateModel</code>
* with a <code>JFormattedTextField</code>. <code>This</code>
* <code>DateEditor</code> becomes both a <code>ChangeListener</code>
- * on the spinners model and a <code>PropertyChangeListener</code>
+ * on the spinner and a <code>PropertyChangeListener</code>
* on the new <code>JFormattedTextField</code>.
*
* @param spinner the spinner whose model <code>this</code> editor will monitor
--- a/jdk/src/java.desktop/share/classes/javax/swing/RepaintManager.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/RepaintManager.java Wed Jun 03 18:11:45 2015 -0700
@@ -182,9 +182,16 @@
*/
private final ProcessingRunnable processingRunnable;
- private final static JavaSecurityAccess javaSecurityAccess =
- SharedSecrets.getJavaSecurityAccess();
+ private static final JavaSecurityAccess javaSecurityAccess =
+ SharedSecrets.getJavaSecurityAccess();
+ /**
+ * Listener installed to detect display changes. When display changes,
+ * schedules a callback to notify all RepaintManagers of the display
+ * changes.
+ */
+ private static final DisplayChangedListener displayChangedHandler =
+ new DisplayChangedHandler();
static {
SwingAccessor.setRepaintManagerAccessor(new SwingAccessor.RepaintManagerAccessor() {
@@ -226,8 +233,8 @@
GraphicsEnvironment ge = GraphicsEnvironment.
getLocalGraphicsEnvironment();
if (ge instanceof SunGraphicsEnvironment) {
- ((SunGraphicsEnvironment)ge).addDisplayChangedListener(
- new DisplayChangedHandler());
+ ((SunGraphicsEnvironment) ge).addDisplayChangedListener(
+ displayChangedHandler);
}
Toolkit tk = Toolkit.getDefaultToolkit();
if ((tk instanceof SunToolkit)
@@ -1679,6 +1686,12 @@
*/
private static final class DisplayChangedHandler implements
DisplayChangedListener {
+ // Empty non private constructor was added because access to this
+ // class shouldn't be generated by the compiler using synthetic
+ // accessor method
+ DisplayChangedHandler() {
+ }
+
public void displayChanged() {
scheduleDisplayChanges();
}
@@ -1686,11 +1699,10 @@
public void paletteChanged() {
}
- private void scheduleDisplayChanges() {
+ private static void scheduleDisplayChanges() {
// To avoid threading problems, we notify each RepaintManager
// on the thread it was created on.
- for (Object c : AppContext.getAppContexts()) {
- AppContext context = (AppContext) c;
+ for (AppContext context : AppContext.getAppContexts()) {
synchronized(context) {
if (!context.isDisposed()) {
EventQueue eventQueue = (EventQueue)context.get(
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java Wed Jun 03 18:11:45 2015 -0700
@@ -150,6 +150,8 @@
*/
protected KeyListener popupKeyListener;
+ private MouseWheelListener mouseWheelListener;
+
// This is used for knowing when to cache the minimum preferred size.
// If the data in the list changes, the cached value get marked for recalc.
// Added to the current JComboBox model
@@ -413,6 +415,10 @@
comboBox.getModel().addListDataListener( listDataListener );
}
}
+
+ if ((mouseWheelListener = createMouseWheelListener()) != null) {
+ comboBox.addMouseWheelListener(mouseWheelListener);
+ }
}
/**
@@ -459,6 +465,9 @@
comboBox.getModel().removeListDataListener( listDataListener );
}
}
+ if (mouseWheelListener != null) {
+ comboBox.removeMouseWheelListener(mouseWheelListener);
+ }
}
/**
@@ -572,6 +581,10 @@
return handler;
}
+ private MouseWheelListener createMouseWheelListener() {
+ return getHandler();
+ }
+
//
// end UI Initialization
//======================
@@ -1723,7 +1736,8 @@
//
private class Handler implements ActionListener, FocusListener,
KeyListener, LayoutManager,
- ListDataListener, PropertyChangeListener {
+ ListDataListener, PropertyChangeListener,
+ MouseWheelListener {
//
// PropertyChangeListener
//
@@ -1997,21 +2011,25 @@
public void actionPerformed(ActionEvent evt) {
Object item = comboBox.getEditor().getItem();
if (item != null) {
- if(!comboBox.isPopupVisible() && !item.equals(comboBox.getSelectedItem())) {
- comboBox.setSelectedItem(comboBox.getEditor().getItem());
- }
- ActionMap am = comboBox.getActionMap();
- if (am != null) {
- Action action = am.get("enterPressed");
- if (action != null) {
- action.actionPerformed(new ActionEvent(comboBox, evt.getID(),
- evt.getActionCommand(),
- evt.getModifiers()));
+ if (!comboBox.isPopupVisible() && !item.equals(comboBox.getSelectedItem())) {
+ comboBox.setSelectedItem(comboBox.getEditor().getItem());
+ }
+ ActionMap am = comboBox.getActionMap();
+ if (am != null) {
+ Action action = am.get("enterPressed");
+ if (action != null) {
+ action.actionPerformed(new ActionEvent(comboBox, evt.getID(),
+ evt.getActionCommand(),
+ evt.getModifiers()));
+ }
}
}
- }
+ }
+
+ public void mouseWheelMoved(MouseWheelEvent e) {
+ e.consume();
+ }
}
- }
class DefaultKeySelectionManager implements JComboBox.KeySelectionManager, UIResource {
private String prefix = "";
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicComboPopup.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicComboPopup.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -184,6 +184,8 @@
*/
protected ItemListener itemListener;
+ private MouseWheelListener scrollerMouseWheelListener;
+
/**
* This protected field is implementation specific. Do not access directly
* or override.
@@ -311,6 +313,7 @@
uninstallComboBoxModelListeners(comboBox.getModel());
uninstallKeyboardActions();
uninstallListListeners();
+ uninstallScrollerListeners();
// We do this, otherwise the listener the ui installs on
// the model (the combobox model in this case) will keep a
// reference to the list, causing the list (and us) to never get gced.
@@ -608,6 +611,7 @@
scroller.setFocusable( false );
scroller.getVerticalScrollBar().setFocusable( false );
scroller.setBorder( null );
+ installScrollerListeners();
}
/**
@@ -624,6 +628,20 @@
setFocusable( false );
}
+ private void installScrollerListeners() {
+ scrollerMouseWheelListener = getHandler();
+ if (scrollerMouseWheelListener != null) {
+ scroller.addMouseWheelListener(scrollerMouseWheelListener);
+ }
+ }
+
+ private void uninstallScrollerListeners() {
+ if (scrollerMouseWheelListener != null) {
+ scroller.removeMouseWheelListener(scrollerMouseWheelListener);
+ scrollerMouseWheelListener = null;
+ }
+ }
+
/**
* This method adds the necessary listeners to the JComboBox.
*/
@@ -835,8 +853,8 @@
private class Handler implements ItemListener, MouseListener,
- MouseMotionListener, PropertyChangeListener,
- Serializable {
+ MouseMotionListener, MouseWheelListener,
+ PropertyChangeListener, Serializable {
//
// MouseListener
// NOTE: this is added to both the JList and JComboBox
@@ -1024,6 +1042,13 @@
setListSelection(comboBox.getSelectedIndex());
}
}
+
+ //
+ // MouseWheelListener
+ //
+ public void mouseWheelMoved(MouseWheelEvent e) {
+ e.consume();
+ }
}
//
@@ -1287,11 +1312,24 @@
else {
screenBounds = new Rectangle(p, toolkit.getScreenSize());
}
-
- Rectangle rect = new Rectangle(px,py,pw,ph);
- if (py+ph > screenBounds.y+screenBounds.height
- && ph < screenBounds.height) {
- rect.y = -rect.height;
+ int borderHeight = 0;
+ Border popupBorder = getBorder();
+ if (popupBorder != null) {
+ Insets borderInsets = popupBorder.getBorderInsets(this);
+ borderHeight = borderInsets.top + borderInsets.bottom;
+ screenBounds.width -= (borderInsets.left + borderInsets.right);
+ screenBounds.height -= borderHeight;
+ }
+ Rectangle rect = new Rectangle(px, py, pw, ph);
+ if (py + ph > screenBounds.y + screenBounds.height) {
+ if (ph <= -screenBounds.y - borderHeight) {
+ // popup goes above
+ rect.y = -ph - borderHeight;
+ } else {
+ // a full screen height popup
+ rect.y = screenBounds.y + Math.max(0, (screenBounds.height - ph) / 2 );
+ rect.height = Math.min(screenBounds.height, ph);
+ }
}
return rect;
}
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicLabelUI.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicLabelUI.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -504,7 +504,7 @@
doPress(label);
}
else if (key == RELEASE) {
- doRelease(label);
+ doRelease(label, e.getActionCommand() != null);
}
}
@@ -517,33 +517,77 @@
SwingUtilities.replaceUIInputMap(label, JComponent.WHEN_FOCUSED, inputMap);
}
int dka = label.getDisplayedMnemonic();
- inputMap.put(KeyStroke.getKeyStroke(dka, BasicLookAndFeel.getFocusAcceleratorKeyMask(), true), RELEASE);
+ putOnRelease(inputMap, dka, BasicLookAndFeel
+ .getFocusAcceleratorKeyMask());
// Need this when the sticky keys are enabled
- inputMap.put(KeyStroke.getKeyStroke(dka, 0, true), RELEASE);
+ putOnRelease(inputMap, dka, 0);
// Need this if ALT is released before the accelerator
- inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ALT, 0, true), RELEASE);
+ putOnRelease(inputMap, KeyEvent.VK_ALT, 0);
label.requestFocus();
}
}
- private void doRelease(JLabel label) {
+ private void doRelease(JLabel label, boolean isCommand) {
Component labelFor = label.getLabelFor();
if (labelFor != null && labelFor.isEnabled()) {
- InputMap inputMap = SwingUtilities.getUIInputMap(label, JComponent.WHEN_FOCUSED);
- if (inputMap != null) {
- // inputMap should never be null.
+ if (label.hasFocus()) {
+ InputMap inputMap = SwingUtilities.getUIInputMap(label,
+ JComponent.WHEN_FOCUSED);
+ if (inputMap != null) {
+ // inputMap should never be null.
+ int dka = label.getDisplayedMnemonic();
+ removeOnRelease(inputMap, dka, BasicLookAndFeel
+ .getFocusAcceleratorKeyMask());
+ removeOnRelease(inputMap, dka, 0);
+ removeOnRelease(inputMap, KeyEvent.VK_ALT, 0);
+ }
+ inputMap = SwingUtilities.getUIInputMap(label,
+ JComponent.WHEN_IN_FOCUSED_WINDOW);
+ if (inputMap == null) {
+ inputMap = new InputMapUIResource();
+ SwingUtilities.replaceUIInputMap(label,
+ JComponent.WHEN_IN_FOCUSED_WINDOW, inputMap);
+ }
int dka = label.getDisplayedMnemonic();
- inputMap.remove(KeyStroke.getKeyStroke(dka, BasicLookAndFeel.getFocusAcceleratorKeyMask(), true));
- inputMap.remove(KeyStroke.getKeyStroke(dka, 0, true));
- inputMap.remove(KeyStroke.getKeyStroke(KeyEvent.VK_ALT, 0, true));
- }
- if (labelFor instanceof Container &&
- ((Container) labelFor).isFocusCycleRoot()) {
- labelFor.requestFocus();
+ if (isCommand) {
+ putOnRelease(inputMap, KeyEvent.VK_ALT, 0);
+ } else {
+ putOnRelease(inputMap, dka, BasicLookAndFeel
+ .getFocusAcceleratorKeyMask());
+ // Need this when the sticky keys are enabled
+ putOnRelease(inputMap, dka, 0);
+ }
+ if (labelFor instanceof Container &&
+ ((Container) labelFor).isFocusCycleRoot()) {
+ labelFor.requestFocus();
+ } else {
+ SwingUtilities2.compositeRequestFocus(labelFor);
+ }
} else {
- SwingUtilities2.compositeRequestFocus(labelFor);
+ InputMap inputMap = SwingUtilities.getUIInputMap(label,
+ JComponent.WHEN_IN_FOCUSED_WINDOW);
+ int dka = label.getDisplayedMnemonic();
+ if (inputMap != null) {
+ if (isCommand) {
+ removeOnRelease(inputMap, dka, BasicLookAndFeel
+ .getFocusAcceleratorKeyMask());
+ removeOnRelease(inputMap, dka, 0);
+ } else {
+ removeOnRelease(inputMap, KeyEvent.VK_ALT, 0);
+ }
+ }
}
}
}
+
+ private void putOnRelease(InputMap inputMap, int keyCode, int modifiers) {
+ inputMap.put(KeyStroke.getKeyStroke(keyCode, modifiers, true),
+ RELEASE);
+ }
+
+ private void removeOnRelease(InputMap inputMap, int keyCode, int modifiers) {
+ inputMap.remove(KeyStroke.getKeyStroke(keyCode, modifiers, true));
+ }
+
}
}
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicPopupMenuUI.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicPopupMenuUI.java Wed Jun 03 18:11:45 2015 -0700
@@ -914,7 +914,9 @@
processMouseEvent(me);
break;
case MouseEvent.MOUSE_WHEEL:
- if (isInPopup(src)) {
+ if (isInPopup(src)
+ || ((src instanceof JComboBox) && ((JComboBox) src).isPopupVisible())) {
+
return;
}
cancelPopupMenu();
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicRadioButtonUI.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicRadioButtonUI.java Wed Jun 03 18:11:45 2015 -0700
@@ -438,7 +438,7 @@
// to the button group or not
Component getFocusTransferBaseComponent(boolean next){
Component focusBaseComp = activeBtn;
- Window container = SwingUtilities.getWindowAncestor(activeBtn);
+ Container container = focusBaseComp.getFocusCycleRootAncestor();
if (container != null) {
FocusTraversalPolicy policy = container.getFocusTraversalPolicy();
Component comp = next ? policy.getComponentAfter(container, activeBtn)
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicSpinnerUI.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicSpinnerUI.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -989,7 +989,7 @@
((JSpinner.DefaultEditor)newEditor).getTextField();
if (tf != null) {
if (tf.getFont() instanceof UIResource) {
- tf.setFont(spinner.getFont());
+ tf.setFont(new FontUIResource(spinner.getFont()));
}
tf.addFocusListener(nextButtonHandler);
tf.addFocusListener(previousButtonHandler);
@@ -1002,12 +1002,12 @@
}
else if ("font".equals(propertyName)) {
JComponent editor = spinner.getEditor();
- if (editor!=null && editor instanceof JSpinner.DefaultEditor) {
+ if (editor instanceof JSpinner.DefaultEditor) {
JTextField tf =
((JSpinner.DefaultEditor)editor).getTextField();
if (tf != null) {
if (tf.getFont() instanceof UIResource) {
- tf.setFont(spinner.getFont());
+ tf.setFont(new FontUIResource(spinner.getFont()));
}
}
}
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicTextUI.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicTextUI.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -936,10 +936,11 @@
((AbstractDocument)doc).readLock();
}
try {
- if ((d.width > (i.left + i.right)) && (d.height > (i.top + i.bottom))) {
- rootView.setSize(d.width - i.left - i.right, d.height - i.top - i.bottom);
+ if ((d.width > (i.left + i.right + caretMargin)) && (d.height > (i.top + i.bottom))) {
+ rootView.setSize(d.width - i.left - i.right -
+ caretMargin, d.height - i.top - i.bottom);
}
- else if (d.width == 0 && d.height == 0) {
+ else if (d.width == 0 || d.height == 0) {
// Probably haven't been layed out yet, force some sort of
// initial sizing.
rootView.setSize(Integer.MAX_VALUE, Integer.MAX_VALUE);
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/metal/MetalRootPaneUI.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/metal/MetalRootPaneUI.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,15 +27,11 @@
import java.awt.event.*;
import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
import javax.swing.*;
-import javax.swing.border.*;
import javax.swing.event.*;
import javax.swing.plaf.*;
import javax.swing.plaf.basic.*;
import java.awt.*;
-import java.io.*;
-import java.security.*;
/**
* Provides the metal look and feel implementation of <code>RootPaneUI</code>.
@@ -441,7 +437,6 @@
* @param the Container for which this layout manager is being used
* @return a Dimension object containing the layout's preferred size
*/
- @SuppressWarnings("deprecation")
public Dimension preferredLayoutSize(Container parent) {
Dimension cpd, mbd, tpd;
int cpWidth = 0;
@@ -463,8 +458,8 @@
cpHeight = cpd.height;
}
- if(root.getMenuBar() != null) {
- mbd = root.getMenuBar().getPreferredSize();
+ if(root.getJMenuBar() != null) {
+ mbd = root.getJMenuBar().getPreferredSize();
if (mbd != null) {
mbWidth = mbd.width;
mbHeight = mbd.height;
@@ -494,7 +489,6 @@
* @param the Container for which this layout manager is being used
* @return a Dimension object containing the layout's minimum size
*/
- @SuppressWarnings("deprecation")
public Dimension minimumLayoutSize(Container parent) {
Dimension cpd, mbd, tpd;
int cpWidth = 0;
@@ -516,8 +510,8 @@
cpHeight = cpd.height;
}
- if(root.getMenuBar() != null) {
- mbd = root.getMenuBar().getMinimumSize();
+ if(root.getJMenuBar() != null) {
+ mbd = root.getJMenuBar().getMinimumSize();
if (mbd != null) {
mbWidth = mbd.width;
mbHeight = mbd.height;
@@ -546,7 +540,6 @@
* @param the Container for which this layout manager is being used
* @return a Dimension object containing the layout's maximum size
*/
- @SuppressWarnings("deprecation")
public Dimension maximumLayoutSize(Container target) {
Dimension cpd, mbd, tpd;
int cpWidth = Integer.MAX_VALUE;
@@ -566,8 +559,8 @@
}
}
- if(root.getMenuBar() != null) {
- mbd = root.getMenuBar().getMaximumSize();
+ if(root.getJMenuBar() != null) {
+ mbd = root.getJMenuBar().getMaximumSize();
if (mbd != null) {
mbWidth = mbd.width;
mbHeight = mbd.height;
@@ -610,7 +603,6 @@
*
* @param the Container for which this layout manager is being used
*/
- @SuppressWarnings("deprecation")
public void layoutContainer(Container parent) {
JRootPane root = (JRootPane) parent;
Rectangle b = root.getBounds();
@@ -640,9 +632,9 @@
}
}
}
- if(root.getMenuBar() != null) {
- Dimension mbd = root.getMenuBar().getPreferredSize();
- root.getMenuBar().setBounds(0, nextY, w, mbd.height);
+ if(root.getJMenuBar() != null) {
+ Dimension mbd = root.getJMenuBar().getPreferredSize();
+ root.getJMenuBar().setBounds(0, nextY, w, mbd.height);
nextY += mbd.height;
}
if(root.getContentPane() != null) {
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/synth/SynthSplitPaneUI.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/synth/SynthSplitPaneUI.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -134,6 +134,7 @@
value = Integer.valueOf(6);
}
LookAndFeel.installProperty(splitPane, "dividerSize", value);
+ dividerSize = ((Number)value).intValue();
value = style.get(context, "SplitPane.oneTouchExpandable");
if (value != null) {
--- a/jdk/src/java.desktop/share/classes/sun/applet/AppletClassLoader.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/applet/AppletClassLoader.java Wed Jun 03 18:11:45 2015 -0700
@@ -802,7 +802,7 @@
/**
* Determine if applet is targeted for JDK 1.1.
*
- * @param applet Applet class.
+ * @param clazz Applet class.
* @return TRUE if applet is targeted for JDK 1.1;
* FALSE if applet is not;
* null if applet is unknown.
@@ -815,7 +815,7 @@
/**
* Determine if applet is targeted for JDK 1.2.
*
- * @param applet Applet class.
+ * @param clazz Applet class.
* @return TRUE if applet is targeted for JDK 1.2;
* FALSE if applet is not;
* null if applet is unknown.
--- a/jdk/src/java.desktop/share/classes/sun/applet/AppletSecurity.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/applet/AppletSecurity.java Wed Jun 03 18:11:45 2015 -0700
@@ -270,10 +270,10 @@
* The <code>checkPackageAccess</code> method for class
* <code>SecurityManager</code> calls
* <code>checkPermission</code> with the
- * <code>RuntimePermission("accessClassInPackage."+pkg)</code>
+ * <code>RuntimePermission("accessClassInPackage."+ pkgname)</code>
* permission.
*
- * @param pkg the package name.
+ * @param pkgname the package name.
* @exception SecurityException if the caller does not have
* permission to access the specified package.
* @see java.lang.ClassLoader#loadClass(java.lang.String, boolean)
--- a/jdk/src/java.desktop/share/classes/sun/awt/AppContext.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/awt/AppContext.java Wed Jun 03 18:11:45 2015 -0700
@@ -190,7 +190,7 @@
*
* @see #addPropertyChangeListener
* @see #removePropertyChangeListener
- * @see #firePropertyChange
+ * @see PropertyChangeSupport#firePropertyChange
*/
private PropertyChangeSupport changeSupport = null;
@@ -809,7 +809,7 @@
*
* @see #addPropertyChangeListener(java.lang.String, java.beans.PropertyChangeListener)
* @see #getPropertyChangeListeners(java.lang.String)
- * @see #removePropertyChangeListener(java.beans.PropertyChangeListener)
+ * @see PropertyChangeSupport#removePropertyChangeListener(java.beans.PropertyChangeListener)
*/
public synchronized void removePropertyChangeListener(
String propertyName,
--- a/jdk/src/java.desktop/share/classes/sun/awt/DefaultMouseInfoPeer.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/awt/DefaultMouseInfoPeer.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,7 +29,7 @@
import java.awt.Window;
import java.awt.peer.MouseInfoPeer;
-public class DefaultMouseInfoPeer implements MouseInfoPeer {
+public final class DefaultMouseInfoPeer implements MouseInfoPeer {
/**
* Package-private constructor to prevent instantiation.
--- a/jdk/src/java.desktop/share/classes/sun/awt/EmbeddedFrame.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/awt/EmbeddedFrame.java Wed Jun 03 18:11:45 2015 -0700
@@ -552,16 +552,10 @@
}
public void setModalBlocked(Dialog blocker, boolean blocked) {}
- /**
- * @see java.awt.peer.ContainerPeer#restack
- */
public void restack() {
throw new UnsupportedOperationException();
}
- /**
- * @see java.awt.peer.ContainerPeer#isRestackSupported
- */
public boolean isRestackSupported() {
return false;
}
--- a/jdk/src/java.desktop/share/classes/sun/awt/HToolkit.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/awt/HToolkit.java Wed Jun 03 18:11:45 2015 -0700
@@ -45,8 +45,7 @@
* with the HeadlessToolkit. It is primarily used
* in embedded JRE's that do not have sun/awt/X11 classes.
*/
-public class HToolkit extends SunToolkit
- implements ComponentFactory {
+public final class HToolkit extends SunToolkit implements ComponentFactory {
private static final KeyboardFocusManagerPeer kfmPeer = new KeyboardFocusManagerPeer() {
@Override
--- a/jdk/src/java.desktop/share/classes/sun/awt/SunToolkit.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/awt/SunToolkit.java Wed Jun 03 18:11:45 2015 -0700
@@ -366,8 +366,8 @@
* status to synchronous for any of its windows, then further focus
* behaviour is unspecified.
* <p>
- * @param w window for which the lightweight focus request status
- * should be set
+ * @param changed the window for which the lightweight focus request
+ * status should be set
* @param status the value of lightweight focus request status
*/
@@ -1459,9 +1459,9 @@
* <p> Notice that realSync isn't guaranteed to work if recurring
* actions occur, such as if during processing of some event
* another request which may generate some events occurs. By
- * default, sync tries to perform as much as {@value MAX_ITERS}
+ * default, sync tries to perform as much as {@value #MAX_ITERS}
* cycles of event processing, allowing for roughly {@value
- * MAX_ITERS} additional requests.
+ * #MAX_ITERS} additional requests.
*
* <p> For example, requestFocus() generates native request, which
* generates one or two Java focus events, which then generate a
--- a/jdk/src/java.desktop/share/classes/sun/awt/datatransfer/SunClipboard.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/awt/datatransfer/SunClipboard.java Wed Jun 03 18:11:45 2015 -0700
@@ -151,7 +151,7 @@
/**
- * @see java.awt.Clipboard#getAvailableDataFlavors
+ * @see java.awt.datatransfer.Clipboard#getAvailableDataFlavors
* @since 1.5
*/
public DataFlavor[] getAvailableDataFlavors() {
@@ -167,7 +167,7 @@
}
/**
- * @see java.awt.Clipboard#isDataFlavorAvailable
+ * @see java.awt.datatransfer.Clipboard#isDataFlavorAvailable
* @since 1.5
*/
public boolean isDataFlavorAvailable(DataFlavor flavor) {
@@ -186,7 +186,7 @@
}
/**
- * @see java.awt.Clipboard#getData
+ * @see java.awt.datatransfer.Clipboard#getData
* @since 1.5
*/
public Object getData(DataFlavor flavor)
--- a/jdk/src/java.desktop/share/classes/sun/awt/geom/PathConsumer2D.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/awt/geom/PathConsumer2D.java Wed Jun 03 18:11:45 2015 -0700
@@ -27,30 +27,30 @@
public interface PathConsumer2D {
/**
- * @see java.awt.geom.Path2D.Float.moveTo
+ * @see java.awt.geom.Path2D.Float#moveTo
*/
public void moveTo(float x, float y);
/**
- * @see java.awt.geom.Path2D.Float.lineTo
+ * @see java.awt.geom.Path2D.Float#lineTo
*/
public void lineTo(float x, float y);
/**
- * @see java.awt.geom.Path2D.Float.quadTo
+ * @see java.awt.geom.Path2D.Float#quadTo
*/
public void quadTo(float x1, float y1,
float x2, float y2);
/**
- * @see java.awt.geom.Path2D.Float.curveTo
+ * @see java.awt.geom.Path2D.Float#curveTo
*/
public void curveTo(float x1, float y1,
float x2, float y2,
float x3, float y3);
/**
- * @see java.awt.geom.Path2D.Float.closePath
+ * @see java.awt.geom.Path2D.Float#closePath
*/
public void closePath();
--- a/jdk/src/java.desktop/share/classes/sun/awt/im/ExecutableInputMethodManager.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/awt/im/ExecutableInputMethodManager.java Wed Jun 03 18:11:45 2015 -0700
@@ -519,7 +519,7 @@
* Writes the preferred input method descriptor class name into
* the user's Preferences tree in accordance with the given locale.
*
- * @param inputMethodLocator input method locator to remember.
+ * @param locator input method locator to remember.
*/
private synchronized void putPreferredInputMethod(InputMethodLocator locator) {
InputMethodDescriptor descriptor = locator.getDescriptor();
--- a/jdk/src/java.desktop/share/classes/sun/awt/image/ByteBandedRaster.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/awt/image/ByteBandedRaster.java Wed Jun 03 18:11:45 2015 -0700
@@ -176,7 +176,7 @@
* Returns data offset for the specified band. The data offset
* is the index into the band's data array
* in which the first sample of the first scanline is stored.
- * @param The band whose offset is returned.
+ * @param band The band whose offset is returned.
*/
public int getDataOffset(int band) {
return dataOffsets[band];
@@ -222,11 +222,11 @@
* and references anything other than an array of transferType.
* @param x The X coordinate of the pixel location.
* @param y The Y coordinate of the pixel location.
- * @param outData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length getNumDataElements().
* If null an array of appropriate type and size will be
* allocated.
- * @return An object reference to an array of type defined by
+ * @return An object reference to an array of type defined by
* getTransferType() with the request pixel data.
*/
public Object getDataElements(int x, int y, Object obj) {
@@ -267,9 +267,9 @@
* </pre>
* @param x The X coordinate of the upper left pixel location.
* @param y The Y coordinate of the upper left pixel location.
- * @param width Width of the pixel rectangle.
- * @param height Height of the pixel rectangle.
- * @param outData An object reference to an array of type defined by
+ * @param w Width of the pixel rectangle.
+ * @param h Height of the pixel rectangle.
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length w*h*getNumDataElements().
* If null an array of appropriate type and size will be
* allocated.
@@ -320,8 +320,8 @@
* </pre>
* @param x The X coordinate of the upper left pixel location.
* @param y The Y coordinate of the upper left pixel location.
- * @param width Width of the pixel rectangle.
- * @param height Height of the pixel rectangle.
+ * @param w Width of the pixel rectangle.
+ * @param h Height of the pixel rectangle.
* @param band The band to return.
* @param outData If non-null, data elements for all bands
* at the specified location are returned in this array.
@@ -368,8 +368,8 @@
* </pre>
* @param x The X coordinate of the upper left pixel location.
* @param y The Y coordinate of the upper left pixel location.
- * @param width Width of the pixel rectangle.
- * @param height Height of the pixel rectangle.
+ * @param w Width of the pixel rectangle.
+ * @param h Height of the pixel rectangle.
* @param outData If non-null, data elements for all bands
* at the specified location are returned in this array.
* @return Data array with data elements for all bands.
@@ -412,7 +412,7 @@
* and references anything other than an array of transferType.
* @param x The X coordinate of the pixel location.
* @param y The Y coordinate of the pixel location.
- * @param inData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length getNumDataElements()
* containing the pixel data to place at x,y.
*/
@@ -505,7 +505,7 @@
* @param y The Y coordinate of the upper left pixel location.
* @param w Width of the pixel rectangle.
* @param h Height of the pixel rectangle.
- * @param inData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length w*h*getNumDataElements()
* containing the pixel data to place between x,y and
* x+h, y+h.
--- a/jdk/src/java.desktop/share/classes/sun/awt/image/ByteComponentRaster.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/awt/image/ByteComponentRaster.java Wed Jun 03 18:11:45 2015 -0700
@@ -253,7 +253,7 @@
* and references anything other than an array of transferType.
* @param x The X coordinate of the pixel location.
* @param y The Y coordinate of the pixel location.
- * @param outData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length getNumDataElements().
* If null an array of appropriate type and size will be
* allocated.
@@ -299,9 +299,9 @@
* </pre>
* @param x The X coordinate of the upper left pixel location.
* @param y The Y coordinate of the upper left pixel location.
- * @param width Width of the pixel rectangle.
- * @param height Height of the pixel rectangle.
- * @param outData An object reference to an array of type defined by
+ * @param w Width of the pixel rectangle.
+ * @param h Height of the pixel rectangle.
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length w*h*getNumDataElements().
* If null an array of appropriate type and size will be
* allocated.
@@ -352,8 +352,8 @@
* </pre>
* @param x The X coordinate of the upper left pixel location.
* @param y The Y coordinate of the upper left pixel location.
- * @param width Width of the pixel rectangle.
- * @param height Height of the pixel rectangle.
+ * @param w Width of the pixel rectangle.
+ * @param h Height of the pixel rectangle.
* @param band The band to return.
* @param outData If non-null, data elements for all bands
* at the specified location are returned in this array.
@@ -415,8 +415,8 @@
* </pre>
* @param x The X coordinate of the upper left pixel location.
* @param y The Y coordinate of the upper left pixel location.
- * @param width Width of the pixel rectangle.
- * @param height Height of the pixel rectangle.
+ * @param w Width of the pixel rectangle.
+ * @param h Height of the pixel rectangle.
* @param outData If non-null, data elements for all bands
* at the specified location are returned in this array.
* @return Data array with data elements for all bands.
@@ -458,7 +458,7 @@
* and references anything other than an array of transferType.
* @param x The X coordinate of the pixel location.
* @param y The Y coordinate of the pixel location.
- * @param inData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length getNumDataElements()
* containing the pixel data to place at x,y.
*/
@@ -577,7 +577,7 @@
* @param y The Y coordinate of the upper left pixel location.
* @param w Width of the pixel rectangle.
* @param h Height of the pixel rectangle.
- * @param inData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length w*h*getNumDataElements()
* containing the pixel data to place between x,y and
* x+h, y+h.
--- a/jdk/src/java.desktop/share/classes/sun/awt/image/ByteInterleavedRaster.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/awt/image/ByteInterleavedRaster.java Wed Jun 03 18:11:45 2015 -0700
@@ -305,7 +305,7 @@
* and references anything other than an array of transferType.
* @param x The X coordinate of the pixel location.
* @param y The Y coordinate of the pixel location.
- * @param outData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length getNumDataElements().
* If null an array of appropriate type and size will be
* allocated.
@@ -351,9 +351,9 @@
* </pre>
* @param x The X coordinate of the upper left pixel location.
* @param y The Y coordinate of the upper left pixel location.
- * @param width Width of the pixel rectangle.
- * @param height Height of the pixel rectangle.
- * @param outData An object reference to an array of type defined by
+ * @param w Width of the pixel rectangle.
+ * @param h Height of the pixel rectangle.
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length w*h*getNumDataElements().
* If null an array of appropriate type and size will be
* allocated.
@@ -376,8 +376,8 @@
* </pre>
* @param x The X coordinate of the upper left pixel location.
* @param y The Y coordinate of the upper left pixel location.
- * @param width Width of the pixel rectangle.
- * @param height Height of the pixel rectangle.
+ * @param w Width of the pixel rectangle.
+ * @param h Height of the pixel rectangle.
* @param band The band to return.
* @param outData If non-null, data elements for all bands
* at the specified location are returned in this array.
@@ -437,8 +437,8 @@
* </pre>
* @param x The X coordinate of the upper left pixel location.
* @param y The Y coordinate of the upper left pixel location.
- * @param width Width of the pixel rectangle.
- * @param height Height of the pixel rectangle.
+ * @param w Width of the pixel rectangle.
+ * @param h Height of the pixel rectangle.
* @param outData If non-null, data elements for all bands
* at the specified location are returned in this array.
* @return Data array with data elements for all bands.
@@ -536,7 +536,7 @@
* and references anything other than an array of transferType.
* @param x The X coordinate of the pixel location.
* @param y The Y coordinate of the pixel location.
- * @param inData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length getNumDataElements()
* containing the pixel data to place at x,y.
*/
@@ -666,7 +666,7 @@
* @param y The Y coordinate of the upper left pixel location.
* @param w Width of the pixel rectangle.
* @param h Height of the pixel rectangle.
- * @param inData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length w*h*getNumDataElements()
* containing the pixel data to place between x,y and
* x+h, y+h.
--- a/jdk/src/java.desktop/share/classes/sun/awt/image/BytePackedRaster.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/awt/image/BytePackedRaster.java Wed Jun 03 18:11:45 2015 -0700
@@ -234,7 +234,7 @@
* and references anything other than an array of transferType.
* @param x The X coordinate of the pixel location.
* @param y The Y coordinate of the pixel location.
- * @param outData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length getNumDataElements().
* If null an array of appropriate type and size will be
* allocated.
@@ -306,9 +306,9 @@
* </pre>
* @param x The X coordinate of the upper left pixel location.
* @param y The Y coordinate of the upper left pixel location.
- * @param width Width of the pixel rectangle.
- * @param height Height of the pixel rectangle.
- * @param outData An object reference to an array of type defined by
+ * @param w Width of the pixel rectangle.
+ * @param h Height of the pixel rectangle.
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length w*h*getNumDataElements().
* If null an array of appropriate type and size will be
* allocated.
@@ -358,8 +358,8 @@
* </pre>
* @param x The X coordinate of the upper left pixel location.
* @param y The Y coordinate of the upper left pixel location.
- * @param width Width of the pixel rectangle.
- * @param height Height of the pixel rectangle.
+ * @param w Width of the pixel rectangle.
+ * @param h Height of the pixel rectangle.
* @param band The band to return, is ignored.
* @param outData If non-null, data elements
* at the specified locations are returned in this array.
@@ -383,8 +383,8 @@
* </pre>
* @param x The X coordinate of the upper left pixel location.
* @param y The Y coordinate of the upper left pixel location.
- * @param width Width of the pixel rectangle.
- * @param height Height of the pixel rectangle.
+ * @param w Width of the pixel rectangle.
+ * @param h Height of the pixel rectangle.
* @param outData If non-null, data elements
* at the specified locations are returned in this array.
* @return Byte array with data elements.
@@ -499,7 +499,7 @@
* and references anything other than an array of transferType.
* @param x The X coordinate of the pixel location.
* @param y The Y coordinate of the pixel location.
- * @param inData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length getNumDataElements()
* containing the pixel data to place at x,y.
*/
@@ -857,7 +857,7 @@
* @param y The Y coordinate of the upper left pixel location.
* @param w Width of the pixel rectangle.
* @param h Height of the pixel rectangle.
- * @param inData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length w*h*getNumDataElements()
* containing the pixel data to place between x,y and
* x+h, y+h.
--- a/jdk/src/java.desktop/share/classes/sun/awt/image/ImageFetchable.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/awt/image/ImageFetchable.java Wed Jun 03 18:11:45 2015 -0700
@@ -33,7 +33,7 @@
* threads which manage the applications User Interface.
*
* @see ImageFetcher
- * @see ImageProducer
+ * @see java.awt.image.ImageProducer
*
* @author Jim Graham
*/
@@ -42,7 +42,7 @@
* This method is called by one of the ImageFetcher threads to start
* the flow of information from the ImageProducer to the ImageConsumer.
* @see ImageFetcher
- * @see ImageProducer
+ * @see java.awt.image.ImageProducer
*/
public void doFetch();
}
--- a/jdk/src/java.desktop/share/classes/sun/awt/image/IntegerComponentRaster.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/awt/image/IntegerComponentRaster.java Wed Jun 03 18:11:45 2015 -0700
@@ -263,7 +263,7 @@
* and references anything other than an array of transferType.
* @param x The X coordinate of the pixel location.
* @param y The Y coordinate of the pixel location.
- * @param outData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length getNumDataElements().
* If null an array of appropriate type and size will be
* allocated.
@@ -309,9 +309,9 @@
* </pre>
* @param x The X coordinate of the upper left pixel location.
* @param y The Y coordinate of the upper left pixel location.
- * @param width Width of the pixel rectangle.
- * @param height Height of the pixel rectangle.
- * @param outData An object reference to an array of type defined by
+ * @param w Width of the pixel rectangle.
+ * @param h Height of the pixel rectangle.
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length w*h*getNumDataElements().
* If null an array of appropriate type and size will be
* allocated.
@@ -358,7 +358,7 @@
* and references anything other than an array of transferType.
* @param x The X coordinate of the pixel location.
* @param y The Y coordinate of the pixel location.
- * @param inData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length getNumDataElements()
* containing the pixel data to place at x,y.
*/
@@ -489,7 +489,7 @@
* @param y The Y coordinate of the upper left pixel location.
* @param w Width of the pixel rectangle.
* @param h Height of the pixel rectangle.
- * @param inData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length w*h*getNumDataElements()
* containing the pixel data to place between x,y and
* x+h, y+h.
--- a/jdk/src/java.desktop/share/classes/sun/awt/image/IntegerInterleavedRaster.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/awt/image/IntegerInterleavedRaster.java Wed Jun 03 18:11:45 2015 -0700
@@ -206,7 +206,7 @@
* and references anything other than an array of transferType.
* @param x The X coordinate of the pixel location.
* @param y The Y coordinate of the pixel location.
- * @param outData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length getNumDataElements().
* If null an array of appropriate type and size will be
* allocated.
@@ -249,9 +249,9 @@
* </pre>
* @param x The X coordinate of the upper left pixel location.
* @param y The Y coordinate of the upper left pixel location.
- * @param width Width of the pixel rectangle.
- * @param height Height of the pixel rectangle.
- * @param outData An object reference to an array of type defined by
+ * @param w Width of the pixel rectangle.
+ * @param h Height of the pixel rectangle.
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length w*h*getNumDataElements().
* If null an array of appropriate type and size will be
* allocated.
@@ -291,7 +291,7 @@
* and references anything other than an array of transferType.
* @param x The X coordinate of the pixel location.
* @param y The Y coordinate of the pixel location.
- * @param inData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length getNumDataElements()
* containing the pixel data to place at x,y.
*/
@@ -410,7 +410,7 @@
* @param y The Y coordinate of the upper left pixel location.
* @param w Width of the pixel rectangle.
* @param h Height of the pixel rectangle.
- * @param inData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length w*h*getNumDataElements()
* containing the pixel data to place between x,y and
* x+h, y+h.
--- a/jdk/src/java.desktop/share/classes/sun/awt/image/ShortBandedRaster.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/awt/image/ShortBandedRaster.java Wed Jun 03 18:11:45 2015 -0700
@@ -172,7 +172,7 @@
* Returns the data offset for the specified band. The data offset
* is the index into the band's data array
* in which the first sample of the first scanline is stored.
- * @param The band whose offset is returned.
+ * @param band The band whose offset is returned.
*/
public int getDataOffset(int band) {
return dataOffsets[band];
@@ -218,7 +218,7 @@
* and references anything other than an array of transferType.
* @param x The X coordinate of the pixel location.
* @param y The Y coordinate of the pixel location.
- * @param outData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length getNumDataElements().
* If null an array of appropriate type and size will be
* allocated.
@@ -262,9 +262,9 @@
* </pre>
* @param x The X coordinate of the upper left pixel location.
* @param y The Y coordinate of the upper left pixel location.
- * @param width Width of the pixel rectangle.
- * @param height Height of the pixel rectangle.
- * @param outData An object reference to an array of type defined by
+ * @param w Width of the pixel rectangle.
+ * @param h Height of the pixel rectangle.
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length w*h*getNumDataElements().
* If null an array of appropriate type and size will be
* allocated.
@@ -315,8 +315,8 @@
* </pre>
* @param x The X coordinate of the upper left pixel location.
* @param y The Y coordinate of the upper left pixel location.
- * @param width Width of the pixel rectangle.
- * @param height Height of the pixel rectangle.
+ * @param w Width of the pixel rectangle.
+ * @param h Height of the pixel rectangle.
* @param band The band to return.
* @param outData If non-null, data elements for all bands
* at the specified location are returned in this array.
@@ -363,8 +363,8 @@
* </pre>
* @param x The X coordinate of the upper left pixel location.
* @param y The Y coordinate of the upper left pixel location.
- * @param width Width of the pixel rectangle.
- * @param height Height of the pixel rectangle.
+ * @param w Width of the pixel rectangle.
+ * @param h Height of the pixel rectangle.
* @param outData If non-null, data elements for all bands
* at the specified location are returned in this array.
* @return Data array with data elements for all bands.
@@ -407,7 +407,7 @@
* and references anything other than an array of transferType.
* @param x The X coordinate of the pixel location.
* @param y The Y coordinate of the pixel location.
- * @param inData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length getNumDataElements()
* containing the pixel data to place at x,y.
*/
@@ -503,7 +503,7 @@
* @param y The Y coordinate of the upper left pixel location.
* @param w Width of the pixel rectangle.
* @param h Height of the pixel rectangle.
- * @param inData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length w*h*getNumDataElements()
* containing the pixel data to place between x,y and
* x+h, y+h.
--- a/jdk/src/java.desktop/share/classes/sun/awt/image/ShortComponentRaster.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/awt/image/ShortComponentRaster.java Wed Jun 03 18:11:45 2015 -0700
@@ -252,7 +252,7 @@
* and references anything other than an array of transferType.
* @param x The X coordinate of the pixel location.
* @param y The Y coordinate of the pixel location.
- * @param outData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length getNumDataElements().
* If null an array of appropriate type and size will be
* allocated.
@@ -298,9 +298,9 @@
* </pre>
* @param x The X coordinate of the upper left pixel location.
* @param y The Y coordinate of the upper left pixel location.
- * @param width Width of the pixel rectangle.
- * @param height Height of the pixel rectangle.
- * @param outData An object reference to an array of type defined by
+ * @param w Width of the pixel rectangle.
+ * @param h Height of the pixel rectangle.
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length w*h*getNumDataElements().
* If null an array of appropriate type and size will be
* allocated.
@@ -351,8 +351,8 @@
* </pre>
* @param x The X coordinate of the upper left pixel location.
* @param y The Y coordinate of the upper left pixel location.
- * @param width Width of the sample rectangle.
- * @param height Height of the sample rectangle.
+ * @param w Width of the sample rectangle.
+ * @param h Height of the sample rectangle.
* @param band The band to return.
* @param outData If non-null, data elements for all bands
* at the specified location are returned in this array.
@@ -414,8 +414,8 @@
* </pre>
* @param x The X coordinate of the upper left pixel location.
* @param y The Y coordinate of the upper left pixel location.
- * @param width Width of the pixel rectangle.
- * @param height Height of the pixel rectangle.
+ * @param w Width of the pixel rectangle.
+ * @param h Height of the pixel rectangle.
* @param outData If non-null, data elements for all bands
* at the specified location are returned in this array.
* @return Data array with data elements for all bands.
@@ -456,7 +456,7 @@
* and references anything other than an array of transferType.
* @param x The X coordinate of the pixel location.
* @param y The Y coordinate of the pixel location.
- * @param inData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length getNumDataElements()
* containing the pixel data to place at x,y.
*/
@@ -553,7 +553,7 @@
* @param y The Y coordinate of the upper left pixel location.
* @param w Width of the pixel rectangle.
* @param h Height of the pixel rectangle.
- * @param inData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length w*h*getNumDataElements()
* containing the pixel data to place between x,y and
* x+h, y+h.
--- a/jdk/src/java.desktop/share/classes/sun/awt/image/ShortInterleavedRaster.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/awt/image/ShortInterleavedRaster.java Wed Jun 03 18:11:45 2015 -0700
@@ -225,7 +225,7 @@
* and references anything other than an array of transferType.
* @param x The X coordinate of the pixel location.
* @param y The Y coordinate of the pixel location.
- * @param outData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length getNumDataElements().
* If null an array of appropriate type and size will be
* allocated.
@@ -271,9 +271,9 @@
* </pre>
* @param x The X coordinate of the upper left pixel location.
* @param y The Y coordinate of the upper left pixel location.
- * @param width Width of the pixel rectangle.
- * @param height Height of the pixel rectangle.
- * @param outData An object reference to an array of type defined by
+ * @param w Width of the pixel rectangle.
+ * @param h Height of the pixel rectangle.
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length w*h*getNumDataElements().
* If null an array of appropriate type and size will be
* allocated.
@@ -324,8 +324,8 @@
* </pre>
* @param x The X coordinate of the upper left pixel location.
* @param y The Y coordinate of the upper left pixel location.
- * @param width Width of the sample rectangle.
- * @param height Height of the sample rectangle.
+ * @param w Width of the sample rectangle.
+ * @param h Height of the sample rectangle.
* @param band The band to return.
* @param outData If non-null, data elements for all bands
* at the specified location are returned in this array.
@@ -387,8 +387,8 @@
* </pre>
* @param x The X coordinate of the upper left pixel location.
* @param y The Y coordinate of the upper left pixel location.
- * @param width Width of the pixel rectangle.
- * @param height Height of the pixel rectangle.
+ * @param w Width of the pixel rectangle.
+ * @param h Height of the pixel rectangle.
* @param outData If non-null, data elements for all bands
* at the specified location are returned in this array.
* @return Data array with data elements for all bands.
@@ -429,7 +429,7 @@
* and references anything other than an array of transferType.
* @param x The X coordinate of the pixel location.
* @param y The Y coordinate of the pixel location.
- * @param inData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length getNumDataElements()
* containing the pixel data to place at x,y.
*/
@@ -525,7 +525,7 @@
* @param y The Y coordinate of the upper left pixel location.
* @param w Width of the pixel rectangle.
* @param h Height of the pixel rectangle.
- * @param inData An object reference to an array of type defined by
+ * @param obj An object reference to an array of type defined by
* getTransferType() and length w*h*getNumDataElements()
* containing the pixel data to place between x,y and
* x+h, y+h.
--- a/jdk/src/java.desktop/share/classes/sun/awt/shell/ShellFolderColumnInfo.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/awt/shell/ShellFolderColumnInfo.java Wed Jun 03 18:11:45 2015 -0700
@@ -40,7 +40,7 @@
private SortOrder sortOrder;
private Comparator<?> comparator;
/**
- * <code>false</code> (default) if the {@link comparator} expects folders as arguments,
+ * <code>false</code> (default) if the {@link #comparator} expects folders as arguments,
* and <code>true</code> if folder's column values. The first option is used default for comparison
* on Windows and also for separating files from directories when sorting using
* ShellFolderManager's inner comparator.
--- a/jdk/src/java.desktop/share/classes/sun/awt/util/IdentityArrayList.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/awt/util/IdentityArrayList.java Wed Jun 03 18:11:45 2015 -0700
@@ -68,7 +68,7 @@
* synchronizing on some object that naturally encapsulates the list.
*
* If no such object exists, the list should be "wrapped" using the
- * {@link Collections#synchronizedList Collections.synchronizedList}
+ * {@link java.util.Collections#synchronizedList Collections.synchronizedList}
* method. This is best done at creation time, to prevent accidental
* unsynchronized access to the list:<pre>
* List list = Collections.synchronizedList(new IdentityArrayList(...));</pre>
--- a/jdk/src/java.desktop/share/classes/sun/awt/util/IdentityLinkedList.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/awt/util/IdentityLinkedList.java Wed Jun 03 18:11:45 2015 -0700
@@ -41,7 +41,7 @@
* the <tt>IdentityLinkedList</tt> class provides uniformly named methods to
* <tt>get</tt>, <tt>remove</tt> and <tt>insert</tt> an element at the
* beginning and end of the list. These operations allow linked lists to be
- * used as a stack, {@linkplain Queue queue}, or {@linkplain Deque
+ * used as a stack, {@linkplain java.util.Queue queue}, or {@linkplain Deque
* double-ended queue}. <p>
*
* The class implements the <tt>Deque</tt> interface, providing
@@ -62,7 +62,7 @@
* encapsulates the list.
*
* If no such object exists, the list should be "wrapped" using the
- * {@link Collections#synchronizedList Collections.synchronizedList}
+ * {@link java.util.Collections#synchronizedList Collections.synchronizedList}
* method. This is best done at creation time, to prevent accidental
* unsynchronized access to the list:<pre>
* List list = Collections.synchronizedList(new IdentityLinkedList(...));</pre>
@@ -478,7 +478,7 @@
* Adds the specified element as the tail (last element) of this list.
*
* @param e the element to add
- * @return <tt>true</tt> (as specified by {@link Queue#offer})
+ * @return <tt>true</tt> (as specified by {@link java.util.Queue#offer})
* @since 1.5
*/
public boolean offer(E e) {
--- a/jdk/src/java.desktop/share/classes/sun/font/ScriptRun.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/font/ScriptRun.java Wed Jun 03 18:11:45 2015 -0700
@@ -138,7 +138,7 @@
* Get the script code for the script of the current script run.
*
* @return the script code for the script of the current script run.
- * @see #Script
+ * @see Script
*/
public int getScriptCode() {
return scriptCode;
@@ -274,7 +274,7 @@
* @param scriptOne one of the script codes.
* @param scriptTwo the other script code.
* @return <code>true</code> if the two scripts are the same.
- * @see com.ibm.icu.lang.Script
+ * @see Script
*/
private static boolean sameScript(int scriptOne, int scriptTwo) {
return scriptOne == scriptTwo || scriptOne <= Script.INHERITED || scriptTwo <= Script.INHERITED;
--- a/jdk/src/java.desktop/share/classes/sun/font/StandardTextSource.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/font/StandardTextSource.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -33,42 +33,43 @@
import java.awt.font.FontRenderContext;
import java.awt.font.LineMetrics;
-public class StandardTextSource extends TextSource {
- char[] chars;
- int start;
- int len;
- int cstart;
- int clen;
- int level; // assumed all uniform
- int flags; // see GlyphVector.java
- Font font;
- FontRenderContext frc;
- CoreMetrics cm;
+final class StandardTextSource extends TextSource {
+
+ private final char[] chars;
+ private final int start;
+ private final int len;
+ private final int cstart;
+ private final int clen;
+ private final int level; // assumed all uniform
+ private final int flags; // see GlyphVector.java
+ private final Font font;
+ private final FontRenderContext frc;
+ private final CoreMetrics cm;
- /**
- * Create a simple implementation of a TextSource.
- *
- * Chars is an array containing clen chars in the context, in
- * logical order, contiguously starting at cstart. Start and len
- * represent that portion of the context representing the true
- * source; start, like cstart, is relative to the start of the
- * character array.
- *
- * Level is the bidi level (0-63 for the entire context. Flags is
- * the layout flags. Font is the font, frc is the render context,
- * and lm is the line metrics for the entire source text, but not
- * necessarily the context.
- */
- public StandardTextSource(char[] chars,
- int start,
- int len,
- int cstart,
- int clen,
- int level,
- int flags,
- Font font,
- FontRenderContext frc,
- CoreMetrics cm) {
+ /**
+ * Create a simple implementation of a TextSource.
+ *
+ * Chars is an array containing clen chars in the context, in
+ * logical order, contiguously starting at cstart. Start and len
+ * represent that portion of the context representing the true
+ * source; start, like cstart, is relative to the start of the
+ * character array.
+ *
+ * Level is the bidi level (0-63 for the entire context. Flags is
+ * the layout flags. Font is the font, frc is the render context,
+ * and lm is the line metrics for the entire source text, but not
+ * necessarily the context.
+ */
+ StandardTextSource(char[] chars,
+ int start,
+ int len,
+ int cstart,
+ int clen,
+ int level,
+ int flags,
+ Font font,
+ FontRenderContext frc,
+ CoreMetrics cm) {
if (chars == null) {
throw new IllegalArgumentException("bad chars: null");
}
@@ -97,7 +98,7 @@
throw new IllegalArgumentException("bad frc: null");
}
- this.chars = chars.clone();
+ this.chars = chars;
this.start = start;
this.len = len;
this.cstart = cstart;
@@ -115,40 +116,10 @@
}
}
- /** Create a StandardTextSource whose context is coextensive with the source. */
- public StandardTextSource(char[] chars,
- int start,
- int len,
- int level,
- int flags,
- Font font,
- FontRenderContext frc,
- CoreMetrics cm) {
- this(chars, start, len, start, len, level, flags, font, frc, cm);
- }
-
- /** Create a StandardTextSource whose context and source are coextensive with the entire char array. */
- public StandardTextSource(char[] chars,
- int level,
- int flags,
- Font font,
- FontRenderContext frc) {
- this(chars, 0, chars.length, 0, chars.length, level, flags, font, frc, null);
- }
-
- /** Create a StandardTextSource whose context and source are all the text in the String. */
- public StandardTextSource(String str,
- int level,
- int flags,
- Font font,
- FontRenderContext frc) {
- this(str.toCharArray(), 0, str.length(), 0, str.length(), level, flags, font, frc, null);
- }
-
// TextSource API
public char[] getChars() {
- return chars.clone();
+ return chars;
}
public int getStart() {
--- a/jdk/src/java.desktop/share/classes/sun/font/TextLabelFactory.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/font/TextLabelFactory.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -41,19 +41,19 @@
*
* @see Font
* @see FontRenderContext
- * @see GlyphVector
+ * @see java.awt.font.GlyphVector
* @see TextLabel
* @see ExtendedTextLabel
* @see Bidi
- * @see TextLayout
+ * @see java.awt.font.TextLayout
*/
-public class TextLabelFactory {
- private FontRenderContext frc;
- private char[] text;
- private Bidi bidi;
+public final class TextLabelFactory {
+ private final FontRenderContext frc;
+ private final char[] text;
+ private final Bidi bidi;
private Bidi lineBidi;
- private int flags;
+ private final int flags;
private int lineStart;
private int lineLimit;
--- a/jdk/src/java.desktop/share/classes/sun/java2d/NullSurfaceData.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/NullSurfaceData.java Wed Jun 03 18:11:45 2015 -0700
@@ -86,7 +86,7 @@
* In most cases, the returned Raster might contain more pixels
* than requested.
*
- * @see useTightBBoxes
+ * @see #useTightBBoxes
*/
public Raster getRaster(int x, int y, int w, int h) {
throw new InvalidPipeException("should be NOP");
@@ -101,7 +101,7 @@
* the pixels has to be made when doing a getRaster. The
* fewer pixels copied, the faster the operation will go.
*
- * @see getRaster
+ * @see #getRaster
*/
public boolean useTightBBoxes() {
return false;
--- a/jdk/src/java.desktop/share/classes/sun/java2d/SunCompositeContext.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/SunCompositeContext.java Wed Jun 03 18:11:45 2015 -0700
@@ -88,13 +88,13 @@
* @param src2 The second source tile for the compositing operation.
* @param dst The tile where the result of the operation is stored.
*/
- public void compose(Raster srcArg, Raster dstIn, WritableRaster dstOut) {
+ public void compose(Raster src1, Raster src2, WritableRaster dst) {
WritableRaster src;
int w;
int h;
- if (dstIn != dstOut) {
- dstOut.setDataElements(0, 0, dstIn);
+ if (src2 != dst) {
+ dst.setDataElements(0, 0, src2);
}
// REMIND: We should be able to create a SurfaceData from just
@@ -102,20 +102,20 @@
// create a SurfaceData from a BufferedImage then we need to
// make a WritableRaster since it is needed to construct a
// BufferedImage.
- if (srcArg instanceof WritableRaster) {
- src = (WritableRaster) srcArg;
+ if (src1 instanceof WritableRaster) {
+ src = (WritableRaster) src1;
} else {
- src = srcArg.createCompatibleWritableRaster();
- src.setDataElements(0, 0, srcArg);
+ src = src1.createCompatibleWritableRaster();
+ src.setDataElements(0, 0, src1);
}
- w = Math.min(src.getWidth(), dstIn.getWidth());
- h = Math.min(src.getHeight(), dstIn.getHeight());
+ w = Math.min(src.getWidth(), src2.getWidth());
+ h = Math.min(src.getHeight(), src2.getHeight());
BufferedImage srcImg = new BufferedImage(srcCM, src,
srcCM.isAlphaPremultiplied(),
null);
- BufferedImage dstImg = new BufferedImage(dstCM, dstOut,
+ BufferedImage dstImg = new BufferedImage(dstCM, dst,
dstCM.isAlphaPremultiplied(),
null);
--- a/jdk/src/java.desktop/share/classes/sun/java2d/SunGraphics2D.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/SunGraphics2D.java Wed Jun 03 18:11:45 2015 -0700
@@ -874,13 +874,13 @@
* space. The rendering attributes taken into account include the
* clip, transform, and stroke attributes.
* @param rect The area in device space to check for a hit.
- * @param p The path to check for a hit.
+ * @param s The path to check for a hit.
* @param onStroke Flag to choose between testing the stroked or
* the filled path.
* @return True if there is a hit, false otherwise.
* @see #setStroke
- * @see #fillPath
- * @see #drawPath
+ * @see #fill(Shape)
+ * @see #draw(Shape)
* @see #transform
* @see #setTransform
* @see #clip
@@ -1295,7 +1295,7 @@
/**
* Returns the preferences for the rendering algorithms.
- * @param hintCategory The category of hint to be set. The strings
+ * @param hintKey The category of hint to be set. The strings
* are defined in the RenderingHints class.
* @return The preferences for rendering algorithms. The strings
* are defined in the RenderingHints class.
@@ -1577,7 +1577,7 @@
* Cx'(p) = Cx(Tx(p)).
* A copy of the Tx is made, if necessary, so further
* modifications to Tx do not affect rendering.
- * @param Tx The Transform object to be composed with the current
+ * @param xform The Transform object to be composed with the current
* transform.
* @see #setTransform
* @see AffineTransform
@@ -1606,7 +1606,6 @@
* Sets the Transform in the current graphics state.
* @param Tx The Transform object to be used in the rendering process.
* @see #transform
- * @see TransformChain
* @see AffineTransform
*/
@Override
@@ -1789,8 +1788,8 @@
* of the component, use appropriate methods of the component.
* @param color The background color that should be used in
* subsequent calls to clearRect().
- * @see getBackground
- * @see Graphics.clearRect()
+ * @see #getBackground
+ * @see Graphics#clearRect
*/
public void setBackground(Color color) {
backgroundColor = color;
@@ -1798,7 +1797,7 @@
/**
* Returns the background color used for clearing a region.
- * @see setBackground
+ * @see #setBackground
*/
public Color getBackground() {
return backgroundColor;
@@ -1806,7 +1805,7 @@
/**
* Returns the current Stroke in the Graphics2D state.
- * @see setStroke
+ * @see #setStroke
*/
public Stroke getStroke() {
return stroke;
@@ -2056,7 +2055,7 @@
* with the current transform in the Graphics2D state before being
* intersected with the current clip. This method is used to make the
* current clip smaller. To make the clip larger, use any setClip method.
- * @param p The Path to be intersected with the current clip.
+ * @param s The Path to be intersected with the current clip.
*/
public void clip(Shape s) {
s = transformShape(s);
@@ -2483,7 +2482,7 @@
* Strokes the outline of a Path using the settings of the current
* graphics state. The rendering attributes applied include the
* clip, transform, paint or color, composite and stroke attributes.
- * @param p The path to be drawn.
+ * @param s The path to be drawn.
* @see #setStroke
* @see #setPaint
* @see java.awt.Graphics#setColor
--- a/jdk/src/java.desktop/share/classes/sun/java2d/SurfaceData.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/SurfaceData.java Wed Jun 03 18:11:45 2015 -0700
@@ -939,7 +939,7 @@
* In most cases, the returned Raster might contain more pixels
* than requested.
*
- * @see useTightBBoxes
+ * @see #useTightBBoxes
*/
public abstract Raster getRaster(int x, int y, int w, int h);
@@ -952,7 +952,7 @@
* the pixels has to be made when doing a getRaster. The
* fewer pixels copied, the faster the operation will go.
*
- * @see getRaster
+ * @see #getRaster
*/
public boolean useTightBBoxes() {
// Note: The native equivalent would trigger on VISIBLE_TO_NATIVE
--- a/jdk/src/java.desktop/share/classes/sun/java2d/pipe/PixelToParallelogramConverter.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/pipe/PixelToParallelogramConverter.java Wed Jun 03 18:11:45 2015 -0700
@@ -56,7 +56,7 @@
* @param minPenSize minimum pen size for dropout control
* @param normPosition sub-pixel location to normalize endpoints
* for STROKE_NORMALIZE cases
- * @param adjustFill boolean to control whethere normalization
+ * @param adjustfill boolean to control whethere normalization
* constants are also applied to fill operations
* (normally true for non-AA, false for AA)
*/
--- a/jdk/src/java.desktop/share/classes/sun/java2d/pipe/RenderingEngine.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/pipe/RenderingEngine.java Wed Jun 03 18:11:45 2015 -0700
@@ -66,7 +66,7 @@
* line width can get before dropouts occur. Rendering with a BasicStroke
* is defined to never allow the line to have breaks, gaps, or dropouts
* even if the width is set to 0.0f, so this information allows the
- * {@link SunGraphics2D} class to detect the "thin line" case and set
+ * {@link sun.java2d.SunGraphics2D} class to detect the "thin line" case and set
* the rendering attributes accordingly.
* </dl>
* At startup the runtime will load a single instance of this class.
@@ -177,11 +177,11 @@
* The specified {@code src} {@link Shape} is widened according
* to the parameters specified by the {@link BasicStroke} object.
* Adjustments are made to the path as appropriate for the
- * {@link VALUE_STROKE_NORMALIZE} hint if the {@code normalize}
- * boolean parameter is true.
+ * {@link java.awt.RenderingHints#VALUE_STROKE_NORMALIZE} hint if the
+ * {@code normalize} boolean parameter is true.
* Adjustments are made to the path as appropriate for the
- * {@link VALUE_ANTIALIAS_ON} hint if the {@code antialias}
- * boolean parameter is true.
+ * {@link java.awt.RenderingHints#VALUE_ANTIALIAS_ON} hint if the
+ * {@code antialias} boolean parameter is true.
* <p>
* The geometry of the widened path is forwarded to the indicated
* {@link PathConsumer2D} object as it is calculated.
--- a/jdk/src/java.desktop/share/classes/sun/java2d/pipe/hw/AccelDeviceEventNotifier.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/pipe/hw/AccelDeviceEventNotifier.java Wed Jun 03 18:11:45 2015 -0700
@@ -137,7 +137,7 @@
*
* @param screen a screen number with which the device which is a source of
* the event is associated with
- * @param eventType a type of the event
+ * @param deviceEventType a type of the event
* @see #DEVICE_DISPOSED
* @see #DEVICE_RESET
*/
--- a/jdk/src/java.desktop/share/classes/sun/java2d/pipe/hw/AccelGraphicsConfig.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/pipe/hw/AccelGraphicsConfig.java Wed Jun 03 18:11:45 2015 -0700
@@ -77,7 +77,7 @@
* events.
*
* Note: a hard link to the listener may be kept so it must be explicitly
- * removed via {@link #removeDeviceEventListener()}.
+ * removed via {@link #removeDeviceEventListener}.
*
* @param l the listener
* @see AccelDeviceEventListener
--- a/jdk/src/java.desktop/share/classes/sun/java2d/pipe/hw/ContextCapabilities.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/pipe/hw/ContextCapabilities.java Wed Jun 03 18:11:45 2015 -0700
@@ -65,7 +65,7 @@
/**
* Constructs a {@code ContextCapabilities} object.
* @param caps an {@code int} representing the capabilities
- * @param a {@code String} representing the name of the adapter, or null,
+ * @param adapterId {@code String} representing the name of the adapter, or null,
* in which case the adapterId will be set to "unknown adapter".
*/
protected ContextCapabilities(int caps, String adapterId) {
--- a/jdk/src/java.desktop/share/classes/sun/java2d/pisces/PiscesCache.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/pisces/PiscesCache.java Wed Jun 03 18:11:45 2015 -0700
@@ -29,8 +29,6 @@
/**
* An object used to cache pre-rendered complex paths.
- *
- * @see PiscesRenderer#render
*/
final class PiscesCache {
--- a/jdk/src/java.desktop/share/classes/sun/java2d/pisces/PiscesRenderingEngine.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/pisces/PiscesRenderingEngine.java Wed Jun 03 18:11:45 2015 -0700
@@ -108,11 +108,11 @@
* The specified {@code src} {@link Shape} is widened according
* to the parameters specified by the {@link BasicStroke} object.
* Adjustments are made to the path as appropriate for the
- * {@link VALUE_STROKE_NORMALIZE} hint if the {@code normalize}
- * boolean parameter is true.
+ * {@link java.awt.RenderingHints#VALUE_STROKE_NORMALIZE} hint if the
+ * {@code normalize} boolean parameter is true.
* Adjustments are made to the path as appropriate for the
- * {@link VALUE_ANTIALIAS_ON} hint if the {@code antialias}
- * boolean parameter is true.
+ * {@link java.awt.RenderingHints#VALUE_ANTIALIAS_ON} hint if the
+ * {@code antialias} boolean parameter is true.
* <p>
* The geometry of the widened path is forwarded to the indicated
* {@link PathConsumer2D} object as it is calculated.
--- a/jdk/src/java.desktop/share/classes/sun/print/DialogOwner.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/print/DialogOwner.java Wed Jun 03 18:11:45 2015 -0700
@@ -45,10 +45,9 @@
private Frame dlgOwner;
/**
- * Construct a new dialog type selection enumeration value with the
- * given integer value.
+ * Construct a new dialog owner attribute with the given frame.
*
- * @param value Integer value.
+ * @param frame the frame that owns the print dialog
*/
public DialogOwner(Frame frame) {
dlgOwner = frame;
--- a/jdk/src/java.desktop/share/classes/sun/print/OpenBook.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/print/OpenBook.java Wed Jun 03 18:11:45 2015 -0700
@@ -74,8 +74,8 @@
/**
* Return the PageFormat of the page specified by 'pageIndex'.
- * @param int The zero based index of the page whose
- * PageFormat is being requested.
+ * @param pageIndex The zero based index of the page whose
+ * PageFormat is being requested.
* @return The PageFormat describing the size and orientation
*/
public PageFormat getPageFormat(int pageIndex) {
@@ -85,8 +85,8 @@
/**
* Return the Printable instance responsible for rendering
* the page specified by 'pageIndex'.
- * @param int The zero based index of the page whose
- * Printable is being requested.
+ * @param pageIndex The zero based index of the page whose
+ * Printable is being requested.
* @return The Printable that will draw the page.
*/
public Printable getPrintable(int pageIndex)
--- a/jdk/src/java.desktop/share/classes/sun/print/PSPathGraphics.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/print/PSPathGraphics.java Wed Jun 03 18:11:45 2015 -0700
@@ -126,7 +126,7 @@
* such as Hebrew and Arabic, the glyphs can be rendered from right to
* left, in which case the coordinate supplied is the location of the
* leftmost character on the baseline.
- * @param s the <code>String</code> to be rendered
+ * @param str the <code>String</code> to be rendered
* @param x, y the coordinates where the <code>String</code>
* should be rendered
* @see #setPaint
@@ -256,7 +256,7 @@
* is transformed by the supplied AffineTransform and
* drawn using PS to the printer context.
*
- * @param img The image to be drawn.
+ * @param image The image to be drawn.
* This method does nothing if <code>img</code> is null.
* @param xform Used to transform the image before drawing.
* This can be null.
--- a/jdk/src/java.desktop/share/classes/sun/print/PeekGraphics.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/print/PeekGraphics.java Wed Jun 03 18:11:45 2015 -0700
@@ -361,9 +361,9 @@
* use this font.
* @param font the font.
* @see java.awt.Graphics#getFont
- * @see java.awt.Graphics#drawChars(java.lang.String, int, int)
- * @see java.awt.Graphics#drawString(byte[], int, int, int, int)
- * @see java.awt.Graphics#drawBytes(char[], int, int, int, int)
+ * @see java.awt.Graphics#drawChars(char[], int, int, int, int)
+ * @see java.awt.Graphics#drawString(String, int, int)
+ * @see java.awt.Graphics#drawBytes(byte[], int, int, int, int)
* @since 1.0
*/
public void setFont(Font font) {
@@ -1446,7 +1446,7 @@
* Draws a string of text.
* The rendering attributes applied include the clip, transform,
* paint or color, font and composite attributes.
- * @param s The string to be drawn.
+ * @param str The string to be drawn.
* @param x,y The coordinates where the string should be drawn.
* @see #setPaint
* @see java.awt.Graphics#setColor
@@ -1548,7 +1548,7 @@
* @param comp The Composite object to be used for drawing.
* @see java.awt.Graphics#setXORMode
* @see java.awt.Graphics#setPaintMode
- * @see AlphaComposite
+ * @see java.awt.AlphaComposite
*/
public void setComposite(Composite comp) {
mGraphics.setComposite(comp);
@@ -1560,8 +1560,8 @@
* @param paint The Paint object to be used to generate color in
* the rendering process.
* @see java.awt.Graphics#setColor
- * @see GradientPaint
- * @see TexturePaint
+ * @see java.awt.GradientPaint
+ * @see java.awt.TexturePaint
*/
public void setPaint(Paint paint) {
mGraphics.setPaint(paint);
@@ -1594,7 +1594,7 @@
* Returns the preferences for the rendering algorithms.
* @param hintCategory The category of hint to be set.
* @return The preferences for rendering algorithms.
- * @see RenderingHings
+ * @see RenderingHints
*/
public Object getRenderingHint(Key hintCategory) {
return mGraphics.getRenderingHint(hintCategory);
@@ -1647,7 +1647,6 @@
* @param Tx The Transform object to be composed with the current
* transform.
* @see #setTransform
- * @see TransformChain
* @see AffineTransform
*/
public void transform(AffineTransform Tx) {
@@ -1658,7 +1657,6 @@
* Sets the Transform in the current graphics state.
* @param Tx The Transform object to be used in the rendering process.
* @see #transform
- * @see TransformChain
* @see AffineTransform
*/
public void setTransform(AffineTransform Tx) {
@@ -1700,8 +1698,8 @@
* of the component, use appropriate methods of the component.
* @param color The background color that should be used in
* subsequent calls to clearRect().
- * @see getBackground
- * @see Graphics.clearRect()
+ * @see #getBackground
+ * @see Graphics#clearRect
*/
public void setBackground(Color color) {
mGraphics.setBackground(color);
@@ -1709,7 +1707,7 @@
/**
* Returns the background color used for clearing a region.
- * @see setBackground
+ * @see #setBackground
*/
public Color getBackground() {
return mGraphics.getBackground();
@@ -1717,7 +1715,7 @@
/**
* Returns the current Stroke in the Graphics2D state.
- * @see setStroke
+ * @see #setStroke
*/
public Stroke getStroke() {
return mGraphics.getStroke();
--- a/jdk/src/java.desktop/share/classes/sun/print/PrintJob2D.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/print/PrintJob2D.java Wed Jun 03 18:11:45 2015 -0700
@@ -79,7 +79,7 @@
* A class which initiates and executes a print job using
* the underlying PrinterJob graphics conversions.
*
- * @see Toolkit#getPrintJob
+ * @see java.awt.Toolkit#getPrintJob
*
*/
public class PrintJob2D extends PrintJob implements Printable, Runnable {
@@ -750,7 +750,7 @@
* The page is sent to the printer when the graphics
* object is disposed. This graphics object will also implement
* the PrintGraphics interface.
- * @see PrintGraphics
+ * @see java.awt.PrintGraphics
*/
public Graphics getGraphics() {
@@ -937,7 +937,7 @@
* If the requested page does not exist then this method returns
* NO_SUCH_PAGE; otherwise PAGE_EXISTS is returned.
* The <code>Graphics</code> class or subclass implements the
- * {@link PrinterGraphics} interface to provide additional
+ * {@link java.awt.PrintGraphics} interface to provide additional
* information. If the <code>Printable</code> object
* aborts the print job then it throws a {@link PrinterException}.
* @param graphics the context into which the page is drawn
--- a/jdk/src/java.desktop/share/classes/sun/print/ProxyGraphics2D.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/print/ProxyGraphics2D.java Wed Jun 03 18:11:45 2015 -0700
@@ -297,9 +297,9 @@
* use this font.
* @param font the font.
* @see java.awt.Graphics#getFont
- * @see java.awt.Graphics#drawChars(java.lang.String, int, int)
- * @see java.awt.Graphics#drawString(byte[], int, int, int, int)
- * @see java.awt.Graphics#drawBytes(char[], int, int, int, int)
+ * @see java.awt.Graphics#drawChars(char[], int, int, int, int)
+ * @see java.awt.Graphics#drawString(String, int, int)
+ * @see java.awt.Graphics#drawBytes(byte[], int, int, int, int)
* @since 1.0
*/
public void setFont(Font font) {
@@ -1345,7 +1345,7 @@
* Draws a string of text.
* The rendering attributes applied include the clip, transform,
* paint or color, font and composite attributes.
- * @param s The string to be drawn.
+ * @param str The string to be drawn.
* @param x,y The coordinates where the string should be drawn.
* @see #setPaint
* @see java.awt.Graphics#setColor
@@ -1432,7 +1432,7 @@
* @param comp The Composite object to be used for drawing.
* @see java.awt.Graphics#setXORMode
* @see java.awt.Graphics#setPaintMode
- * @see AlphaComposite
+ * @see java.awt.AlphaComposite
*/
public void setComposite(Composite comp) {
mGraphics.setComposite(comp);
@@ -1444,8 +1444,8 @@
* @param paint The Paint object to be used to generate color in
* the rendering process.
* @see java.awt.Graphics#setColor
- * @see GradientPaint
- * @see TexturePaint
+ * @see java.awt.GradientPaint
+ * @see java.awt.TexturePaint
*/
public void setPaint(Paint paint) {
mGraphics.setPaint(paint);
@@ -1455,7 +1455,7 @@
* Sets the Stroke in the current graphics state.
* @param s The Stroke object to be used to stroke a Shape in
* the rendering process.
- * @see BasicStroke
+ * @see java.awt.BasicStroke
*/
public void setStroke(Stroke s) {
mGraphics.setStroke(s);
@@ -1478,7 +1478,7 @@
* Returns the preferences for the rendering algorithms.
* @param hintCategory The category of hint to be set.
* @return The preferences for rendering algorithms.
- * @see RenderingHings
+ * @see RenderingHints
*/
public Object getRenderingHint(Key hintCategory) {
return mGraphics.getRenderingHint(hintCategory);
@@ -1531,7 +1531,6 @@
* @param Tx The Transform object to be composed with the current
* transform.
* @see #setTransform
- * @see TransformChain
* @see AffineTransform
*/
public void transform(AffineTransform Tx) {
@@ -1542,7 +1541,6 @@
* Sets the Transform in the current graphics state.
* @param Tx The Transform object to be used in the rendering process.
* @see #transform
- * @see TransformChain
* @see AffineTransform
*/
public void setTransform(AffineTransform Tx) {
@@ -1584,8 +1582,8 @@
* of the component, use appropriate methods of the component.
* @param color The background color that should be used in
* subsequent calls to clearRect().
- * @see getBackground
- * @see Graphics.clearRect()
+ * @see #getBackground
+ * @see Graphics#clearRect
*/
public void setBackground(Color color) {
mGraphics.setBackground(color);
@@ -1593,7 +1591,7 @@
/**
* Returns the background color used for clearing a region.
- * @see setBackground
+ * @see #setBackground
*/
public Color getBackground() {
return mGraphics.getBackground();
@@ -1601,7 +1599,7 @@
/**
* Returns the current Stroke in the Graphics2D state.
- * @see setStroke
+ * @see #setStroke
*/
public Stroke getStroke() {
return mGraphics.getStroke();
--- a/jdk/src/java.desktop/share/classes/sun/print/ProxyPrintGraphics.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/print/ProxyPrintGraphics.java Wed Jun 03 18:11:45 2015 -0700
@@ -69,7 +69,7 @@
* <code>Graphics</code> object, but with a new translation and
* clip area.
* Refer to
- * {@link sun.print.ProxyGraphics#createGraphics}
+ * {@link sun.print.ProxyGraphics#create(int, int, int, int)}
* for a complete description of this method.
* <p>
* @param x the <i>x</i> coordinate.
--- a/jdk/src/java.desktop/share/classes/sun/print/RasterPrinterJob.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/print/RasterPrinterJob.java Wed Jun 03 18:11:45 2015 -0700
@@ -498,7 +498,7 @@
* Throws <code>PrinterException</code> if the specified service
* cannot support the <code>Pageable</code> and
* <code>Printable</code> interfaces necessary to support 2D printing.
- * @param a print service which supports 2D printing.
+ * @param service print service which supports 2D printing.
*
* @throws PrinterException if the specified service does not support
* 2D printing or no longer available.
@@ -1024,7 +1024,7 @@
* The pages in the document to be printed by this PrinterJob
* are drawn by the Printable object 'painter'. The PageFormat
* for each page is the default page format.
- * @param Printable Called to render each page of the document.
+ * @param painter Called to render each page of the document.
*/
public void setPrintable(Printable painter) {
setPageable(new OpenBook(defaultPage(new PageFormat()), painter));
@@ -1034,9 +1034,9 @@
* The pages in the document to be printed by this PrinterJob
* are drawn by the Printable object 'painter'. The PageFormat
* of each page is 'format'.
- * @param Printable Called to render each page of the document.
- * @param PageFormat The size and orientation of each page to
- * be printed.
+ * @param painter Called to render each page of the document.
+ * @param format The size and orientation of each page to
+ * be printed.
*/
public void setPrintable(Printable painter, PageFormat format) {
setPageable(new OpenBook(format, painter));
@@ -1048,7 +1048,7 @@
* Pageable instance 'document'. 'document' will be queried
* for the number of pages as well as the PageFormat and
* Printable for each page.
- * @param Pageable The document to be printed. It may not be null.
+ * @param document The document to be printed. It may not be null.
* @exception NullPointerException the Pageable passed in was null.
* @see PageFormat
* @see Printable
--- a/jdk/src/java.desktop/share/classes/sun/swing/CachedPainter.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/swing/CachedPainter.java Wed Jun 03 18:11:45 2015 -0700
@@ -89,7 +89,7 @@
* @param y Y-coordinate to render to
* @param w Width to render in
* @param h Height to render in
- * @param arg Variable arguments that will be passed to paintToImage
+ * @param args Variable arguments that will be passed to paintToImage
*/
public void paint(Component c, Graphics g, int x,
int y, int w, int h, Object... args) {
--- a/jdk/src/java.desktop/share/classes/sun/swing/UIAction.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/swing/UIAction.java Wed Jun 03 18:11:45 2015 -0700
@@ -54,7 +54,6 @@
* <code>isEnabled(Component)</code>, and be aware that the passed in
* <code>Component</code> may be null.
*
- * @see com.sun.java.swing.ExtendedAction
* @see javax.swing.Action
* @author Scott Violet
*/
--- a/jdk/src/java.desktop/share/classes/sun/swing/plaf/synth/DefaultSynthStyle.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/swing/plaf/synth/DefaultSynthStyle.java Wed Jun 03 18:11:45 2015 -0700
@@ -289,7 +289,7 @@
/**
* Sets the insets.
*
- * @param Insets.
+ * @param insets the new insets.
*/
public void setInsets(Insets insets) {
this.insets = insets;
@@ -300,7 +300,7 @@
* insets will be placed in it, otherwise a new Insets object will be
* created and returned.
*
- * @param context SynthContext identifying requestor
+ * @param state SynthContext identifying requestor
* @param to Where to place Insets
* @return Insets.
*/
@@ -435,7 +435,7 @@
* Returns the default value for a particular property. This is only
* invoked if this style doesn't define a property for <code>key</code>.
*
- * @param state SynthContext identifying requestor
+ * @param context SynthContext identifying requestor
* @param key Property being requested.
* @return Value of the named property
*/
@@ -724,8 +724,6 @@
*
* @param state Component state(s) that this StateInfo should be used
* for
- * @param painter Painter responsible for rendering
- * @param bgPainter Painter responsible for rendering the background
* @param font Font for this state
* @param colors Colors for this state
*/
--- a/jdk/src/java.desktop/share/classes/sun/swing/plaf/synth/Paint9Painter.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/swing/plaf/synth/Paint9Painter.java Wed Jun 03 18:11:45 2015 -0700
@@ -118,7 +118,7 @@
* @param dInsets Destination insets specifying the portion of the image
* will be stretched or tiled, if <code>null</code> empty
* <code>Insets</code> will be used.
- * @param paintType Specifies what type of algorithm to use in painting
+ * @param type Specifies what type of algorithm to use in painting
* @param mask Specifies portion of image to render, if
* <code>PAINT_ALL</code> is specified, any other regions
* specified will not be painted, for example
--- a/jdk/src/java.desktop/share/classes/sun/swing/text/TextComponentPrintable.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/swing/text/TextComponentPrintable.java Wed Jun 03 18:11:45 2015 -0700
@@ -212,7 +212,7 @@
* level {@code JEditorPanes}. For instance if there is a frame
* inside the frame it will return the top frame only.
*
- * @param c the container to find all frames under
+ * @param container the container to find all frames under
* @param list {@code List} to append the results too
*/
private static void getFrames(final Container container, List<JEditorPane> list) {
--- a/jdk/src/java.desktop/unix/classes/sun/awt/FcFontManager.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/FcFontManager.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -98,8 +98,7 @@
return info;
}
- protected native String getFontPathNative(boolean noType1Fonts,
- boolean isX11GE);
+ native String getFontPathNative(boolean noType1Fonts, boolean isX11GE);
protected synchronized String getFontPath(boolean noType1Fonts) {
return getFontPathNative(noType1Fonts, false);
--- a/jdk/src/java.desktop/unix/classes/sun/awt/UNIXToolkit.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/UNIXToolkit.java Wed Jun 03 18:11:45 2015 -0700
@@ -189,7 +189,7 @@
* @param stockId String which defines the stock id of the gtk item.
* For a complete list reference the API at www.gtk.org for StockItems.
* @param iconSize One of the GtkIconSize values defined in GTKConstants
- * @param textDirection One of the TextDirection values defined in
+ * @param direction One of the TextDirection values defined in
* GTKConstants
* @param detail Render detail that is passed to the native engine (feel
* free to pass null)
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XAtom.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XAtom.java Wed Jun 03 18:11:45 2015 -0700
@@ -338,7 +338,6 @@
/** Gets the window property for the specified window
* @param window window id to use
- * @param str value to set to.
* @return string with the property.
* @since 1.5
*/
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XComponentPeer.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XComponentPeer.java Wed Jun 03 18:11:45 2015 -0700
@@ -680,7 +680,6 @@
* obtained
* @return the font metrics for <code>font</code>
* @see #getFont
- * @see #getPeer
* @see java.awt.peer.ComponentPeer#getFontMetrics(Font)
* @see Toolkit#getFontMetrics(Font)
* @since 1.0
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XListPeer.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XListPeer.java Wed Jun 03 18:11:45 2015 -0700
@@ -1952,7 +1952,6 @@
* Paint the horizontal scrollbar to the screen
*
* @param g the graphics context to draw into
- * @param colors the colors used to draw the scrollbar
* @param paintAll paint the whole scrollbar if true, just the thumb if false
*/
void paintHorScrollbar(Graphics g, boolean paintAll) {
@@ -1964,7 +1963,6 @@
* Paint the vertical scrollbar to the screen
*
* @param g the graphics context to draw into
- * @param colors the colors used to draw the scrollbar
* @param paintAll paint the whole scrollbar if true, just the thumb if false
*/
void paintVerScrollbar(Graphics g, boolean paintAll) {
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XMenuBarPeer.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XMenuBarPeer.java Wed Jun 03 18:11:45 2015 -0700
@@ -222,7 +222,7 @@
}
/**
- * @see XBaseMenuWindow.map
+ * @see XBaseMenuWindow#map
*/
protected MappingData map() {
XMenuItemPeer[] itemVector = copyItems();
@@ -292,7 +292,7 @@
}
/**
- * @see XBaseMenuWindow.getSubmenuBounds
+ * @see XBaseMenuWindow#getSubmenuBounds
*/
protected Rectangle getSubmenuBounds(Rectangle itemBounds, Dimension windowSize) {
Rectangle globalBounds = toGlobal(itemBounds);
@@ -362,7 +362,7 @@
************************************************/
/**
- * @see XBaseMenuWindow.doDispose()
+ * @see XBaseMenuWindow#doDispose()
*/
protected void doDispose() {
super.doDispose();
@@ -388,7 +388,7 @@
/**
* Performs ungrabbing of input
- * @see XBaseWindow.ungrabInputImpl()
+ * @see XBaseWindow#ungrabInputImpl()
*/
void ungrabInputImpl() {
selectItem(null, false);
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XMenuItemPeer.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XMenuItemPeer.java Wed Jun 03 18:11:45 2015 -0700
@@ -437,7 +437,7 @@
* Sets mapping of item to window.
* @param bounds bounds of item in container's coordinates
* @param textOrigin point for drawString in container's coordinates
- * @see XBaseMenuWindow.map()
+ * @see XBaseMenuWindow#map()
*/
void map(Rectangle bounds, Point textOrigin) {
this.bounds = bounds;
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XMenuWindow.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XMenuWindow.java Wed Jun 03 18:11:45 2015 -0700
@@ -192,14 +192,14 @@
************************************************/
/**
- * @see XBaseMenuWindow.getParentMenuWindow()
+ * @see XBaseMenuWindow#getParentMenuWindow()
*/
protected XBaseMenuWindow getParentMenuWindow() {
return (menuPeer != null) ? menuPeer.getContainer() : null;
}
/**
- * @see XBaseMenuWindow.map()
+ * @see XBaseMenuWindow#map()
*/
protected MappingData map() {
//TODO:Implement popup-menu caption mapping and painting and tear-off
@@ -274,7 +274,7 @@
}
/**
- * @see XBaseMenuWindow.getSubmenuBounds()
+ * @see XBaseMenuWindow#getSubmenuBounds
*/
protected Rectangle getSubmenuBounds(Rectangle itemBounds, Dimension windowSize) {
Rectangle globalBounds = toGlobal(itemBounds);
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XScrollbar.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XScrollbar.java Wed Jun 03 18:11:45 2015 -0700
@@ -161,8 +161,6 @@
* paint the scrollbar
* @param g the graphics context to paint into
* @param colors the colors to use when painting the scrollbar
- * @param width the width of the scrollbar
- * @param height the height of the scrollbar
* @param paintAll paint the whole scrollbar if true, just the thumb is false
*/
void paint(Graphics g, Color colors[], boolean paintAll) {
@@ -393,7 +391,7 @@
/**
* Scroll one unit.
- * @see notifyValue
+ * @see #notifyValue
*/
void scroll() {
switch (mode) {
@@ -607,7 +605,6 @@
* @param minimum is the minimum value of the scrollbar
* @param maximum is the maximum value of the scrollbar
* @param unitSize is the unit size for increment or decrement of the value
- * @param page is the block size for increment or decrement of the value
* @see #setValues
*/
synchronized void setValues(int value, int visible, int minimum, int maximum,
@@ -631,7 +628,7 @@
/**
* Sets the value of this Scrollbar to the specified value.
- * @param value the new value of the Scrollbar. If this value is
+ * @param newValue the new value of the Scrollbar. If this value is
* below the current minimum or above the current maximum minus
* the visible amount, it becomes the new one of those values,
* respectively.
@@ -655,7 +652,7 @@
/**
* Sets the minimum value for this Scrollbar.
- * @param minimum the minimum value of the scrollbar
+ * @param newMinimum the minimum value of the scrollbar
*/
synchronized void setMinimum(int newMinimum) {
/* Use setValues so that a consistent policy
@@ -675,7 +672,7 @@
/**
* Sets the maximum value for this Scrollbar.
- * @param maximum the maximum value of the scrollbar
+ * @param newMaximum the maximum value of the scrollbar
*/
synchronized void setMaximum(int newMaximum) {
/* Use setValues so that a consistent policy
@@ -694,7 +691,7 @@
/**
* Sets the visible amount of this Scrollbar, which is the range
* of values represented by the width of the scroll bar's bubble.
- * @param visible the amount visible per page
+ * @param newAmount the amount visible per page
*/
synchronized void setVisibleAmount(int newAmount) {
setValues(val, newAmount, min, max);
@@ -759,7 +756,7 @@
/**
* Returns the scale factor for the thumbArea ( thumbAreaH / (max - min)).
- * @see #getArrowAreaSize
+ * @see #getArrowAreaWidth
*/
private double getScaleFactor(){
double f = (double)(barLength - 2*getArrowAreaWidth()) / Math.max(1,(max - min));
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XToolkit.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XToolkit.java Wed Jun 03 18:11:45 2015 -0700
@@ -616,14 +616,19 @@
}
}
}
- if( keyEventLog.isLoggable(PlatformLogger.Level.FINE) && (ev.get_type() == XConstants.KeyPress || ev.get_type() == XConstants.KeyRelease) ) {
- keyEventLog.fine("before XFilterEvent:"+ev);
+ if (keyEventLog.isLoggable(PlatformLogger.Level.FINE) && (
+ ev.get_type() == XConstants.KeyPress
+ || ev.get_type() == XConstants.KeyRelease)) {
+ keyEventLog.fine("before XFilterEvent:" + ev);
}
if (XlibWrapper.XFilterEvent(ev.getPData(), w)) {
continue;
}
- if( keyEventLog.isLoggable(PlatformLogger.Level.FINE) && (ev.get_type() == XConstants.KeyPress || ev.get_type() == XConstants.KeyRelease) ) {
- keyEventLog.fine("after XFilterEvent:"+ev); // IS THIS CORRECT?
+ if (keyEventLog.isLoggable(PlatformLogger.Level.FINE) && (
+ ev.get_type() == XConstants.KeyPress
+ || ev.get_type() == XConstants.KeyRelease)) {
+ keyEventLog.fine(
+ "after XFilterEvent:" + ev); // IS THIS CORRECT?
}
dispatchEvent(ev);
@@ -639,21 +644,28 @@
}
}
+ /**
+ * Listener installed to detect display changes.
+ */
+ private static final DisplayChangedListener displayChangedHandler =
+ new DisplayChangedListener() {
+ @Override
+ public void displayChanged() {
+ // 7045370: Reset the cached values
+ XToolkit.screenWidth = -1;
+ XToolkit.screenHeight = -1;
+ }
+
+ @Override
+ public void paletteChanged() {
+ }
+ };
+
static {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
if (ge instanceof SunGraphicsEnvironment) {
- ((SunGraphicsEnvironment)ge).addDisplayChangedListener(
- new DisplayChangedListener() {
- @Override
- public void displayChanged() {
- // 7045370: Reset the cached values
- XToolkit.screenWidth = -1;
- XToolkit.screenHeight = -1;
- }
-
- @Override
- public void paletteChanged() {}
- });
+ ((SunGraphicsEnvironment) ge).addDisplayChangedListener(
+ displayChangedHandler);
}
}
@@ -663,7 +675,9 @@
try {
XWindowAttributes pattr = new XWindowAttributes();
try {
- XlibWrapper.XGetWindowAttributes(XToolkit.getDisplay(), XToolkit.getDefaultRootWindow(), pattr.pData);
+ XlibWrapper.XGetWindowAttributes(XToolkit.getDisplay(),
+ XToolkit.getDefaultRootWindow(),
+ pattr.pData);
screenWidth = pattr.get_width();
screenHeight = pattr.get_height();
} finally {
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11FontManager.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11FontManager.java Wed Jun 03 18:11:45 2015 -0700
@@ -44,7 +44,6 @@
import sun.font.CompositeFont;
import sun.font.FontManager;
import sun.font.SunFontManager;
-import sun.font.FontConfigManager;
import sun.font.FcFontConfiguration;
import sun.font.FontAccess;
import sun.font.FontUtilities;
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11GraphicsConfig.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11GraphicsConfig.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,7 +27,6 @@
import java.awt.AWTException;
import java.awt.BufferCapabilities;
-import java.awt.BufferCapabilities.FlipContents;
import java.awt.Component;
import java.awt.Toolkit;
import java.awt.GraphicsConfiguration;
@@ -35,7 +34,6 @@
import java.awt.Image;
import java.awt.ImageCapabilities;
import java.awt.Transparency;
-import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.color.ColorSpace;
import java.awt.image.ComponentColorModel;
@@ -55,13 +53,12 @@
import sun.awt.image.OffScreenImage;
import sun.awt.image.SunVolatileImage;
import sun.awt.image.SurfaceManager;
-import sun.awt.X11ComponentPeer;
/**
* This is an implementation of a GraphicsConfiguration object for a
* single X11 visual.
*
- * @see GraphicsEnvironment
+ * @see java.awt.GraphicsEnvironment
* @see GraphicsDevice
*/
public class X11GraphicsConfig extends GraphicsConfiguration
@@ -314,7 +311,7 @@
return pGetBounds(screen.getScreen());
}
- public native Rectangle pGetBounds(int screenNum);
+ private native Rectangle pGetBounds(int screenNum);
private static class XDBECapabilities extends BufferCapabilities {
public XDBECapabilities() {
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11GraphicsDevice.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11GraphicsDevice.java Wed Jun 03 18:11:45 2015 -0700
@@ -52,10 +52,8 @@
* @see GraphicsEnvironment
* @see GraphicsConfiguration
*/
-public class X11GraphicsDevice
- extends GraphicsDevice
- implements DisplayChangedListener
-{
+public final class X11GraphicsDevice extends GraphicsDevice
+ implements DisplayChangedListener {
int screen;
HashMap<SurfaceType, Object> x11ProxyKeyMap = new HashMap<>();
@@ -201,16 +199,15 @@
/*
* Returns the depth for the given index of graphics configurations.
*/
- public native int getConfigDepth (int index, int screen);
+ private native int getConfigDepth(int index, int screen);
/*
* Returns the colormap for the given index of graphics configurations.
*/
- public native int getConfigColormap (int index, int screen);
-
+ private native int getConfigColormap(int index, int screen);
// Whether or not double-buffering extension is supported
- public static native boolean isDBESupported();
+ static native boolean isDBESupported();
// Callback for adding a new double buffer visual into our set
private void addDoubleBufferVisual(int visNum) {
doubleBufferVisuals.add(Integer.valueOf(visNum));
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11GraphicsEnvironment.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11GraphicsEnvironment.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,13 +29,6 @@
import java.awt.GraphicsDevice;
import java.awt.Point;
import java.awt.Rectangle;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileNotFoundException;
-import java.io.InputStream;
-import java.io.IOException;
-import java.io.StreamTokenizer;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
@@ -43,11 +36,6 @@
import java.util.*;
-import sun.font.MFontConfiguration;
-import sun.font.FcFontConfiguration;
-import sun.font.Font2D;
-import sun.font.FontManager;
-import sun.font.NativeFont;
import sun.java2d.SunGraphicsEnvironment;
import sun.java2d.SurfaceManagerFactory;
import sun.java2d.UnixSurfaceManagerFactory;
@@ -60,11 +48,10 @@
* for X11 environments.
*
* @see GraphicsDevice
- * @see GraphicsConfiguration
+ * @see java.awt.GraphicsConfiguration
*/
-public class X11GraphicsEnvironment
- extends SunGraphicsEnvironment
-{
+public final class X11GraphicsEnvironment extends SunGraphicsEnvironment {
+
private static final PlatformLogger log = PlatformLogger.getLogger("sun.awt.X11GraphicsEnvironment");
private static final PlatformLogger screenLog = PlatformLogger.getLogger("sun.awt.screen.X11GraphicsEnvironment");
@@ -200,7 +187,7 @@
return new X11GraphicsDevice(screennum);
}
- protected native int getDefaultScreenNum();
+ private native int getDefaultScreenNum();
/**
* Returns the default screen graphics device.
*/
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11InputMethod.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11InputMethod.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -35,16 +35,9 @@
import java.awt.Container;
import java.awt.EventQueue;
import java.awt.Window;
-import java.awt.im.InputContext;
import java.awt.im.InputMethodHighlight;
import java.awt.im.spi.InputMethodContext;
import sun.awt.im.InputMethodAdapter;
-import java.awt.event.InputEvent;
-import java.awt.event.KeyEvent;
-import java.awt.event.MouseEvent;
-import java.awt.event.FocusEvent;
-import java.awt.event.ComponentEvent;
-import java.awt.event.WindowEvent;
import java.awt.event.InputMethodEvent;
import java.awt.font.TextAttribute;
import java.awt.font.TextHitInfo;
@@ -555,7 +548,7 @@
* method is invoked from the event handler in canvas.c in the
* AWT Toolkit thread context and thus inside the AWT Lock.
* @param str committed text
- * @param long when
+ * @param when when
*/
// NOTE: This method may be called by privileged threads.
// This functionality is implemented in a package-private method
@@ -1095,7 +1088,7 @@
/*
* Native methods
*/
- protected native String resetXIC();
+ private native String resetXIC();
private native void disposeXIC();
private native boolean setCompositionEnabledNative(boolean enable);
private native boolean isCompositionEnabledNative();
--- a/jdk/src/java.desktop/unix/classes/sun/font/FontConfigManager.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/unix/classes/sun/font/FontConfigManager.java Wed Jun 03 18:11:45 2015 -0700
@@ -436,12 +436,6 @@
return (fcInfo.compFont = new CompositeFont(physFont, jdkFont));
}
- /**
- *
- * @param locale
- * @param fcFamily
- * @return
- */
public FcCompFont[] getFontConfigFonts() {
return fontConfigFonts;
}
--- a/jdk/src/java.desktop/unix/native/common/awt/utility/rect.h Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/unix/native/common/awt/utility/rect.h Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2014 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
--- a/jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_InputMethod.c Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_InputMethod.c Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -904,7 +904,6 @@
static Bool
createXIC(JNIEnv * env, X11InputMethodData *pX11IMData, Window w)
{
- XIC active_ic, passive_ic;
XVaNestedList preedit = NULL;
XVaNestedList status = NULL;
XIMStyle on_the_spot_styles = XIMPreeditCallbacks,
@@ -974,6 +973,12 @@
}
if (active_styles == on_the_spot_styles) {
+ pX11IMData->ic_passive = XCreateIC(X11im,
+ XNClientWindow, w,
+ XNFocusWindow, w,
+ XNInputStyle, passive_styles,
+ NULL);
+
callbacks = (XIMCallback *)malloc(sizeof(XIMCallback) * NCALLBACKS);
if (callbacks == (XIMCallback *)NULL)
return False;
@@ -1024,12 +1029,6 @@
NULL);
XFree((void *)preedit);
#endif /* __linux__ || MACOSX */
- pX11IMData->ic_passive = XCreateIC(X11im,
- XNClientWindow, w,
- XNFocusWindow, w,
- XNInputStyle, passive_styles,
- NULL);
-
} else {
pX11IMData->ic_active = XCreateIC(X11im,
XNClientWindow, w,
--- a/jdk/src/java.desktop/unix/native/libawt_xawt/awt/gtk2_interface.c Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/unix/native/libawt_xawt/awt/gtk2_interface.c Wed Jun 03 18:11:45 2015 -0700
@@ -1313,9 +1313,6 @@
{
result = gtk2_widgets[_GTK_COMBO_BOX_TEXT_FIELD_TYPE] =
(*fp_gtk_entry_new)();
-
- GtkSettings* settings = fp_gtk_widget_get_settings(result);
- fp_g_object_set(settings, "gtk-cursor-blink", FALSE, NULL);
}
result = gtk2_widgets[_GTK_COMBO_BOX_TEXT_FIELD_TYPE];
break;
@@ -1360,10 +1357,6 @@
{
gtk2_widgets[_GTK_ENTRY_TYPE] =
(*fp_gtk_entry_new)();
-
- GtkSettings* settings =
- fp_gtk_widget_get_settings(gtk2_widgets[_GTK_ENTRY_TYPE]);
- fp_g_object_set(settings, "gtk-cursor-blink", FALSE, NULL);
}
result = gtk2_widgets[_GTK_ENTRY_TYPE];
break;
@@ -1555,9 +1548,6 @@
{
result = gtk2_widgets[_GTK_SPIN_BUTTON_TYPE] =
(*fp_gtk_spin_button_new)(NULL, 0, 0);
-
- GtkSettings* settings = fp_gtk_widget_get_settings(result);
- fp_g_object_set(settings, "gtk-cursor-blink", FALSE, NULL);
}
result = gtk2_widgets[_GTK_SPIN_BUTTON_TYPE];
break;
@@ -2507,14 +2497,20 @@
return result;
}
-/*
+
jobject get_integer_property(JNIEnv *env, GtkSettings* settings, const gchar* key)
{
- gint intval = NULL;
-
+ gint intval = NULL;
(*fp_g_object_get)(settings, key, &intval, NULL);
return create_Integer(env, intval);
-}*/
+}
+
+jobject get_boolean_property(JNIEnv *env, GtkSettings* settings, const gchar* key)
+{
+ gint intval = NULL;
+ (*fp_g_object_get)(settings, key, &intval, NULL);
+ return create_Boolean(env, intval);
+}
jobject gtk2_get_setting(JNIEnv *env, Setting property)
{
@@ -2526,6 +2522,10 @@
return get_string_property(env, settings, "gtk-font-name");
case GTK_ICON_SIZES:
return get_string_property(env, settings, "gtk-icon-sizes");
+ case GTK_CURSOR_BLINK:
+ return get_boolean_property(env, settings, "gtk-cursor-blink");
+ case GTK_CURSOR_BLINK_TIME:
+ return get_integer_property(env, settings, "gtk-cursor-blink-time");
}
return NULL;
--- a/jdk/src/java.desktop/unix/native/libawt_xawt/awt/gtk2_interface.h Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/unix/native/libawt_xawt/awt/gtk2_interface.h Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -140,7 +140,9 @@
typedef enum _Setting
{
GTK_FONT_NAME,
- GTK_ICON_SIZES
+ GTK_ICON_SIZES,
+ GTK_CURSOR_BLINK,
+ GTK_CURSOR_BLINK_TIME
} Setting;
/* GTK types, here to eliminate need for GTK headers at compile time */
--- a/jdk/src/java.desktop/windows/classes/sun/awt/Win32FontManager.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/windows/classes/sun/awt/Win32FontManager.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -279,9 +279,9 @@
});
}
- protected static native void registerFontWithPlatform(String fontName);
+ private static native void registerFontWithPlatform(String fontName);
- protected static native void deRegisterFontWithPlatform(String fontName);
+ private static native void deRegisterFontWithPlatform(String fontName);
/**
* populate the map with the most common windows fonts.
--- a/jdk/src/java.desktop/windows/classes/sun/awt/Win32GraphicsDevice.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/windows/classes/sun/awt/Win32GraphicsDevice.java Wed Jun 03 18:11:45 2015 -0700
@@ -226,7 +226,7 @@
* are disabled. Do not call this function with an index of 0.
* @param index a PixelFormat index
*/
- protected native boolean isPixFmtSupported(int index, int screen);
+ private native boolean isPixFmtSupported(int index, int screen);
/**
* Returns the PixelFormatID of the default graphics configuration
--- a/jdk/src/java.desktop/windows/classes/sun/awt/Win32GraphicsEnvironment.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/windows/classes/sun/awt/Win32GraphicsEnvironment.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -28,19 +28,11 @@
import java.awt.AWTError;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
-import java.awt.GraphicsEnvironment;
-import java.awt.Toolkit;
import java.awt.peer.ComponentPeer;
-import java.io.File;
-import java.io.IOException;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.ListIterator;
-import java.util.NoSuchElementException;
-import java.util.StringTokenizer;
-import sun.awt.DisplayChangedListener;
-import sun.awt.SunDisplayChanger;
-import sun.awt.windows.WPrinterJob;
+
import sun.awt.windows.WToolkit;
import sun.java2d.SunGraphicsEnvironment;
import sun.java2d.SurfaceManagerFactory;
@@ -57,9 +49,8 @@
* @see GraphicsConfiguration
*/
-public class Win32GraphicsEnvironment
- extends SunGraphicsEnvironment
-{
+public final class Win32GraphicsEnvironment extends SunGraphicsEnvironment {
+
static {
// Ensure awt is loaded already. Also, this forces static init
// of WToolkit and Toolkit, which we depend upon
@@ -91,7 +82,7 @@
}
protected native int getNumScreens();
- protected native int getDefaultScreen();
+ private native int getDefaultScreen();
public GraphicsDevice getDefaultScreenDevice() {
GraphicsDevice[] screens = getScreenDevices();
--- a/jdk/src/java.desktop/windows/classes/sun/awt/shell/Win32ShellFolder2.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/windows/classes/sun/awt/shell/Win32ShellFolder2.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -163,6 +163,27 @@
}
}
+ // Known Folder data
+ static class KnownFolderDefinition {
+ String guid;
+ int category;
+ String name;
+ String description;
+ String parent;
+ String relativePath;
+ String parsingName;
+ String tooltip;
+ String localizedName;
+ String icon;
+ String security;
+ long attributes;
+ int defenitionFlags;
+ String ftidType;
+ String path;
+ String saveLocation;
+ static final List<KnownFolderDefinition> libraries = getLibraries();
+ }
+
static class FolderDisposer implements sun.java2d.DisposerRecord {
/*
* This is cached as a concession to getFolderType(), which needs
@@ -578,7 +599,22 @@
return s;
}
}
- return getDisplayNameOf(parentIShellFolder, relativePIDL, SHGDN_FORPARSING);
+ String path = getDisplayNameOf(parentIShellFolder, relativePIDL,
+ SHGDN_FORPARSING);
+ // if this is a library its default save location is taken as a path
+ // this is a temp fix until java.io starts support Libraries
+ if( path != null && path.startsWith("::{") &&
+ path.toLowerCase().endsWith(".library-ms")) {
+ for (KnownFolderDefinition kf : KnownFolderDefinition.libraries) {
+ if( path.toLowerCase().endsWith(
+ kf.relativePath.toLowerCase()) &&
+ path.toUpperCase().startsWith(
+ kf.parsingName.substring(0, 40).toUpperCase()) ) {
+ return kf.saveLocation;
+ }
+ }
+ }
+ return path;
}
// Needs to be accessible to Win32ShellFolderManager2
@@ -848,6 +884,9 @@
long relativePIDL,
int attrs);
+ // Returns data of all Known Folders registered in the system
+ private static native KnownFolderDefinition[] loadKnownFolders();
+
/**
* @return The name used to display this shell folder
*/
@@ -1178,4 +1217,26 @@
return result == null ? 0 : result;
}
}
+
+ // Extracts libraries and their default save locations from Known Folders list
+ private static List<KnownFolderDefinition> getLibraries() {
+ return invoke(new Callable<List<KnownFolderDefinition>>() {
+ @Override
+ public List<KnownFolderDefinition> call() throws Exception {
+ KnownFolderDefinition[] all = loadKnownFolders();
+ List<KnownFolderDefinition> folders = new ArrayList<>();
+ if (all != null) {
+ for (KnownFolderDefinition kf : all) {
+ if (kf.relativePath == null || kf.parsingName == null ||
+ kf.saveLocation == null) {
+ continue;
+ }
+ folders.add(kf);
+ }
+ }
+ return folders;
+ }
+ });
+ }
+
}
--- a/jdk/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java Wed Jun 03 18:11:45 2015 -0700
@@ -663,7 +663,7 @@
* This method is intentionally not synchronized as it is called while
* holding other locks.
*
- * @see sun.java2d.d3d.D3DScreenUpdateManager#validate(D3DWindowSurfaceData)
+ * @see sun.java2d.d3d.D3DScreenUpdateManager#validate
*/
public Color getBackgroundNoSync() {
return background;
--- a/jdk/src/java.desktop/windows/classes/sun/awt/windows/WObjectPeer.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/windows/classes/sun/awt/windows/WObjectPeer.java Wed Jun 03 18:11:45 2015 -0700
@@ -31,9 +31,9 @@
}
// The Windows handle for the native widget.
- long pData;
+ volatile long pData;
// if the native peer has been destroyed
- boolean destroyed = false;
+ volatile boolean destroyed = false;
// The associated AWT object.
Object target;
--- a/jdk/src/java.desktop/windows/classes/sun/awt/windows/WPathGraphics.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/windows/classes/sun/awt/windows/WPathGraphics.java Wed Jun 03 18:11:45 2015 -0700
@@ -386,7 +386,7 @@
* such as Hebrew and Arabic, the glyphs can be rendered from right to
* left, in which case the coordinate supplied is the location of the
* leftmost character on the baseline.
- * @param s the <code>String</code> to be rendered
+ * @param str the <code>String</code> to be rendered
* @param x, y the coordinates where the <code>String</code>
* should be rendered
* @see #setPaint
@@ -877,7 +877,7 @@
* is transformed by the supplied AffineTransform and
* drawn using GDI to the printer context.
*
- * @param img The image to be drawn.
+ * @param image The image to be drawn.
* @param xform Used to transform the image before drawing.
* This can be null.
* @param bgcolor This color is drawn where the image has transparent
--- a/jdk/src/java.desktop/windows/classes/sun/awt/windows/WPrinterJob.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/windows/classes/sun/awt/windows/WPrinterJob.java Wed Jun 03 18:11:45 2015 -0700
@@ -591,7 +591,7 @@
* Throws <code>PrinterException</code> if the specified service
* cannot support the <code>Pageable</code> and
* </code>Printable</code> interfaces necessary to support 2D printing.
- * @param a print service which supports 2D printing.
+ * @param service print service which supports 2D printing.
*
* @throws PrinterException if the specified service does not support
* 2D printing.
--- a/jdk/src/java.desktop/windows/classes/sun/java2d/d3d/D3DScreenUpdateManager.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/windows/classes/sun/java2d/d3d/D3DScreenUpdateManager.java Wed Jun 03 18:11:45 2015 -0700
@@ -59,7 +59,7 @@
* GDIWindowSurfaceData. A background thread handles the swap chain flips.
*
* There are some restrictions to which windows we would use this for.
- * @see #createScreenSurface()
+ * @see #createScreenSurface
*/
public class D3DScreenUpdateManager extends ScreenUpdateManager
implements Runnable
@@ -290,7 +290,7 @@
/**
* Adds a surface to the list of tracked surfaces.
*
- * @param d3dw the surface to be added
+ * @param sd the surface to be added
*/
private void trackScreenSurface(SurfaceData sd) {
if (!done && sd instanceof D3DWindowSurfaceData) {
--- a/jdk/src/java.desktop/windows/classes/sun/java2d/d3d/D3DSurfaceData.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/windows/classes/sun/java2d/d3d/D3DSurfaceData.java Wed Jun 03 18:11:45 2015 -0700
@@ -118,7 +118,7 @@
/**
* To be used with getNativeResource() only.
- * @see #getNativeResource()
+ * @see #getNativeResource
*/
public static final int D3D_DEVICE_RESOURCE= 100;
/*
--- a/jdk/src/java.desktop/windows/classes/sun/java2d/opengl/WGLSurfaceData.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/windows/classes/sun/java2d/opengl/WGLSurfaceData.java Wed Jun 03 18:11:45 2015 -0700
@@ -244,7 +244,7 @@
* Updates the layered window with the contents of the surface.
*
* @param psdops pointer to the native ogl sd structure
- * @param pData pointer to the AwtWindow peer data
+ * @param peer pointer to the AwtWindow peer data
* @param w width of the window
* @param h height of the window
* @see sun.awt.windows.TranslucentWindowPainter
--- a/jdk/src/java.desktop/windows/native/libawt/windows/ShellFolder2.cpp Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/windows/native/libawt/windows/ShellFolder2.cpp Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -64,6 +64,19 @@
//#include <sun_awt_shell_Win32ShellFolder2.h>
+#ifndef DASSERT
+#define DASSERT(x)
+#endif
+#define DEFINE_FIELD_ID(var, cls, field, type) \
+ jfieldID var = env->GetFieldID(cls, field, type); \
+ DASSERT(var != NULL); \
+ CHECK_NULL_RETURN(var, NULL);
+
+#define EXCEPTION_CHECK \
+ if(env->ExceptionCheck()) { \
+ throw std::bad_alloc(); \
+ }
+
// Shell Functions
typedef BOOL (WINAPI *DestroyIconType)(HICON);
typedef HINSTANCE (WINAPI *FindExecutableType)(LPCTSTR,LPCTSTR,LPTSTR);
@@ -1263,5 +1276,216 @@
return 0;
}
+/*
+ * Class: sun_awt_shell_Win32ShellFolder2
+ * Method: loadKnownFolders
+ * Signature: (V)[BLsun/awt/shell/Win32ShellFolder2$KnownfolderDefenition;
+ */
+JNIEXPORT jobjectArray JNICALL Java_sun_awt_shell_Win32ShellFolder2_loadKnownFolders
+ (JNIEnv* env, jclass cls )
+{
+ CoInitialize(NULL);
+ IKnownFolderManager* pkfm = NULL;
+ HRESULT hr = CoCreateInstance(CLSID_KnownFolderManager, NULL,
+ CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pkfm));
+ if (!SUCCEEDED(hr)) return NULL;
+
+ TRY;
+
+ jclass cl = env->FindClass("sun/awt/shell/Win32ShellFolder2$KnownFolderDefinition");
+ CHECK_NULL_RETURN(cl, NULL);
+ DEFINE_FIELD_ID(field_guid, cl, "guid", "Ljava/lang/String;")
+ DEFINE_FIELD_ID(field_name, cl, "name", "Ljava/lang/String;");
+ DEFINE_FIELD_ID(field_description, cl, "description", "Ljava/lang/String;");
+ DEFINE_FIELD_ID(field_parent, cl, "parent", "Ljava/lang/String;");
+ DEFINE_FIELD_ID(field_relativePath, cl, "relativePath", "Ljava/lang/String;");
+ DEFINE_FIELD_ID(field_parsingName, cl, "parsingName", "Ljava/lang/String;");
+ DEFINE_FIELD_ID(field_tooltip, cl, "tooltip", "Ljava/lang/String;");
+ DEFINE_FIELD_ID(field_localizedName, cl, "localizedName", "Ljava/lang/String;");
+ DEFINE_FIELD_ID(field_icon, cl, "icon", "Ljava/lang/String;");
+ DEFINE_FIELD_ID(field_security, cl, "security", "Ljava/lang/String;");
+ DEFINE_FIELD_ID(field_path, cl, "path", "Ljava/lang/String;");
+ DEFINE_FIELD_ID(field_saveLocation, cl, "saveLocation", "Ljava/lang/String;");
+ DEFINE_FIELD_ID(field_category, cl, "category", "I");
+ DEFINE_FIELD_ID(field_attributes, cl, "attributes", "J");
+ DEFINE_FIELD_ID(field_defenitionFlags, cl, "defenitionFlags", "I");
+ DEFINE_FIELD_ID(field_ftidType, cl, "ftidType", "Ljava/lang/String;");
+
+ jobjectArray result;
+ KNOWNFOLDERID* pFoldersIds = NULL;
+ UINT count = 0;
+ if (SUCCEEDED(pkfm->GetFolderIds(&pFoldersIds, &count))) {
+ jmethodID initMethod;
+ try {
+ result = env->NewObjectArray(count, cl, NULL);
+ initMethod = env->GetMethodID(cl, "<init>", "()V");
+ EXCEPTION_CHECK
+ } catch (std::bad_alloc&) {
+ CoTaskMemFree(pFoldersIds);
+ pkfm->Release();
+ throw;
+ }
+ for(UINT i = 0; i < count; ++i)
+ {
+ jobject fld;
+ const KNOWNFOLDERID& folderId = pFoldersIds[i];
+ LPOLESTR guid = NULL;
+ try {
+ fld = env->NewObject(cl, initMethod);
+ if (fld) {
+ env->SetObjectArrayElement(result, i, fld);
+ }
+ EXCEPTION_CHECK
+
+ if (SUCCEEDED(StringFromCLSID(folderId, &guid))) {
+ jstring jstr = JNU_NewStringPlatform(env, guid);
+ if (jstr) {
+ env->SetObjectField(fld, field_guid, jstr);
+ }
+ CoTaskMemFree(guid);
+ EXCEPTION_CHECK
+ }
+ } catch (std::bad_alloc&) {
+ CoTaskMemFree(pFoldersIds);
+ pkfm->Release();
+ throw;
+ }
+
+ IKnownFolder* pFolder = NULL;
+ if (SUCCEEDED(pkfm->GetFolder(folderId, &pFolder))) {
+ KNOWNFOLDER_DEFINITION kfDef;
+ if (SUCCEEDED(pFolder->GetFolderDefinition(&kfDef)))
+ {
+ try {
+ jstring jstr = JNU_NewStringPlatform(env, kfDef.pszName);
+ if(jstr) {
+ env->SetObjectField(fld, field_name, jstr);
+ }
+ EXCEPTION_CHECK
+ if (kfDef.pszDescription) {
+ jstr = JNU_NewStringPlatform(env, kfDef.pszDescription);
+ if (jstr) {
+ env->SetObjectField(fld, field_description, jstr);
+ }
+ EXCEPTION_CHECK
+ }
+ EXCEPTION_CHECK
+ if (SUCCEEDED(StringFromCLSID(kfDef.fidParent, &guid))) {
+ jstr = JNU_NewStringPlatform(env, guid);
+ if (jstr) {
+ env->SetObjectField(fld, field_parent, jstr);
+ }
+ CoTaskMemFree(guid);
+ EXCEPTION_CHECK
+ }
+ if (kfDef.pszRelativePath) {
+ jstr = JNU_NewStringPlatform(env, kfDef.pszRelativePath);
+ if (jstr) {
+ env->SetObjectField(fld, field_relativePath, jstr);
+ }
+ EXCEPTION_CHECK
+ }
+ if (kfDef.pszParsingName) {
+ jstr = JNU_NewStringPlatform(env, kfDef.pszParsingName);
+ if (jstr) {
+ env->SetObjectField(fld, field_parsingName, jstr);
+ }
+ EXCEPTION_CHECK
+ }
+ if (kfDef.pszTooltip) {
+ jstr = JNU_NewStringPlatform(env, kfDef.pszTooltip);
+ if (jstr) {
+ env->SetObjectField(fld, field_tooltip, jstr);
+ }
+ EXCEPTION_CHECK
+ }
+ if (kfDef.pszLocalizedName) {
+ jstr = JNU_NewStringPlatform(env, kfDef.pszLocalizedName);
+ if (jstr) {
+ env->SetObjectField(fld, field_localizedName, jstr);
+ }
+ EXCEPTION_CHECK
+ }
+ if (kfDef.pszIcon) {
+ jstr = JNU_NewStringPlatform(env, kfDef.pszIcon);
+ if (jstr) {
+ env->SetObjectField(fld, field_icon, jstr);
+ }
+ EXCEPTION_CHECK
+ }
+ if (kfDef.pszSecurity) {
+ jstr = JNU_NewStringPlatform(env, kfDef.pszSecurity);
+ if (jstr) {
+ env->SetObjectField(fld, field_security, jstr);
+ }
+ EXCEPTION_CHECK
+ }
+ if (SUCCEEDED(StringFromCLSID(kfDef.ftidType, &guid))) {
+ jstr = JNU_NewStringPlatform(env, guid);
+ if (jstr) {
+ env->SetObjectField(fld, field_ftidType, jstr);
+ }
+ CoTaskMemFree(guid);
+ EXCEPTION_CHECK
+ }
+ env->SetIntField(fld, field_category, kfDef.category);
+ env->SetIntField(fld, field_defenitionFlags, kfDef.kfdFlags);
+ env->SetLongField(fld, field_attributes, kfDef.dwAttributes);
+
+ LPWSTR folderPath = NULL;
+ if (SUCCEEDED(pFolder->GetPath(KF_FLAG_NO_ALIAS, &folderPath))
+ && folderPath) {
+ jstr = JNU_NewStringPlatform(env, folderPath);
+ if (jstr) {
+ env->SetObjectField(fld, field_path, jstr);
+ }
+ CoTaskMemFree(folderPath);
+ EXCEPTION_CHECK
+ }
+
+ IShellLibrary *plib = NULL;
+ hr = CoCreateInstance(CLSID_ShellLibrary, NULL,
+ CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&plib));
+ if (SUCCEEDED(hr)) {
+ hr = plib->LoadLibraryFromKnownFolder(folderId, STGM_READWRITE);
+ if (SUCCEEDED(hr)) {
+ IShellItem *item = NULL;
+ hr = plib->GetDefaultSaveFolder(DSFT_DETECT,
+ IID_PPV_ARGS(&item));
+ if (SUCCEEDED(hr) && item) {
+ LPWSTR loc = NULL;
+ hr = item->GetDisplayName(SIGDN_FILESYSPATH, &loc);
+ if (SUCCEEDED(hr) && loc)
+ {
+ jstr = JNU_NewStringPlatform(env, loc);
+ if (jstr) {
+ env->SetObjectField(fld, field_saveLocation, jstr);
+ }
+ CoTaskMemFree(loc);
+ }
+ item->Release();
+ }
+ }
+ plib->Release();
+ EXCEPTION_CHECK
+ }
+ FreeKnownFolderDefinitionFields(&kfDef);
+ } catch (std::bad_alloc&) {
+ FreeKnownFolderDefinitionFields(&kfDef);
+ pFolder->Release();
+ CoTaskMemFree(pFoldersIds);
+ pkfm->Release();
+ throw;
+ }
+ }
+ }
+ pFolder->Release();
+ }
+ CoTaskMemFree(pFoldersIds);
+ }
+ pkfm->Release();
+ return result;
+ CATCH_BAD_ALLOC_RET(NULL);
+}
} // extern "C"
--- a/jdk/src/java.desktop/windows/native/libawt/windows/awt_Frame.cpp Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/windows/native/libawt/windows/awt_Frame.cpp Wed Jun 03 18:11:45 2015 -0700
@@ -1864,6 +1864,7 @@
AwtFrame::activateEmbeddingTopLevelMID = env->GetMethodID(cls, "activateEmbeddingTopLevel", "()V");
DASSERT(AwtFrame::activateEmbeddingTopLevelMID != NULL);
+ CHECK_NULL(AwtFrame::activateEmbeddingTopLevelMID);
AwtFrame::isEmbeddedInIEID = env->GetFieldID(cls, "isEmbeddedInIE", "Z");
DASSERT(AwtFrame::isEmbeddedInIEID != NULL);
--- a/jdk/src/java.desktop/windows/native/libawt/windows/awt_Menu.cpp Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/windows/native/libawt/windows/awt_Menu.cpp Wed Jun 03 18:11:45 2015 -0700
@@ -239,6 +239,7 @@
}
jobject menuItem = env->CallObjectMethod(target, AwtMenu::getItemMID,
index);
+ if (!menuItem) return NULL; // menu item was removed concurrently
DASSERT(!safe_ExceptionOccurred(env));
jobject wMenuItemPeer = GetPeerForTarget(env, menuItem);
@@ -264,9 +265,9 @@
}
/* target is a java.awt.Menu */
jobject target = GetTarget(env);
-
+ if(!target || env->ExceptionCheck()) return;
int nCount = CountItem(target);
- for (int i = 0; i < nCount; i++) {
+ for (int i = 0; i < nCount && !env->ExceptionCheck(); i++) {
AwtMenuItem* awtMenuItem = GetItem(target, i);
if (awtMenuItem != NULL) {
SendDrawItem(awtMenuItem, drawInfo);
@@ -294,8 +295,9 @@
}
/* target is a java.awt.Menu */
jobject target = GetTarget(env);
+ if(!target || env->ExceptionCheck()) return;
int nCount = CountItem(target);
- for (int i = 0; i < nCount; i++) {
+ for (int i = 0; i < nCount && !env->ExceptionCheck(); i++) {
AwtMenuItem* awtMenuItem = GetItem(target, i);
if (awtMenuItem != NULL) {
SendMeasureItem(awtMenuItem, hDC, measureInfo);
--- a/jdk/src/java.desktop/windows/native/libawt/windows/awt_MenuBar.cpp Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/windows/native/libawt/windows/awt_MenuBar.cpp Wed Jun 03 18:11:45 2015 -0700
@@ -156,13 +156,16 @@
}
jobject menu = env->CallObjectMethod(target, AwtMenuBar::getMenuMID,index);
+ if (!menu) return NULL; // menu item was removed concurrently
DASSERT(!safe_ExceptionOccurred(env));
jobject menuItemPeer = GetPeerForTarget(env, menu);
PDATA pData;
- JNI_CHECK_PEER_RETURN_NULL(menuItemPeer);
+ JNI_CHECK_PEER_GOTO(menuItemPeer, done);
+
AwtMenuItem* awtMenuItem = (AwtMenuItem*)pData;
+done:
env->DeleteLocalRef(menu);
env->DeleteLocalRef(menuItemPeer);
--- a/jdk/src/java.desktop/windows/native/libawt/windows/awt_MenuItem.cpp Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/windows/native/libawt/windows/awt_MenuItem.cpp Wed Jun 03 18:11:45 2015 -0700
@@ -112,6 +112,7 @@
JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
if (m_peerObject != NULL) {
+ JNI_SET_DESTROYED(m_peerObject);
JNI_SET_PDATA(m_peerObject, NULL);
env->DeleteGlobalRef(m_peerObject);
m_peerObject = NULL;
--- a/jdk/src/java.desktop/windows/native/libawt/windows/awt_new.cpp Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/src/java.desktop/windows/native/libawt/windows/awt_new.cpp Wed Jun 03 18:11:45 2015 -0700
@@ -172,6 +172,9 @@
env->ExceptionClear();
// rethrow exception
env->Throw(xcp);
+ // temp solution to reveal all concurrency issues in jtreg and JCK
+ // we will switch it back to silent mode before the release
+ env->ExceptionDescribe();
return xcp;
}
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Component/SetEnabledPerformance/SetEnabledPerformance.java Wed Jun 03 18:11:45 2015 -0700
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.Component;
+import java.awt.FlowLayout;
+import java.awt.Frame;
+import java.awt.Robot;
+
+import javax.swing.JButton;
+import javax.swing.SwingUtilities;
+
+/**
+ * @test
+ * @bug 8071306
+ * @author Sergey Bylokhov
+ */
+public final class SetEnabledPerformance {
+
+ private static Frame frame;
+
+ private static void createAndShowGUI() {
+ frame = new Frame();
+ frame.setLayout(new FlowLayout(FlowLayout.CENTER, 25, 0));
+ frame.setSize(600, 600);
+ frame.setLocationRelativeTo(null);
+ for (int i = 1; i < 10001; ++i) {
+ frame.add(new JButton("Button " + i));
+ }
+ frame.setVisible(true);
+ }
+
+ public static void main(final String[] args) throws Exception {
+ SwingUtilities.invokeAndWait(() -> createAndShowGUI());
+ final Robot robot = new Robot();
+ robot.waitForIdle();
+ robot.mouseMove(frame.getX() + 15, frame.getY() + 300);
+ robot.waitForIdle();
+ SwingUtilities.invokeAndWait(() -> {
+ long m = System.currentTimeMillis();
+ for (final Component comp : frame.getComponents()) {
+ comp.setEnabled(false);
+ }
+ m = System.currentTimeMillis() - m;
+ System.err.println("Disabled in " + m + " ms");
+ frame.dispose();
+ // we should be much faster, but leaves 1000 for the slow systems
+ if (m > 1000) {
+ throw new RuntimeException("Too slow");
+ }
+ });
+ }
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/EventQueue/6980209/bug6980209.java Wed Jun 03 18:11:45 2015 -0700
@@ -0,0 +1,241 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/* @test
+ @bug 6980209
+ @summary Make tracking SecondaryLoop.enter/exit methods easier
+ @author Semyon Sadetsky
+ */
+
+import sun.util.logging.PlatformLogger;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+
+public class bug6980209 implements ActionListener {
+ private final static PlatformLogger log =
+ PlatformLogger.getLogger("java.awt.event.WaitDispatchSupport");
+ public static final int ATTEMPTS = 100;
+ public static final int EVENTS = 5;
+
+ private static boolean runInEDT;
+ private static JFrame frame;
+ private static int disorderCounter = 0;
+ private static Boolean enterReturn;
+ private static Boolean exitReturn;
+ private static int dispatchedEvents;
+
+ public static void main(String[] args) throws Exception {
+ System.out.println(
+ "PLEASE DO NOT TOUCH KEYBOARD AND MOUSE DURING THE TEST RUN!");
+ // log.setLevel(PlatformLogger.Level.FINE);
+ // log.setLevel(PlatformLogger.Level.FINEST);
+ try {
+ SwingUtilities.invokeAndWait(new Runnable() {
+ public void run() {
+ frame = new JFrame();
+ frame.setUndecorated(true);
+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ setup(frame);
+ }
+ });
+ testExitBeforeEnter();
+ System.out.println("Run random test in EDT");
+ runInEDT = true;
+ testRandomly();
+ System.out.println("Run random test in another thread");
+ runInEDT = false;
+ testRandomly();
+ System.out.println("ok");
+
+ } finally {
+ SwingUtilities.invokeAndWait(new Runnable() {
+ @Override
+ public void run() {
+ frame.dispose();
+ }
+ });
+ }
+ }
+
+ private static void testExitBeforeEnter() throws Exception {
+ final SecondaryLoop loop =
+ Toolkit.getDefaultToolkit().getSystemEventQueue()
+ .createSecondaryLoop();
+ loop.exit();
+ Robot robot = new Robot();
+ robot.mouseWheel(1);
+ robot.waitForIdle();
+ SwingUtilities.invokeAndWait(new Runnable() {
+ @Override
+ public void run() {
+ if(loop.enter()) {
+ throw new RuntimeException("Wrong enter() return value");
+ }
+ }
+ });
+ }
+
+ private static void testRandomly() throws AWTException {
+ disorderCounter = 0;
+ final Robot robot = new Robot();
+ for (int i = 0; i < ATTEMPTS; i++) {
+ enterReturn = null;
+ exitReturn = null;
+ dispatchedEvents = 0;
+ synchronized (bug6980209.class) {
+ try {
+ for (int j = 0; j < EVENTS; j++) {
+ robot.keyPress(KeyEvent.VK_1);
+ robot.keyRelease(KeyEvent.VK_1);
+ }
+
+ // trigger the button action that starts secondary loop
+ robot.keyPress(KeyEvent.VK_SPACE);
+ robot.keyRelease(KeyEvent.VK_SPACE);
+
+ for (int j = 0; j < EVENTS; j++) {
+ robot.keyPress(KeyEvent.VK_1);
+ robot.keyRelease(KeyEvent.VK_1);
+ }
+ long time = System.nanoTime();
+ // wait for enter() returns
+ bug6980209.class.wait(1000);
+ if (enterReturn == null) {
+ System.out.println("wait time=" +
+ ((System.nanoTime() - time) / 1E9) +
+ " seconds");
+ throw new RuntimeException(
+ "It seems the secondary loop will never end");
+ }
+ if (!enterReturn) disorderCounter++;
+
+ robot.waitForIdle();
+ if (dispatchedEvents <
+ 2 * EVENTS) { //check that all events are dispatched
+ throw new RuntimeException(
+ "KeyEvent.VK_1 has been lost!");
+ }
+
+ } catch (InterruptedException e) {
+ throw new RuntimeException("Interrupted!");
+ }
+ }
+ }
+ if (disorderCounter == 0) {
+ System.out.println(
+ "Zero disordered enter/exit caught. It is recommended to run scenario again");
+ } else {
+ System.out.println(
+ "Disordered calls is " + disorderCounter + " from " +
+ ATTEMPTS);
+ }
+ }
+
+ private static void setup(final JFrame frame) {
+ JButton jButton = new JButton("Button");
+ frame.getContentPane().add(jButton);
+ jButton.addActionListener(new bug6980209());
+ frame.pack();
+ frame.setVisible(true);
+ jButton.setFocusable(true);
+ jButton.requestFocus();
+ jButton.addKeyListener(new KeyListener() {
+ @Override
+ public void keyTyped(KeyEvent e) {
+ }
+
+ @Override
+ public void keyPressed(KeyEvent e) {
+ if (e.getKeyChar() == '1') dispatchedEvents++;
+ }
+
+ @Override
+ public void keyReleased(KeyEvent e) {
+ if (e.getKeyChar() == '1') dispatchedEvents++;
+ }
+ });
+ }
+
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if (runInEDT) {
+ runSecondaryLoop();
+ return;
+ }
+ new Thread("Secondary loop run thread") {
+ @Override
+ public void run() {
+ runSecondaryLoop();
+ }
+ }.start();
+ }
+
+ private static void runSecondaryLoop() {
+ log.fine("\n---TEST START---");
+
+ final SecondaryLoop loop =
+ Toolkit.getDefaultToolkit().getSystemEventQueue()
+ .createSecondaryLoop();
+
+ final Object LOCK = new Object(); //lock to start simultaneously
+ Thread exitThread = new Thread("Exit thread") {
+ @Override
+ public void run() {
+ synchronized (LOCK) {
+ LOCK.notify();
+ }
+ Thread.yield();
+ exitReturn = loop.exit();
+ log.fine("exit() returns " + exitReturn);
+ }
+ };
+
+ synchronized (LOCK) {
+ try {
+ exitThread.start();
+ LOCK.wait();
+ } catch (InterruptedException e1) {
+ throw new RuntimeException("What?");
+ }
+ }
+
+ enterReturn = loop.enter();
+ log.fine("enter() returns " + enterReturn);
+
+ try {
+ exitThread.join();
+ } catch (InterruptedException e) {
+ throw new RuntimeException("What?");
+ }
+ synchronized (bug6980209.class) {
+ bug6980209.class.notifyAll();
+ }
+ log.fine("\n---TEST END---");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/FileDialog/8003399/bug8003399.java Wed Jun 03 18:11:45 2015 -0700
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/* @test
+ @bug 8003399
+ @summary JFileChooser gives wrong path to selected file when saving to Libraries folder on Windows 7
+ @author Semyon Sadetsky
+ @library /lib/testlibrary
+ @build jdk.testlibrary.OSInfo
+ @run main bug8003399
+ */
+
+import jdk.testlibrary.OSInfo;
+
+import javax.swing.filechooser.FileSystemView;
+import java.io.File;
+
+public class bug8003399 {
+
+ public static void main(String[] args) throws Exception {
+ if (OSInfo.getOSType() == OSInfo.OSType.WINDOWS &&
+ OSInfo.getWindowsVersion().compareTo(OSInfo.WINDOWS_VISTA) > 0 ) {
+ FileSystemView fsv = FileSystemView.getFileSystemView();
+ for (File file : fsv.getFiles(fsv.getHomeDirectory(), false)) {
+ if(file.isDirectory()) {
+ for (File file1 : fsv.getFiles(file, false)) {
+ if(file1.isDirectory())
+ {
+ String path = file1.getPath();
+ if(path.startsWith("::{") &&
+ path.toLowerCase().endsWith(".library-ms")) {
+ throw new RuntimeException("Unconverted library link found");
+ }
+ }
+ }
+ }
+ }
+ }
+ System.out.println("ok");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Frame/MaximizedToUnmaximized/MaximizedToUnmaximized.java Wed Jun 03 18:11:45 2015 -0700
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+import java.awt.Frame;
+import java.awt.GraphicsConfiguration;
+import java.awt.GraphicsEnvironment;
+import java.awt.Insets;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.Toolkit;
+
+/**
+ * @test
+ * @bug 8065739
+ * @summary [macosx] Frame warps to lower left of screen when displayed
+ * @author Alexandr Scherbatiy
+ */
+public class MaximizedToUnmaximized {
+
+ public static void main(String[] args) throws Exception {
+ testFrame(false);
+ testFrame(true);
+ }
+
+ static void testFrame(boolean isUndecorated) throws Exception {
+ Frame frame = new Frame();
+ try {
+ Robot robot = new Robot();
+ robot.setAutoDelay(100);
+
+ frame.setUndecorated(isUndecorated);
+ GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment()
+ .getDefaultScreenDevice().getDefaultConfiguration();
+ Rectangle bounds = gc.getBounds();
+ Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(gc);
+ int x = bounds.x + insets.left;
+ int y = bounds.y + insets.top;
+ int width = bounds.width - insets.left - insets.right;
+ int height = bounds.height - insets.top - insets.bottom;
+ Rectangle rect = new Rectangle(x, y, width, height);
+ frame.pack();
+ frame.setBounds(rect);
+ frame.setVisible(true);
+ robot.waitForIdle();
+ robot.delay(500);
+
+ if (frame.getWidth() <= width / 2
+ || frame.getHeight() <= height / 2) {
+ throw new RuntimeException("Frame size is small!");
+ }
+
+ if (!isUndecorated && frame.getExtendedState() != Frame.MAXIMIZED_BOTH) {
+ throw new RuntimeException("Frame state does not equal"
+ + " MAXIMIZED_BOTH!");
+ }
+ } finally {
+ frame.dispose();
+ }
+ }
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Frame/SetMaximizedBounds/MaximizedMovedWindow.java Wed Jun 03 18:11:45 2015 -0700
@@ -0,0 +1,127 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+import java.awt.*;
+
+/*
+ * @test
+ * @bug 8065739
+ * @summary Moved window is maximazed to new screen
+ * @author Alexandr Scherbatiy
+ *
+ * @run main MaximizedMovedWindow
+ */
+public class MaximizedMovedWindow {
+
+ public static void main(String[] args) throws Exception {
+
+ //Supported platforms are Windows and OS X.
+ String os = System.getProperty("os.name").toLowerCase();
+ if (!os.contains("os x")) {
+ return;
+ }
+
+ if (!Toolkit.getDefaultToolkit().
+ isFrameStateSupported(Frame.MAXIMIZED_BOTH)) {
+ return;
+ }
+
+ GraphicsEnvironment ge = GraphicsEnvironment.
+ getLocalGraphicsEnvironment();
+
+ if (ge.isHeadlessInstance()) {
+ return;
+ }
+
+ GraphicsDevice[] devices = ge.getScreenDevices();
+
+ if (devices.length < 2) {
+ return;
+ }
+
+ Frame frame = null;
+ try {
+
+ GraphicsConfiguration gc1 = devices[0].getDefaultConfiguration();
+ GraphicsConfiguration gc2 = devices[1].getDefaultConfiguration();
+
+ Robot robot = new Robot();
+ robot.setAutoDelay(50);
+
+ frame = new Frame();
+ Rectangle maxArea1 = getMaximizedScreenArea(gc1);
+ frame.setBounds(getSmallerRectangle(maxArea1));
+ frame.setVisible(true);
+ robot.waitForIdle();
+
+ frame.setExtendedState(Frame.MAXIMIZED_BOTH);
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ Rectangle bounds = frame.getBounds();
+ if (!bounds.equals(maxArea1)) {
+ throw new RuntimeException("The bounds of the Frame do not equal"
+ + " to screen 1 size");
+ }
+
+ frame.setExtendedState(Frame.NORMAL);
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ Rectangle maxArea2 = getMaximizedScreenArea(gc2);
+ frame.setBounds(getSmallerRectangle(maxArea2));
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ frame.setExtendedState(Frame.MAXIMIZED_BOTH);
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ bounds = frame.getBounds();
+ if (!bounds.equals(maxArea2)) {
+ throw new RuntimeException("The bounds of the Frame do not equal"
+ + " to screen 2 size");
+ }
+ } finally {
+ if (frame != null) {
+ frame.dispose();
+ }
+ }
+ }
+
+ static Rectangle getSmallerRectangle(Rectangle rect) {
+ return new Rectangle(
+ rect.x + rect.width / 6,
+ rect.y + rect.height / 6,
+ rect.width / 3,
+ rect.height / 3);
+ }
+ static Rectangle getMaximizedScreenArea(GraphicsConfiguration gc) {
+ Rectangle bounds = gc.getBounds();
+ Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(gc);
+ return new Rectangle(
+ bounds.x + insets.left,
+ bounds.y + insets.top,
+ bounds.width - insets.left - insets.right,
+ bounds.height - insets.top - insets.bottom);
+ }
+}
--- a/jdk/test/java/awt/Frame/SetMaximizedBounds/SetMaximizedBounds.java Thu Jun 04 00:19:16 2015 +0000
+++ b/jdk/test/java/awt/Frame/SetMaximizedBounds/SetMaximizedBounds.java Wed Jun 03 18:11:45 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -22,67 +22,108 @@
*/
import java.awt.*;
-
/*
* @test
* @summary When Frame.setExtendedState(Frame.MAXIMIZED_BOTH)
* is called for a Frame after been called setMaximizedBounds() with
* certain value, Frame bounds must equal to this value.
*
- * @library ../../../../lib/testlibrary
- * @build ExtendedRobot
* @run main SetMaximizedBounds
*/
public class SetMaximizedBounds {
- Frame frame;
- Rectangle bound;
- boolean supported;
- ExtendedRobot robot;
- static Rectangle max = new Rectangle(100,100,400,400);
+ public static void main(String[] args) throws Exception {
+
+ //Supported platforms are Windows and OS X.
+ String os = System.getProperty("os.name").toLowerCase();
+ if (!os.contains("windows") && !os.contains("os x")) {
+ return;
+ }
+
+ if (!Toolkit.getDefaultToolkit().
+ isFrameStateSupported(Frame.MAXIMIZED_BOTH)) {
+ return;
+ }
- public void doTest() throws Exception {
- robot = new ExtendedRobot();
+ GraphicsEnvironment ge = GraphicsEnvironment.
+ getLocalGraphicsEnvironment();
+
+ if (ge.isHeadlessInstance()) {
+ return;
+ }
+
+ for (GraphicsDevice gd : ge.getScreenDevices()) {
+ for (GraphicsConfiguration gc : gd.getConfigurations()) {
+ testMaximizedBounds(gc);
+ }
+ }
+ }
- EventQueue.invokeAndWait( () -> {
- frame = new Frame( "TestFrame ");
- frame.setLayout(new FlowLayout());
+ static void testMaximizedBounds(GraphicsConfiguration gc) throws Exception {
+
+ Frame frame = null;
+ try {
+
+ Rectangle maxArea = getMaximizedScreenArea(gc);
+
+ Robot robot = new Robot();
+ robot.setAutoDelay(50);
- if (Toolkit.getDefaultToolkit().isFrameStateSupported(Frame.MAXIMIZED_BOTH)) {
- supported = true;
- frame.setMaximizedBounds(max);
- } else {
- supported = false;
+ frame = new Frame();
+ Rectangle maximizedBounds = new Rectangle(
+ maxArea.x + maxArea.width / 6,
+ maxArea.y + maxArea.height / 6,
+ maxArea.width / 3,
+ maxArea.height / 3);
+ frame.setMaximizedBounds(maximizedBounds);
+ frame.setSize(maxArea.width / 8, maxArea.height / 8);
+ frame.setVisible(true);
+ robot.waitForIdle();
+
+ frame.setExtendedState(Frame.MAXIMIZED_BOTH);
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ Rectangle bounds = frame.getBounds();
+ if (!bounds.equals(maximizedBounds)) {
+ throw new RuntimeException("The bounds of the Frame do not equal to what"
+ + " is specified when the frame is in Frame.MAXIMIZED_BOTH state");
}
- frame.setSize(200, 200);
- frame.setVisible(true);
- });
+ frame.setExtendedState(Frame.NORMAL);
+ robot.waitForIdle();
+ robot.delay(1000);
- robot.waitForIdle(2000);
- if (supported) {
- EventQueue.invokeAndWait( () -> {
- frame.setExtendedState(Frame.MAXIMIZED_BOTH);
- });
- robot.waitForIdle(2000);
- bound = frame.getBounds();
- if(!bound.equals(max))
+ maximizedBounds = new Rectangle(
+ maxArea.x + maxArea.width / 10,
+ maxArea.y + maxArea.height / 10,
+ maxArea.width / 5,
+ maxArea.height / 5);
+ frame.setMaximizedBounds(maximizedBounds);
+ frame.setExtendedState(Frame.MAXIMIZED_BOTH);
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ bounds = frame.getBounds();
+ if (!bounds.equals(maximizedBounds)) {
throw new RuntimeException("The bounds of the Frame do not equal to what"
- + " is specified when the frame is in Frame.MAXIMIZED_BOTH state");
- } else {
- System.out.println("Frame.MAXIMIZED_BOTH not supported");
+ + " is specified when the frame is in Frame.MAXIMIZED_BOTH state");
+ }
+ } finally {
+ if (frame != null) {
+ frame.dispose();
+ }
}
-
- frame.dispose();
}
- public static void main(String[] args) throws Exception {
- String os = System.getProperty("os.name").toLowerCase();
- System.out.println(os);
- if (os.contains("windows") || os.contains("os x"))
- new SetMaximizedBounds().doTest();
- else
- System.out.println("Platform "+os+" is not supported. Supported platforms are Windows and OS X.");
+ static Rectangle getMaximizedScreenArea(GraphicsConfiguration gc) {
+ Rectangle bounds = gc.getBounds();
+ Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(gc);
+ return new Rectangle(
+ bounds.x + insets.left,
+ bounds.y + insets.top,
+ bounds.width - insets.left - insets.right,
+ bounds.height - insets.top - insets.bottom);
}
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Mouse/MouseDragEvent/MouseDraggedTest.java Wed Jun 03 18:11:45 2015 -0700
@@ -0,0 +1,103 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+/*
+ * @test
+ * @bug 8080137
+ * @summary Dragged events for extra mouse buttons (4,5,6) are not generated
+ * on JSplitPane
+ * @author alexandr.scherbatiy area=awt.event
+ * @run main MouseDraggedTest
+ */
+public class MouseDraggedTest {
+
+ private static JFrame frame;
+ private static Rectangle frameBounds;
+ private static volatile boolean mouseDragged;
+
+ public static void main(String[] args) throws Exception {
+ try {
+ Robot robot = new Robot();
+ robot.setAutoDelay(50);
+
+ SwingUtilities.invokeAndWait(MouseDraggedTest::createAndShowGUI);
+ robot.waitForIdle();
+
+ SwingUtilities.invokeAndWait(() -> frameBounds = frame.getBounds());
+ robot.waitForIdle();
+
+ for (int i = 1; i <= MouseInfo.getNumberOfButtons(); i++) {
+ testMouseDrag(i, robot);
+ }
+ } finally {
+ SwingUtilities.invokeLater(() -> {
+ if (frame != null) {
+ frame.dispose();
+ }
+ });
+ }
+ }
+
+ private static void testMouseDrag(int button, Robot robot) {
+
+ mouseDragged = false;
+ int x1 = frameBounds.x + frameBounds.width / 4;
+ int y1 = frameBounds.y + frameBounds.height / 4;
+ int x2 = frameBounds.x + frameBounds.width / 2;
+ int y2 = frameBounds.y + frameBounds.height / 2;
+
+ robot.mouseMove(x1, y1);
+ robot.waitForIdle();
+
+ int buttonMask = InputEvent.getMaskForButton(button);
+ robot.mousePress(buttonMask);
+ robot.mouseMove(x2, y2);
+ robot.mouseRelease(buttonMask);
+ robot.waitForIdle();
+
+ if (!mouseDragged) {
+ throw new RuntimeException("Mouse button " + button
+ + " is not dragged");
+ }
+ }
+
+ static void createAndShowGUI() {
+
+ frame = new JFrame();
+ frame.setSize(400, 400);
+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ JPanel panel = new JPanel(new BorderLayout());
+ panel.addMouseMotionListener(new MouseAdapter() {
+
+ @Override
+ public void mouseDragged(MouseEvent e) {
+ mouseDragged = true;
+ }
+ });
+ frame.add(panel, BorderLayout.CENTER);
+ frame.setVisible(true);
+ }
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/MouseInfo/GetPointerInfoTest.java Wed Jun 03 18:11:45 2015 -0700
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ @test
+ @summary unit test for getPointerInfo() from MouseInfo class
+ @author dav@sparc.spb.su: area=
+ @bug 4009555
+ @run main GetPointerInfoTest
+*/
+
+import java.awt.*;
+
+/**
+ * Simply check the result on non-null and results are correct.
+ */
+public class GetPointerInfoTest {
+ private static final String successStage = "Test stage completed.Passed.";
+
+ public static void main(String[] args) throws Exception {
+ GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
+ GraphicsDevice[] gds = ge.getScreenDevices();
+ int gdslen = gds.length;
+ System.out.println("There are " + gdslen + " Graphics Devices");
+ if (gdslen == 0) {
+ System.out.println("Nothing to be done.");
+ return;
+ }
+ Robot robot = new Robot(gds[0]);
+ robot.setAutoDelay(0);
+ robot.setAutoWaitForIdle(true);
+ robot.delay(10);
+ robot.waitForIdle();
+ Point p = new Point(101, 99);
+ robot.mouseMove(p.x, p.y);
+
+ PointerInfo pi = MouseInfo.getPointerInfo();
+ if (pi == null) {
+ throw new RuntimeException("Test failed. getPointerInfo() returned null value.");
+ } else {
+ System.out.println(successStage);
+ }
+ Point piLocation = pi.getLocation();
+
+ if (piLocation.x != p.x || piLocation.y != p.y) {
+ throw new RuntimeException("Test failed.getPointerInfo() returned incorrect result.");
+ } else {
+ System.out.println(successStage);
+ }
+
+ System.out.println("Test PASSED.");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/MouseInfo/MultiscreenPointerInfo.java Wed Jun 03 18:11:45 2015 -0700
@@ -0,0 +1,90 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ @test
+ @summary unit test for getPointerInfo() from MouseInfo class
+ @author prs@sparc.spb.su: area=
+ @bug 4009555
+ @run main MultiscreenPointerInfo
+*/
+
+import java.awt.*;
+
+/**
+ * Simply check the result on non-null and results are correct.
+ */
+public class MultiscreenPointerInfo
+{
+ private static final String successStage = "Test stage completed.Passed.";
+
+ public static void main(String[] args) throws Exception {
+ GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
+ GraphicsDevice[] gds = ge.getScreenDevices();
+ int gdslen = gds.length;
+ System.out.println("There are " + gdslen + " Graphics Devices");
+ if (gdslen < 2) {
+ System.out.println("Nothing to be done. PASSED automatically.");
+ return;
+ }
+ Rectangle rx = gds[1].getDefaultConfiguration().getBounds();
+ Robot robot;
+
+ if (rx.x == 0 && rx.y == 0) {
+ // Assuming independent graphics devices
+ robot = new Robot(gds[1]);
+ } else {
+ // Means we have a virtual device
+ robot = new Robot(gds[0]);
+ }
+ robot.setAutoDelay(0);
+ robot.setAutoWaitForIdle(true);
+ robot.delay(10);
+ robot.waitForIdle();
+ Point p = new Point(rx.x + 101, rx.y + 99);
+ robot.mouseMove(p.x, p.y);
+ PointerInfo pi = MouseInfo.getPointerInfo();
+ if (pi == null) {
+ throw new RuntimeException("Test failed. getPointerInfo() returned null value.");
+ } else {
+ System.out.println(successStage);
+ }
+
+ Point piLocation = pi.getLocation();
+
+ if (piLocation.x != p.x || piLocation.y != p.y) {
+ throw new RuntimeException("Test failed.getPointerInfo() returned incorrect location.");
+ } else {
+ System.out.println(successStage);
+ }
+
+ GraphicsDevice dev = pi.getDevice();
+
+ if (dev != gds[1]) {
+ throw new RuntimeException("Test failed.getPointerInfo() returned incorrect device.");
+ } else {
+ System.out.println(successStage);
+ }
+ System.out.println("Test PASSED.");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Robot/RobotWheelTest/RobotWheelTest.java Wed Jun 03 18:11:45 2015 -0700
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+import java.awt.Button;
+import java.awt.Frame;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import jdk.testlibrary.OSInfo;
+
+/*
+ * @test 1.2 98/08/05
+ * @bug 4373478 8079255
+ * @summary Test mouse wheel functionality of Robot
+ * @author bchristi: area=Robot
+ * @library ../../../../lib/testlibrary
+ * @build jdk.testlibrary.OSInfo
+ * @run main RobotWheelTest
+ */
+public class RobotWheelTest {
+
+ private static final int NUMTESTS = 20;
+ private static volatile int wheelRotation;
+
+ public static void main(String[] args) throws Exception {
+
+ Frame frame = null;
+ try {
+ int wheelSign = OSInfo.getOSType().equals(OSInfo.OSType.MACOSX) ? -1 : 1;
+
+ frame = new Frame();
+ frame.setSize(200, 200);
+ Button button = new Button("WheelButton");
+ button.addMouseWheelListener(e -> wheelRotation = e.getWheelRotation());
+ frame.add(button);
+ frame.setVisible(true);
+
+ Robot robot = new Robot();
+ robot.setAutoDelay(100);
+ robot.waitForIdle();
+
+ Rectangle bounds = frame.getBounds();
+ int centerX = bounds.x + bounds.width / 2;
+ int centerY = bounds.y + bounds.height / 2;
+ robot.mouseMove(centerX, centerY);
+ robot.waitForIdle();
+
+ for (int i = -NUMTESTS; i <= NUMTESTS; i++) {
+ if (i == 0) {
+ continue;
+ }
+ robot.mouseWheel(i);
+ robot.waitForIdle();
+ if (i != wheelSign * wheelRotation) {
+ throw new RuntimeException("wheelRotation = " + wheelRotation
+ + ", expected value = " + i);
+ }
+ }
+ } finally {
+ if (frame != null) {
+ frame.dispose();
+ }
+ }
+ }
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Scrollbar/ScrollbarMouseWheelTest/ScrollbarMouseWheelTest.java Wed Jun 03 18:11:45 2015 -0700
@@ -0,0 +1,180 @@
+/*
+ * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * @test
+ * @bug 4449139
+ * @summary test MouseWheelEvent generation by Scrollbar component
+ */
+public final class ScrollbarMouseWheelTest
+ implements MouseWheelListener, WindowListener {
+
+ final static String tk = Toolkit.getDefaultToolkit().getClass().getName();
+ final static int REPS = 5;
+ // There is a bug on Windows: 4616935.
+ // Wheel events comes to every component in the hierarchy so we should
+ // check a platform.
+ // There are two scrollbars within one Panel and both accept 5 clicks, so
+ // Panel would accept 5*2 clicks on Windows.
+ final static int PANEL_REPS = tk.equals("sun.awt.windows.WToolkit")? REPS * 2: REPS;
+
+ Scrollbar sb1;
+ Scrollbar sb2;
+ Panel pnl;
+ class Sema {
+ boolean flag;
+ boolean getVal() { return flag;}
+ void setVal(boolean b) { flag = b;}
+ }
+ Sema sema = new Sema();
+
+ Robot robot;
+
+ int sb1upevents, sb2upevents, pnlupevents;
+ int sb1downevents, sb2downevents, pnldownevents;
+
+ public static void main(final String[] args) {
+ new ScrollbarMouseWheelTest().test();
+ }
+
+ public void test() {
+ // Move mouse to upper-right area
+ try {
+ robot = new Robot();
+ } catch (AWTException e) {
+ System.out.println("Problem creating Robot. FAIL.");
+ throw new RuntimeException("Problem creating Robot. FAIL.");
+
+ }
+
+ robot.setAutoDelay(500);
+ robot.setAutoWaitForIdle(true);
+
+ // Show test Frame
+ Frame frame = new Frame("ScrollbarMouseWheelTest");
+ frame.addWindowListener(this);
+ pnl = new Panel();
+ pnl.setLayout(new GridLayout(1, 2));
+ pnl.addMouseWheelListener(this);
+ sb1 = new Scrollbar();
+ sb1.addMouseWheelListener(this);
+ pnl.add(sb1);
+ sb2 = new Scrollbar();
+ pnl.add(sb2);
+ frame.add(pnl);
+ frame.setSize(200, 400);
+ frame.setLocationRelativeTo(null);
+ frame.setVisible(true);
+ frame.toFront();
+
+ // When Frame is active, start testing (handled in windowActivated())
+ while (true) {
+ synchronized (sema) {
+ if (sema.getVal()) {
+ break;
+ }
+ }
+ }
+ // up on sb1
+ testComp(sb1, true);
+ // down on sb1
+ testComp(sb1, false);
+ // up on sb2
+ testComp(sb2, true);
+ // down on sb2
+ testComp(sb2, false);
+ frame.dispose();
+ System.out.println("Test done.");
+ if (sb1upevents == REPS &&
+ sb2upevents == 0 &&
+ pnlupevents == PANEL_REPS &&
+ sb1downevents == REPS &&
+ sb2downevents == 0 &&
+ pnldownevents == PANEL_REPS) {
+ System.out.println("PASSED.");
+ } else {
+ System.out.println("Test Failed:" +
+ "\n\tsb1upevents =" + sb1upevents +
+ "\n\tsb2upevents = " + sb2upevents +
+ "\n\tpnlupevents = " + pnlupevents +
+ "\n\tsb1downevents =" + sb1downevents +
+ "\n\tsb2downevents = " + sb2downevents +
+ "\n\tpnldownevents = " + pnldownevents);
+ throw new RuntimeException("Test FAILED.");
+ }
+ }
+
+ public void testComp(Component comp, boolean up) {
+ Point loc = comp.getLocationOnScreen();
+ robot.mouseMove(loc.x + comp.getWidth() / 2,
+ loc.y + comp.getHeight() / 2);
+ for (int loop = 0; loop < REPS; loop++) {
+ System.out.println("Robot.mouseWheel() on " + comp.getName());
+ robot.mouseWheel(up ? -1 : 1);
+ }
+ }
+
+ public void mouseWheelMoved(MouseWheelEvent mwe) {
+ Component src = mwe.getComponent();
+ System.out.println("mouseWheelMoved() on " + src.getName());
+ if (mwe.getWheelRotation() == -1) {
+ if (src == sb1) {
+ sb1upevents++;
+ } else if (src == sb2) {
+ sb2upevents++;
+ } else if (src == pnl) {
+ pnlupevents++;
+ } else {
+ System.out.println("weird source component");
+ }
+ } else if (mwe.getWheelRotation() == 1) {
+ if (src == sb1) {
+ sb1downevents++;
+ } else if (src == sb2) {
+ sb2downevents++;
+ } else if (src == pnl) {
+ pnldownevents++;
+ } else {
+ System.out.println("weird source component");
+ }
+ } else {
+ System.out.println("weird wheel rotation");
+ }
+ }
+
+ public void windowActivated(WindowEvent we) {
+ synchronized (sema) {
+ sema.setVal(true);
+ }
+ }
+
+ public void windowClosed(WindowEvent we) {}
+ public void windowClosing(WindowEvent we) {}
+ public void windowDeactivated(WindowEvent we) {}
+ public void windowDeiconified(WindowEvent we) {}
+ public void windowIconified(WindowEvent we) {}
+ public void windowOpened(WindowEvent we) {}
+}// class ScrollbarMouseWheelTest
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/font/OpenType/OpticalBoundsTagTest.java Wed Jun 03 18:11:45 2015 -0700
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+import java.awt.font.OpenType;
+import java.io.IOException;
+
+/**
+ * @test
+ * @bug 8077584
+ * @summary Test for TAG_OPBD tag. Should be unique and not same as TAG_MORT.
+ * @run main OpticalBoundsTagTest
+ */
+
+public class OpticalBoundsTagTest {
+
+ public static void main(String[] a) throws Exception {
+
+ int tag_opbd = java.awt.font.OpenType.TAG_OPBD;
+ if (tag_opbd == java.awt.font.OpenType.TAG_MORT) {
+ System.out.println("Test failed: TAG_OPBD:" + tag_opbd);
+ throw new RuntimeException("TAG_OPBD same as TAG_MORT");
+ } else {
+ System.out.println("Test passed: TAG_OPBD: " + tag_opbd);
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/print/attribute/URLPDFPrinting.java Wed Jun 03 18:11:45 2015 -0700
@@ -0,0 +1,117 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 4899773
+ * @summary Test for DocFlavor.URL.PDF support. No exception should be thrown.
+ * @run main URLPDFPrinting
+*/
+
+import java.awt.*;
+import javax.print.*;
+import javax.print.attribute.standard.*;
+import javax.print.attribute.*;
+import java.io.*;
+import java.util.Locale;
+import java.net.URL;
+
+public class URLPDFPrinting {
+ /**
+ * Constructor
+ */
+ public URLPDFPrinting() {
+ super();
+ }
+ /**
+ * Starts the application.
+ */
+ public static void main(java.lang.String[] args) {
+ URLPDFPrinting pd = new URLPDFPrinting();
+ PrintService service[] = null, defService = null;
+
+ service = PrintServiceLookup.lookupPrintServices(DocFlavor.URL.PDF, null);
+ if (service.length == 0) {
+ System.out.println("No PrintService support DocFlavor.URL.PDF");
+ return;
+ } else {
+ defService = service[0];
+ System.out.println("Print Service which supports DocFlavor.URL.PDF: "+defService);
+ }
+
+ System.out.println("is DocFlavor.URL.PDF supported? "+defService.isDocFlavorSupported(DocFlavor.URL.PDF));
+ HashPrintRequestAttributeSet prSet = new HashPrintRequestAttributeSet();
+ prSet.add(new Destination(new File("./dest.prn").toURI()));
+
+ DocPrintJob pj = defService.createPrintJob();
+ PrintDocument prDoc = new PrintDocument();
+ try {
+ pj.print(prDoc, prSet);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ }
+}
+
+class PrintDocument implements Doc {
+ InputStream fStream = null;
+ DocFlavor flavor = null;
+ HashDocAttributeSet docSet = new HashDocAttributeSet();
+ URL url = null;
+
+ public PrintDocument() {
+ try {
+ url = PrintDocument.class.getResource("hello.pdf");
+ try{ Thread.sleep(6000); }catch(Exception e){ e.printStackTrace();}
+ fStream = url.openStream();
+ System.out.println("URL input stream "+fStream);
+ } catch(Exception e) {
+ e.printStackTrace();
+ }
+ docSet.add(OrientationRequested.LANDSCAPE);
+ }
+
+ public DocAttributeSet getAttributes() {
+ System.out.println("getAttributes called");
+ return docSet;
+ }
+
+ public DocFlavor getDocFlavor() {
+ System.out.println("getDocFlavor called");
+ return DocFlavor.URL.PDF;
+ }
+
+ public Object getPrintData(){
+ System.out.println("getPrintData called");
+ return url;
+ }
+
+ public Reader getReaderForText() {
+ return null;
+ }
+
+ public InputStream getStreamForBytes() {
+ System.out.println("getStreamForBytes called");
+ return fStream;
+ }
+}
Binary file jdk/test/javax/print/attribute/hello.pdf has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/GroupLayout/8079640/bug8079640.java Wed Jun 03 18:11:45 2015 -0700
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/* @test
+ @bug 8079640
+ @summary GroupLayout incorrect layout with large JTextArea
+ @author Semyon Sadetsky
+ */
+
+
+import javax.swing.*;
+import java.awt.*;
+
+public class bug8079640 {
+
+ private static JFrame frame;
+ private static JComponent comp2;
+
+ public static void main(String[] args) throws Exception {
+
+ try {
+ SwingUtilities.invokeAndWait(new Runnable() {
+ @Override
+ public void run() {
+ frame = new JFrame("A Frame");
+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ frame.setUndecorated(true);
+ setup(frame);
+ frame.setVisible(true);
+ }
+ });
+
+ test();
+ System.out.println("ok");
+
+ } finally {
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ frame.dispose();
+ }
+ });
+ }
+ }
+
+ private static void test() throws Exception {
+ SwingUtilities.invokeAndWait(new Runnable() {
+ @Override
+ public void run() {
+ if(comp2.getLocation().getY() > frame.getHeight())
+ throw new RuntimeException("GroupLayout fails: comp2 is out of the window");
+ }
+ });
+ }
+
+
+ static void setup(JFrame frame) {
+ JPanel panel = new JPanel();
+ JComponent comp1 = new JLabel("Test Label 1");
+ comp1.setMinimumSize(new Dimension(1000, 40000));
+ comp1.setPreferredSize(new Dimension(1000, 40000));
+ JScrollPane scroll = new JScrollPane(comp1);
+ comp2 = new JLabel("Test Label 2");
+ GroupLayout layout = new GroupLayout(panel);
+ layout.setHorizontalGroup(
+ layout.createParallelGroup(GroupLayout.Alignment.LEADING)
+ .addComponent(scroll)
+ .addComponent(comp2));
+ layout.setVerticalGroup(
+ layout.createSequentialGroup()
+ .addComponent(scroll)
+ .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(comp2));
+ panel.setLayout(layout);
+ frame.getContentPane().add(panel, BorderLayout.CENTER);
+ frame.setSize(800, 600);
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JComboBox/8033069/bug8033069NoScrollBar.java Wed Jun 03 18:11:45 2015 -0700
@@ -0,0 +1,182 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.AWTException;
+import java.awt.Dimension;
+import java.awt.GridLayout;
+import java.awt.Point;
+import java.awt.Robot;
+import java.awt.event.InputEvent;
+import javax.swing.JComboBox;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.UIManager.LookAndFeelInfo;
+import javax.swing.UnsupportedLookAndFeelException;
+
+/* @test
+ * @bug 8033069
+ * @summary Checks that JComboBox popup does not close when mouse wheel is
+ * rotated over combo box and over its popup. The case where popup
+ * has no scroll bar.
+ * @library ../../regtesthelpers
+ * @build Util
+ * @run main bug8033069NoScrollBar
+ * @author Alexey Ivanov
+ */
+public class bug8033069NoScrollBar implements Runnable {
+
+ private static final String[] NO_SCROLL_ITEMS = new String[] {
+ "A", "B", "C", "D", "E", "F"
+ };
+
+ private final Robot robot;
+
+ private final String[] items;
+
+ private JFrame frame;
+ private JComboBox cb1;
+ private JComboBox cb2;
+
+ public static void main(String[] args) throws Exception {
+ iterateLookAndFeels(new bug8033069NoScrollBar(NO_SCROLL_ITEMS));
+ }
+
+ protected static void iterateLookAndFeels(final bug8033069NoScrollBar test) throws Exception {
+ LookAndFeelInfo[] lafInfo = UIManager.getInstalledLookAndFeels();
+ for (LookAndFeelInfo info : lafInfo) {
+ try {
+ UIManager.setLookAndFeel(info.getClassName());
+ System.out.println("Look and Feel: " + info.getClassName());
+ test.runTest();
+ } catch (UnsupportedLookAndFeelException e) {
+ System.out.println("Skipping unsupported LaF: " + info);
+ }
+ }
+ }
+
+ public bug8033069NoScrollBar(String[] items) throws AWTException {
+ this.items = items;
+
+ robot = new Robot();
+ robot.setAutoDelay(200);
+ }
+
+ private void setupUI() {
+ frame = new JFrame();
+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+ cb1 = new JComboBox<>(items);
+ cb2 = new JComboBox<>(items);
+ JPanel panel = new JPanel(new GridLayout(1, 2));
+ panel.add(cb1);
+ panel.add(cb2);
+
+ frame.add(panel);
+
+ frame.pack();
+ frame.setVisible(true);
+ }
+
+ public void runTest() throws Exception {
+ try {
+ SwingUtilities.invokeAndWait(this);
+
+ robot.waitForIdle();
+ assertFalse("cb1 popup is visible",
+ Util.invokeOnEDT(cb1::isPopupVisible));
+
+ // Move mouse pointer to the center of the fist combo box
+ Point p = cb1.getLocationOnScreen();
+ Dimension d = cb1.getSize();
+ robot.mouseMove(p.x + d.width / 2, p.y + d.height / 2);
+ // Click it to open popup
+ robot.mousePress(InputEvent.BUTTON1_MASK);
+ robot.mouseRelease(InputEvent.BUTTON1_MASK);
+
+ robot.waitForIdle();
+ assertTrue("cb1 popup is not visible",
+ Util.invokeOnEDT(cb1::isPopupVisible));
+
+ robot.mouseWheel(1);
+ robot.waitForIdle();
+ assertTrue("cb1 popup is not visible after mouse wheel up on combo box",
+ Util.invokeOnEDT(cb1::isPopupVisible));
+
+ robot.mouseWheel(-1);
+ robot.waitForIdle();
+ assertTrue("cb1 popup is not visible after mouse wheel down on combo box",
+ Util.invokeOnEDT(cb1::isPopupVisible));
+
+ // Move mouse down on the popup
+ robot.mouseMove(p.x + d.width / 2, p.y + d.height * 3);
+
+ robot.mouseWheel(1);
+ robot.waitForIdle();
+ assertTrue("cb1 popup is not visible after mouse wheel up on popup",
+ Util.invokeOnEDT(cb1::isPopupVisible));
+
+ robot.mouseWheel(-1);
+ robot.waitForIdle();
+ assertTrue("cb1 popup is not visible after mouse wheel down on popup",
+ Util.invokeOnEDT(cb1::isPopupVisible));
+
+
+ // Move mouse pointer to the center of the second combo box
+ p = cb2.getLocationOnScreen();
+ d = cb2.getSize();
+ robot.mouseMove(p.x + d.width / 2, p.y + d.height / 2);
+
+ robot.mouseWheel(1);
+ robot.waitForIdle();
+ assertFalse("cb1 popup is visible after mouse wheel up on cb2",
+ Util.invokeOnEDT(cb1::isPopupVisible));
+ } finally {
+ if (frame != null) {
+ frame.dispose();
+ }
+ }
+
+ System.out.println("Test passed");
+ }
+
+ @Override
+ public void run() {
+ setupUI();
+ }
+
+ private static void assertTrue(String message, boolean value) {
+ assertEquals(message, true, value);
+ }
+
+ private static void assertFalse(String message, boolean value) {
+ assertEquals(message, false, value);
+ }
+
+ private static void assertEquals(String message, boolean expected, boolean actual) {
+ if (expected != actual) {
+ throw new RuntimeException(message);
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JComboBox/8033069/bug8033069ScrollBar.java Wed Jun 03 18:11:45 2015 -0700
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.AWTException;
+
+/* @test
+ * @bug 8033069
+ * @summary Checks that JComboBox popup does not close when mouse wheel is
+ * rotated over combo box and over its popup. The case where
+ * popup has scroll bar.
+ * @library ../../regtesthelpers
+ * @build Util
+ * @run main bug8033069ScrollBar
+ * @author Alexey Ivanov
+ */
+public class bug8033069ScrollBar extends bug8033069NoScrollBar {
+
+ private static final String[] SCROLL_ITEMS = new String[] {
+ "A", "B", "C", "D", "E", "F",
+ "G", "H", "I", "J", "K", "L",
+ "M", "N", "O", "P", "Q", "R"
+ };
+
+ public static void main(String[] args) throws Exception {
+ iterateLookAndFeels(new bug8033069ScrollBar(SCROLL_ITEMS));
+ }
+
+ public bug8033069ScrollBar(String[] items) throws AWTException {
+ super(items);
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JFileChooser/8080628/bug8080628.java Wed Jun 03 18:11:45 2015 -0700
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.util.Locale;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.UIManager.LookAndFeelInfo;
+
+import sun.swing.SwingUtilities2;
+
+/*
+ * @test
+ * @bug 8080628
+ * @summary No mnemonics on Open and Save buttons in JFileChooser.
+ * @author Alexey Ivanov
+ * @run main bug8080628
+ */
+public class bug8080628 {
+ public static final String[] MNEMONIC_KEYS = new String[] {
+ "FileChooser.saveButtonMnemonic",
+ "FileChooser.openButtonMnemonic",
+ "FileChooser.cancelButtonMnemonic",
+ "FileChooser.directoryOpenButtonMnemonic"
+ };
+
+ public static final Locale[] LOCALES = new Locale[] {
+ new Locale("en"),
+ new Locale("de"),
+ new Locale("es"),
+ new Locale("fr"),
+ new Locale("it"),
+ new Locale("ja"),
+ new Locale("ko"),
+ new Locale("pt", "BR"),
+ new Locale("sv"),
+ new Locale("zh", "CN"),
+ new Locale("zh", "TW")
+ };
+
+ private static volatile Exception exception;
+
+ public static void main(String[] args) throws Exception {
+ SwingUtilities.invokeAndWait(new Runnable() {
+ @Override
+ public void run() {
+ runTest();
+ }
+ });
+
+ if (exception != null) {
+ throw exception;
+ }
+ }
+
+ private static void runTest() {
+ try {
+ LookAndFeelInfo[] lafInfo = UIManager.getInstalledLookAndFeels();
+ for (LookAndFeelInfo info : lafInfo) {
+ UIManager.setLookAndFeel(info.getClassName());
+
+ for (Locale locale : LOCALES) {
+ for (String key : MNEMONIC_KEYS) {
+ int mnemonic = SwingUtilities2.getUIDefaultsInt(key, locale);
+ if (mnemonic != 0) {
+ throw new RuntimeException("No mnemonic expected (" + mnemonic + ") " +
+ "for '" + key + "' " +
+ "in locale '" + locale + "' " +
+ "in Look-and-Feel '"
+ + UIManager.getLookAndFeel().getClass().getName() + "'");
+ }
+ }
+ }
+ }
+ System.out.println("Test passed");
+ } catch (Exception e) {
+ exception = e;
+ }
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JRadioButton/8075609/bug8075609.java Wed Jun 03 18:11:45 2015 -0700
@@ -0,0 +1,115 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+ /*
+ * @test
+ * @library ../../regtesthelpers
+ * @build Util
+ * @bug 8075609
+ * @summary IllegalArgumentException when transferring focus from JRadioButton using tab
+ * @author Vivi An
+ * @run main bug8075609
+ */
+
+import javax.swing.*;
+import javax.swing.event.*;
+import java.awt.event.*;
+import java.awt.*;
+import sun.awt.SunToolkit;
+
+public class bug8075609 {
+ private static Robot robot;
+ private static SunToolkit toolkit;
+ private static JTextField textField;
+
+ public static void main(String args[]) throws Throwable {
+ SwingUtilities.invokeAndWait(new Runnable() {
+ public void run() {
+ createAndShowGUI();
+ }
+ });
+
+ robot = new Robot();
+ Thread.sleep(100);
+
+ robot.setAutoDelay(100);
+ toolkit = (SunToolkit) Toolkit.getDefaultToolkit();
+
+ // Radio button group tab key test
+ runTest1();
+ }
+
+ private static void createAndShowGUI() {
+ JFrame mainFrame = new JFrame("Bug 8075609 - 1 test");
+
+ JPanel rootPanel = new JPanel();
+ rootPanel.setLayout(new BorderLayout());
+
+ JPanel formPanel = new JPanel();
+ formPanel.setFocusTraversalPolicy(new LayoutFocusTraversalPolicy());
+ formPanel.setFocusCycleRoot(true);
+
+ JRadioButton option1 = new JRadioButton("Option 1", true);
+ JRadioButton option2 = new JRadioButton("Option 2");
+
+ ButtonGroup radioButtonGroup = new ButtonGroup();
+ radioButtonGroup.add(option1);
+ radioButtonGroup.add(option2);
+
+ formPanel.add(option1);
+ formPanel.add(option2);
+ textField = new JTextField("Another focusable component");
+ formPanel.add(textField);
+
+ rootPanel.add(formPanel, BorderLayout.CENTER);
+
+ JButton okButton = new JButton("OK");
+ rootPanel.add(okButton, BorderLayout.SOUTH);
+
+ mainFrame.add(rootPanel);
+ mainFrame.pack();
+ mainFrame.setVisible(true);
+ mainFrame.toFront();
+ }
+
+ // Radio button Group as a single component when traversing through tab key
+ private static void runTest1() throws Exception{
+ hitKey(robot, KeyEvent.VK_TAB);
+
+ robot.setAutoDelay(1000 );
+ SwingUtilities.invokeAndWait(new Runnable() {
+ public void run() {
+ if (textField.hasFocus()) {
+ System.out.println("Radio Button Group Go To Next Component through Tab Key failed");
+ throw new RuntimeException("Focus is not on textField as Expected");
+ }
+ }
+ });
+ }
+
+ private static void hitKey(Robot robot, int keycode) {
+ robot.keyPress(keycode);
+ robot.keyRelease(keycode);
+ toolkit.realSync();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JRootPane/SilenceOfDeprecatedMenuBar/SilenceOfDeprecatedMenuBar.java Wed Jun 03 18:11:45 2015 -0700
@@ -0,0 +1,90 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import javax.swing.JFrame;
+import javax.swing.JMenuBar;
+import javax.swing.JRootPane;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+
+import static javax.swing.UIManager.getInstalledLookAndFeels;
+
+/**
+ * @test
+ * @bug 6368321
+ * @author Sergey Bylokhov
+ */
+public final class SilenceOfDeprecatedMenuBar implements Runnable {
+
+ public static void main(final String[] args) throws Exception {
+ for (final UIManager.LookAndFeelInfo laf : getInstalledLookAndFeels()) {
+ SwingUtilities.invokeAndWait(() -> setLookAndFeel(laf));
+ SwingUtilities.invokeAndWait(new SilenceOfDeprecatedMenuBar());
+ }
+ }
+
+ @Override
+ public void run() {
+ final JFrame frame = new DeprecatedFrame();
+ try {
+ final JMenuBar bar = new JMenuBar();
+ frame.setJMenuBar(bar);
+ frame.setBounds(100, 100, 100, 100);
+ frame.setLocationRelativeTo(null);
+ frame.setVisible(true);
+ if (bar != frame.getJMenuBar()) {
+ throw new RuntimeException("Wrong JMenuBar");
+ }
+ } finally {
+ frame.dispose();
+ }
+ }
+
+ private static void setLookAndFeel(final UIManager.LookAndFeelInfo laf) {
+ try {
+ UIManager.setLookAndFeel(laf.getClassName());
+ System.out.println("LookAndFeel: " + laf.getClassName());
+ } catch (ClassNotFoundException | InstantiationException |
+ UnsupportedLookAndFeelException | IllegalAccessException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ private static class DeprecatedFrame extends JFrame {
+
+ @Override
+ protected JRootPane createRootPane() {
+ return new JRootPane() {
+ @Override
+ public JMenuBar getMenuBar() {
+ throw new RuntimeException("Should not be here");
+ }
+ @Override
+ public void setMenuBar(final JMenuBar menu) {
+ throw new RuntimeException("Should not be here");
+ }
+ };
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JSpinner/WrongEditorTextFieldFont/WrongEditorTextFieldFont.java Wed Jun 03 18:11:45 2015 -0700
@@ -0,0 +1,114 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.FlowLayout;
+import java.awt.Font;
+
+import javax.swing.JFrame;
+import javax.swing.JSpinner;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.UIResource;
+
+import static javax.swing.JSpinner.*;
+import static javax.swing.UIManager.getInstalledLookAndFeels;
+
+/**
+ * @test
+ * @bug 5036022
+ * @author Sergey Bylokhov
+ */
+public class WrongEditorTextFieldFont implements Runnable {
+
+ private static final Font USERS_FONT = new Font("dialog", Font.BOLD, 41);
+
+ public static void main(final String[] args) throws Exception {
+ for (final UIManager.LookAndFeelInfo laf : getInstalledLookAndFeels()) {
+ SwingUtilities.invokeAndWait(() -> setLookAndFeel(laf));
+ SwingUtilities.invokeAndWait(new WrongEditorTextFieldFont());
+ }
+ }
+
+ @Override
+ public void run() {
+ final JFrame frame1 = new JFrame();
+ try {
+ testDefaultFont(frame1);
+ } finally {
+ frame1.dispose();
+ }
+ }
+
+ private static void testDefaultFont(final JFrame frame) {
+ final JSpinner spinner = new JSpinner();
+ final JSpinner spinner_u = new JSpinner();
+ frame.setLayout(new FlowLayout(FlowLayout.CENTER, 50, 50));
+ frame.getContentPane().add(spinner);
+ frame.getContentPane().add(spinner_u);
+ frame.pack();
+ frame.setLocationRelativeTo(null);
+ frame.setVisible(true);
+ final DefaultEditor ed = (DefaultEditor) spinner.getEditor();
+ final DefaultEditor ed_u = (DefaultEditor) spinner_u.getEditor();
+ ed_u.getTextField().setFont(USERS_FONT);
+
+ for (int i = 5; i < 40; i += 5) {
+ /*
+ * Validate that the font of the text field is changed to the
+ * font of JSpinner if the font of text field was not set by the
+ * user.
+ */
+ final Font tff = ed.getTextField().getFont();
+ if (!(tff instanceof UIResource)) {
+ throw new RuntimeException("Font must be UIResource");
+ }
+ if (spinner.getFont().getSize() != tff.getSize()) {
+ throw new RuntimeException("Rrong size");
+ }
+ spinner.setFont(new Font("dialog", Font.BOLD, i));
+ /*
+ * Validate that the font of the text field is NOT changed to the
+ * font of JSpinner if the font of text field was set by the user.
+ */
+ final Font tff_u = ed_u.getTextField().getFont();
+ if (tff_u instanceof UIResource || !tff_u.equals(USERS_FONT)) {
+ throw new RuntimeException("Font must NOT be UIResource");
+ }
+ if (spinner_u.getFont().getSize() == tff_u.getSize()) {
+ throw new RuntimeException("Wrong size");
+ }
+ spinner_u.setFont(new Font("dialog", Font.BOLD, i));
+ }
+ }
+
+ private static void setLookAndFeel(final UIManager.LookAndFeelInfo laf) {
+ try {
+ UIManager.setLookAndFeel(laf.getClassName());
+ System.out.println("LookAndFeel: " + laf.getClassName());
+ } catch (ClassNotFoundException | InstantiationException |
+ UnsupportedLookAndFeelException | IllegalAccessException e) {
+ throw new RuntimeException(e);
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JTextArea/TextViewOOM/TextViewOOM.java Wed Jun 03 18:11:45 2015 -0700
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.EventQueue;
+
+import javax.swing.JFrame;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+
+/**
+ * @test
+ * @bug 8072775
+ * @run main/othervm -Xmx80m TextViewOOM
+ */
+public class TextViewOOM {
+
+ private static JFrame frame;
+ private static JTextArea ta;
+ private static final String STRING = "\uDC00\uD802\uDFFF";
+ private static final int N = 5000;
+
+ private static void createAndShowGUI() {
+ frame = new JFrame();
+ final JScrollPane jScrollPane1 = new JScrollPane();
+ ta = new JTextArea();
+
+ ta.setEditable(false);
+ ta.setColumns(20);
+ ta.setRows(5);
+ jScrollPane1.setViewportView(ta);
+ frame.add(ta);
+
+ frame.pack();
+ frame.setLocationRelativeTo(null);
+ frame.setVisible(true);
+ }
+
+ public static void main(final String[] args) throws Exception {
+ /* Create and display the form */
+ EventQueue.invokeAndWait(TextViewOOM::createAndShowGUI);
+ for (int i = 0; i < 10; i++) {
+ System.gc();
+ Thread.sleep(1000);
+ }
+ long mem = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
+ System.err.println("Memory before creating the text: "+mem);
+ final StringBuilder sb = new StringBuilder(N * STRING.length());
+ for (int i = 0; i < N; i++) {
+ sb.append(STRING);
+ }
+ for (int i = 0; i < 10; i++) {
+ System.gc();
+ Thread.sleep(1000);
+ }
+ mem = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
+ System.err.println("Memory after creating the text: "+mem);
+
+ EventQueue.invokeAndWait(() -> {
+ ta.setText(sb.toString());
+ for (int i = 0; i < 10; i++) {
+ System.gc();
+ try {Thread.sleep(200);} catch (InterruptedException iex) {}
+ }
+ long mem1 = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
+ System.err.println("Memory after setting the text: " + mem1);
+ });
+ for (int i = 0; i < 10; i++) {
+ System.gc();
+ Thread.sleep(1000);
+ }
+ mem = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
+ System.err.println("Final memory after everything: " + mem);
+ EventQueue.invokeAndWait(frame::dispose);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/RepaintManager/DisplayListenerLeak/DisplayListenerLeak.java Wed Jun 03 18:11:45 2015 -0700
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.EventQueue;
+import java.awt.GraphicsEnvironment;
+
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+
+import sun.java2d.SunGraphicsEnvironment;
+
+/**
+ * @test
+ * @bug 8041654
+ * @run main/othervm -Xmx80m DisplayListenerLeak
+ */
+public final class DisplayListenerLeak {
+
+ private static JFrame frame;
+ private volatile static boolean failed = false;
+
+ private static void createAndShowGUI() {
+ Thread.currentThread().setUncaughtExceptionHandler((t, e) -> {
+ e.printStackTrace();
+ failed = true;
+ });
+ frame = new JFrame();
+ JLabel emptyLabel = new JLabel("");
+ emptyLabel.setPreferredSize(new Dimension(600, 400));
+ frame.getContentPane().add(emptyLabel, BorderLayout.CENTER);
+ frame.pack();
+ frame.setVisible(true);
+ }
+
+ public static void main(final String[] args) throws Exception {
+ GraphicsEnvironment ge =
+ GraphicsEnvironment.getLocalGraphicsEnvironment();
+ if (!(ge instanceof SunGraphicsEnvironment)) {
+ return;
+ }
+ EventQueue.invokeAndWait(() -> createAndShowGUI());
+ SunGraphicsEnvironment sge = (SunGraphicsEnvironment) ge;
+ final long startTime = System.nanoTime();
+ while (!failed) {
+ if (System.nanoTime() - startTime > 60_000_000_000L) {
+ break;
+ }
+ System.gc(); // clear all weak references
+ EventQueue.invokeAndWait(() -> {
+ frame.setSize(frame.getHeight(), frame.getWidth());
+ frame.pack();
+ });
+ EventQueue.invokeAndWait(sge::displayChanged);
+ }
+ EventQueue.invokeAndWait(frame::dispose);
+ if (failed) {
+ throw new RuntimeException();
+ }
+ }
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/plaf/basic/BasicComboPopup/7072653/bug7072653.java Wed Jun 03 18:11:45 2015 -0700
@@ -0,0 +1,127 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/* @test
+ @bug 7072653
+ @summary JComboBox popup mispositioned if its height exceeds the screen height
+ @author Semyon Sadetsky
+ */
+
+
+import javax.swing.*;
+import javax.swing.event.PopupMenuEvent;
+import javax.swing.event.PopupMenuListener;
+import java.awt.*;
+import java.awt.Toolkit;
+
+public class bug7072653 {
+
+ private static JComboBox combobox;
+ private static JFrame frame;
+
+ public static void main(String[] args) throws Exception {
+ try {
+ SwingUtilities.invokeAndWait(new Runnable() {
+ @Override
+ public void run() {
+ frame = new JFrame("JComboBox Test");
+ setup(frame);
+ }
+ });
+ test();
+ }
+ finally {
+ frame.dispose();
+ }
+
+ }
+
+ static void setup(JFrame frame) {
+
+
+ frame.setUndecorated(true);
+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+ frame.setSize(320, 200);
+
+ frame.getContentPane().setLayout(new FlowLayout());
+
+ combobox = new JComboBox(new DefaultComboBoxModel() {
+ public Object getElementAt(int index) { return "Element " + index; }
+ public int getSize() {
+ return 1000;
+ }
+ });
+
+
+ combobox.setMaximumRowCount(100);
+ frame.getContentPane().add(combobox);
+
+ frame.setVisible(true);
+
+ }
+
+ static void test() throws Exception{
+ SwingUtilities.invokeAndWait(new Runnable() {
+ @Override
+ public void run() {
+ combobox.addPopupMenuListener(new PopupMenuListener() {
+ @Override
+ public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
+ }
+
+ @Override
+ public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
+ int height = 0;
+ for (Window window : JFrame.getWindows()) {
+ if (Window.Type.POPUP == window.getType()) {
+ height = window.getSize().height;
+ break;
+ }
+ }
+ GraphicsConfiguration gc =
+ combobox.getGraphicsConfiguration();
+ Insets screenInsets = Toolkit.getDefaultToolkit()
+ .getScreenInsets(gc);
+
+ if (height == gc.getBounds().height - screenInsets.top -
+ screenInsets.bottom ) {
+ System.out.println("ok");
+ return;
+ }
+ throw new RuntimeException(
+ "Popup window height is wrong " + height);
+ }
+
+ @Override
+ public void popupMenuCanceled(PopupMenuEvent e) {
+ }
+ });
+ combobox.setPopupVisible(true);
+ combobox.setPopupVisible(false);
+ }
+ });
+ }
+
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/plaf/basic/BasicLabelUI/bug7172652.java Wed Jun 03 18:11:45 2015 -0700
@@ -0,0 +1,172 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/* @test
+ @bug 7172652
+ @summary With JDK 1.7 text field does not obtain focus when using mnemonic Alt/Key combin
+ @author Semyon Sadetsky
+ @library /lib/testlibrary
+ @build jdk.testlibrary.OSInfo
+ @run main bug7172652
+ */
+
+import javax.swing.*;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import java.awt.*;
+import java.awt.event.KeyEvent;
+import jdk.testlibrary.OSInfo;
+
+public class bug7172652 {
+
+ private static JMenu menu;
+ private static JFrame frame;
+ private static Boolean selected;
+
+ public static void main(String[] args) throws Exception {
+ if (OSInfo.getOSType() != OSInfo.OSType.WINDOWS) {
+ System.out.println("ok");
+ return;
+ }
+ UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+ SwingUtilities.invokeAndWait(new Runnable() {
+ @Override
+ public void run() {
+ setup();
+ }
+ });
+
+ test();
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ frame.dispose();
+ }
+ });
+ }
+
+ private static void test() throws Exception {
+ SwingUtilities.invokeAndWait(new Runnable() {
+ @Override
+ public void run() {
+ menu.getModel().addChangeListener(new ChangeListener() {
+ @Override
+ public void stateChanged(ChangeEvent e) {
+ selected = menu.isSelected();
+ }
+ });
+ }
+ });
+
+ Robot robot = new Robot();
+ robot.setAutoDelay(200);
+
+ robot.keyPress(KeyEvent.VK_ALT);
+ robot.keyPress(KeyEvent.VK_F);
+ robot.keyRelease(KeyEvent.VK_F);
+ robot.keyRelease(KeyEvent.VK_ALT);
+
+ robot.waitForIdle();
+ if( selected != null ) {
+ throw new RuntimeException("Menu is notified selected= " + selected);
+ }
+
+ robot.keyPress(KeyEvent.VK_ALT);
+ robot.keyPress(KeyEvent.VK_F);
+ robot.keyRelease(KeyEvent.VK_F);
+ robot.keyRelease(KeyEvent.VK_ALT);
+ if( selected != null ) {
+ throw new RuntimeException("Menu is notified selected= " + selected);
+ }
+
+ robot.waitForIdle();
+
+ robot.keyPress(KeyEvent.VK_ALT);
+ robot.keyPress(KeyEvent.VK_F);
+ robot.keyRelease(KeyEvent.VK_F);
+ robot.keyRelease(KeyEvent.VK_ALT);
+ if( selected != null ) {
+ throw new RuntimeException("Menu is notified selected= " + selected);
+ }
+
+ robot.waitForIdle();
+
+ robot.keyPress(KeyEvent.VK_ALT);
+ robot.keyPress(KeyEvent.VK_F);
+ robot.keyRelease(KeyEvent.VK_F);
+ robot.keyRelease(KeyEvent.VK_ALT);
+ if( selected != null ) {
+ throw new RuntimeException("Menu is notified selected= " + selected);
+ }
+
+ robot.waitForIdle();
+
+ System.out.printf("ok");
+ }
+
+ private static void setup() {
+ JLabel firstLbl = new JLabel("First name");
+ JLabel lastLbl = new JLabel("Last name");
+ JMenuBar menuBar = new JMenuBar();
+
+ JTextField firstTxtFld = new JTextField(20);
+ JTextField lastTxtFld = new JTextField(20);
+ JDesktopPane desktopPane = new JDesktopPane();
+ JInternalFrame iframe = new JInternalFrame("A frame", true, true, true, true);
+
+ // Set an initial size
+ iframe.setSize(200, 220);
+
+ // By default, internal frames are not visible; make it visible
+ iframe.setVisible(true);
+
+ JPanel pane = new JPanel();
+ pane.setLayout(new FlowLayout());
+
+ pane.add(firstLbl);
+ pane.add(firstTxtFld);
+ pane.add(lastLbl);
+ pane.add(lastTxtFld);
+
+ firstLbl.setLabelFor(firstTxtFld);
+ firstLbl.setDisplayedMnemonic('F');
+
+ lastLbl.setLabelFor(lastTxtFld);
+ lastLbl.setDisplayedMnemonic('L');
+
+ iframe.getContentPane().add(pane);
+ iframe.setJMenuBar(menuBar);
+ menu = new JMenu("FirstMenu");
+ //m.setMnemonic('i');
+ menuBar.add(menu);
+ desktopPane.add(iframe);
+
+ frame = new JFrame();
+ frame.setUndecorated(true);
+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ frame.getContentPane().add(desktopPane);
+ frame.setSize(300, 300);
+ frame.setVisible(true);
+ }
+
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/plaf/basic/BasicTextUI/8001470/bug8001470.java Wed Jun 03 18:11:45 2015 -0700
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/* @test
+ @bug 8001470
+ @summary JTextField's size is computed incorrectly when it contains Indic or Thai characters
+ @author Semyon Sadetsky
+ */
+
+import javax.swing.*;
+import java.awt.*;
+
+public class bug8001470 {
+
+ private static JFrame frame;
+ private static JTextField textField1;
+ private static JTextField textField2;
+
+ public static void main(String[] args) throws Exception {
+ SwingUtilities.invokeAndWait(new Runnable() {
+ @Override
+ public void run() {
+ frame = new JFrame("JTextField Test");
+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+ JPanel container = (JPanel) frame.getContentPane();
+ container.setLayout(new GridLayout(2,1));
+
+ textField1 = new JTextField("\u0e01");
+ textField2 = new JTextField("\u0c01");
+
+ container.add(textField1);
+ container.add(textField2);
+ frame.setVisible(true);
+ frame.pack();
+ }
+ });
+ if( textField1.getHeight() < 10 || textField2.getHeight() < 10 )
+ throw new Exception("Wrong field height");
+ System.out.println("ok");
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ frame.dispose();
+ }
+ });
+ }
+}