提交 f0fa3444 编写于 作者: L lana

Merge

...@@ -158,3 +158,5 @@ ddfe5562f61f54ed2121ac0c73b688b94f3e66b5 jdk8-b32 ...@@ -158,3 +158,5 @@ ddfe5562f61f54ed2121ac0c73b688b94f3e66b5 jdk8-b32
29b680393f33bf953688c17d93aca7a870ca4024 jdk8-b34 29b680393f33bf953688c17d93aca7a870ca4024 jdk8-b34
2e3e1356ffbddb2ae95c08da72830ba9ab8b3181 jdk8-b35 2e3e1356ffbddb2ae95c08da72830ba9ab8b3181 jdk8-b35
45da9cb055ee258dc09e69c1718e27eadea38e45 jdk8-b36 45da9cb055ee258dc09e69c1718e27eadea38e45 jdk8-b36
9e82ac15ab80370d6e021aea7b98c7c9626adb5e jdk8-b37
c45f3509a70796c54b48f32910d1caf435763416 jdk8-b38
...@@ -29,14 +29,14 @@ JA_DIRNAME=ja_JP.UTF-8 ...@@ -29,14 +29,14 @@ JA_DIRNAME=ja_JP.UTF-8
# Defines the release targets for Mac OS X build products # Defines the release targets for Mac OS X build products
JDK_BUNDLE_DIR = $(ABS_OUTPUTDIR)/j2sdk-bundle/$(THIS_JDK_VERSION).jdk/Contents JDK_BUNDLE_DIR = $(ABS_OUTPUTDIR)/j2sdk-bundle/jdk$(JDK_VERSION).jdk/Contents
JRE_BUNDLE_DIR = $(ABS_OUTPUTDIR)/j2re-bundle/$(THIS_JDK_VERSION).jre/Contents JRE_BUNDLE_DIR = $(ABS_OUTPUTDIR)/j2re-bundle/jre$(JDK_VERSION).jre/Contents
MACOSX_SRC = $(JDK_TOPDIR)/src/macosx MACOSX_SRC = $(JDK_TOPDIR)/src/macosx
BUNDLE_ID ?= net.java.openjdk BUNDLE_ID ?= net.java.openjdk
BUNLDE_ID_JRE ?= $(BUNDLE_ID).jre BUNDLE_ID_JRE ?= $(BUNDLE_ID).jre
BUNLDE_ID_JDK ?= $(BUNDLE_ID).jdk BUNDLE_ID_JDK ?= $(BUNDLE_ID).jdk
BUNDLE_NAME ?= OpenJDK $(JDK_MINOR_VERSION) BUNDLE_NAME ?= OpenJDK $(JDK_MINOR_VERSION)
BUNDLE_NAME_JRE ?= $(BUNDLE_NAME) BUNDLE_NAME_JRE ?= $(BUNDLE_NAME)
......
...@@ -906,11 +906,41 @@ SetXDockArgForAWT(const char *arg) ...@@ -906,11 +906,41 @@ SetXDockArgForAWT(const char *arg)
{ {
char envVar[80]; char envVar[80];
if (strstr(arg, "-Xdock:name=") == arg) { if (strstr(arg, "-Xdock:name=") == arg) {
/*
* The APP_NAME_<pid> environment variable is used to pass
* an application name as specified with the -Xdock:name command
* line option from Java launcher code to the AWT code in order
* to assign this name to the app's dock tile on the Mac.
* The _<pid> part is added to avoid collisions with child processes.
*
* WARNING: This environment variable is an implementation detail and
* isn't meant for use outside of the core platform. The mechanism for
* passing this information from Java launcher to other modules may
* change drastically between update release, and it may even be
* removed or replaced with another mechanism.
*
* NOTE: It is used by SWT, and JavaFX.
*/
snprintf(envVar, sizeof(envVar), "APP_NAME_%d", getpid()); snprintf(envVar, sizeof(envVar), "APP_NAME_%d", getpid());
setenv(envVar, (arg + 12), 1); setenv(envVar, (arg + 12), 1);
} }
if (strstr(arg, "-Xdock:icon=") == arg) { if (strstr(arg, "-Xdock:icon=") == arg) {
/*
* The APP_ICON_<pid> environment variable is used to pass
* an application icon as specified with the -Xdock:icon command
* line option from Java launcher code to the AWT code in order
* to assign this icon to the app's dock tile on the Mac.
* The _<pid> part is added to avoid collisions with child processes.
*
* WARNING: This environment variable is an implementation detail and
* isn't meant for use outside of the core platform. The mechanism for
* passing this information from Java launcher to other modules may
* change drastically between update release, and it may even be
* removed or replaced with another mechanism.
*
* NOTE: It is used by SWT, and JavaFX.
*/
snprintf(envVar, sizeof(envVar), "APP_ICON_%d", getpid()); snprintf(envVar, sizeof(envVar), "APP_ICON_%d", getpid());
setenv(envVar, (arg + 12), 1); setenv(envVar, (arg + 12), 1);
} }
...@@ -931,6 +961,22 @@ SetMainClassForAWT(JNIEnv *env, jclass mainClass) { ...@@ -931,6 +961,22 @@ SetMainClassForAWT(JNIEnv *env, jclass mainClass) {
NULL_CHECK(mainClassName = (*env)->GetStringUTFChars(env, mainClassString, NULL)); NULL_CHECK(mainClassName = (*env)->GetStringUTFChars(env, mainClassString, NULL));
char envVar[80]; char envVar[80];
/*
* The JAVA_MAIN_CLASS_<pid> environment variable is used to pass
* the name of a Java class whose main() method is invoked by
* the Java launcher code to start the application, to the AWT code
* in order to assign the name to the Apple menu bar when the app
* is active on the Mac.
* The _<pid> part is added to avoid collisions with child processes.
*
* WARNING: This environment variable is an implementation detail and
* isn't meant for use outside of the core platform. The mechanism for
* passing this information from Java launcher to other modules may
* change drastically between update release, and it may even be
* removed or replaced with another mechanism.
*
* NOTE: It is used by SWT, and JavaFX.
*/
snprintf(envVar, sizeof(envVar), "JAVA_MAIN_CLASS_%d", getpid()); snprintf(envVar, sizeof(envVar), "JAVA_MAIN_CLASS_%d", getpid());
setenv(envVar, mainClassName, 1); setenv(envVar, mainClassName, 1);
......
...@@ -210,6 +210,15 @@ final class LWTextAreaPeer ...@@ -210,6 +210,15 @@ final class LWTextAreaPeer
super(); super();
} }
@Override
public void replaceSelection(String content) {
getDocument().removeDocumentListener(LWTextAreaPeer.this);
super.replaceSelection(content);
// post only one text event in this case
postTextEvent();
getDocument().addDocumentListener(LWTextAreaPeer.this);
}
@Override @Override
public boolean hasFocus() { public boolean hasFocus() {
return getTarget().hasFocus(); return getTarget().hasFocus();
......
...@@ -187,7 +187,7 @@ abstract class LWTextComponentPeer<T extends TextComponent, D extends JComponent ...@@ -187,7 +187,7 @@ abstract class LWTextComponentPeer<T extends TextComponent, D extends JComponent
} }
} }
private void sendTextEvent(final DocumentEvent e) { protected final void postTextEvent() {
postEvent(new TextEvent(getTarget(), TextEvent.TEXT_VALUE_CHANGED)); postEvent(new TextEvent(getTarget(), TextEvent.TEXT_VALUE_CHANGED));
synchronized (getDelegateLock()) { synchronized (getDelegateLock()) {
revalidate(); revalidate();
...@@ -196,17 +196,17 @@ abstract class LWTextComponentPeer<T extends TextComponent, D extends JComponent ...@@ -196,17 +196,17 @@ abstract class LWTextComponentPeer<T extends TextComponent, D extends JComponent
@Override @Override
public final void changedUpdate(final DocumentEvent e) { public final void changedUpdate(final DocumentEvent e) {
sendTextEvent(e); postTextEvent();
} }
@Override @Override
public final void insertUpdate(final DocumentEvent e) { public final void insertUpdate(final DocumentEvent e) {
sendTextEvent(e); postTextEvent();
} }
@Override @Override
public final void removeUpdate(final DocumentEvent e) { public final void removeUpdate(final DocumentEvent e) {
sendTextEvent(e); postTextEvent();
} }
@Override @Override
......
...@@ -95,7 +95,7 @@ final class LWTextFieldPeer ...@@ -95,7 +95,7 @@ final class LWTextFieldPeer
@Override @Override
public void actionPerformed(final ActionEvent e) { public void actionPerformed(final ActionEvent e) {
postEvent(new ActionEvent(getTarget(), ActionEvent.ACTION_PERFORMED, postEvent(new ActionEvent(getTarget(), ActionEvent.ACTION_PERFORMED,
getText(), e.getWhen(), e.getModifiers())); getText(), e.getWhen(), e.getModifiers()));
} }
/** /**
...@@ -121,6 +121,15 @@ final class LWTextFieldPeer ...@@ -121,6 +121,15 @@ final class LWTextFieldPeer
super(); super();
} }
@Override
public void replaceSelection(String content) {
getDocument().removeDocumentListener(LWTextFieldPeer.this);
super.replaceSelection(content);
// post only one text event in this case
postTextEvent();
getDocument().addDocumentListener(LWTextFieldPeer.this);
}
@Override @Override
public boolean hasFocus() { public boolean hasFocus() {
return getTarget().hasFocus(); return getTarget().hasFocus();
......
...@@ -669,39 +669,42 @@ public class LWWindowPeer ...@@ -669,39 +669,42 @@ public class LWWindowPeer
} }
} else { } else {
if (targetPeer != lastMouseEventPeer) { if (targetPeer != lastMouseEventPeer) {
// lastMouseEventPeer may be null if mouse was out of Java windows
if (lastMouseEventPeer != null && lastMouseEventPeer.isEnabled()) { if (id != MouseEvent.MOUSE_DRAGGED || lastMouseEventPeer == null) {
// Sometimes, MOUSE_EXITED is not sent by delegate (or is sent a bit // lastMouseEventPeer may be null if mouse was out of Java windows
// later), in which case lastWindowPeer is another window if (lastMouseEventPeer != null && lastMouseEventPeer.isEnabled()) {
if (lastWindowPeer != this) { // Sometimes, MOUSE_EXITED is not sent by delegate (or is sent a bit
Point oldp = lastMouseEventPeer.windowToLocal(x, y, lastWindowPeer); // later), in which case lastWindowPeer is another window
// Additionally translate from this to lastWindowPeer coordinates if (lastWindowPeer != this) {
Rectangle lr = lastWindowPeer.getBounds(); Point oldp = lastMouseEventPeer.windowToLocal(x, y, lastWindowPeer);
oldp.x += r.x - lr.x; // Additionally translate from this to lastWindowPeer coordinates
oldp.y += r.y - lr.y; Rectangle lr = lastWindowPeer.getBounds();
postEvent(new MouseEvent(lastMouseEventPeer.getTarget(), oldp.x += r.x - lr.x;
MouseEvent.MOUSE_EXITED, oldp.y += r.y - lr.y;
when, modifiers, postEvent(new MouseEvent(lastMouseEventPeer.getTarget(),
oldp.x, oldp.y, screenX, screenY, MouseEvent.MOUSE_EXITED,
clickCount, popupTrigger, button)); when, modifiers,
} else { oldp.x, oldp.y, screenX, screenY,
Point oldp = lastMouseEventPeer.windowToLocal(x, y, this); clickCount, popupTrigger, button));
postEvent(new MouseEvent(lastMouseEventPeer.getTarget(), } else {
MouseEvent.MOUSE_EXITED, Point oldp = lastMouseEventPeer.windowToLocal(x, y, this);
postEvent(new MouseEvent(lastMouseEventPeer.getTarget(),
MouseEvent.MOUSE_EXITED,
when, modifiers,
oldp.x, oldp.y, screenX, screenY,
clickCount, popupTrigger, button));
}
}
if (targetPeer != null && targetPeer.isEnabled() && id != MouseEvent.MOUSE_ENTERED) {
Point newp = targetPeer.windowToLocal(x, y, curWindowPeer);
postEvent(new MouseEvent(targetPeer.getTarget(),
MouseEvent.MOUSE_ENTERED,
when, modifiers, when, modifiers,
oldp.x, oldp.y, screenX, screenY, newp.x, newp.y, screenX, screenY,
clickCount, popupTrigger, button)); clickCount, popupTrigger, button));
} }
} }
lastMouseEventPeer = targetPeer; lastMouseEventPeer = targetPeer;
if (targetPeer != null && targetPeer.isEnabled() && id != MouseEvent.MOUSE_ENTERED) {
Point newp = targetPeer.windowToLocal(x, y, curWindowPeer);
postEvent(new MouseEvent(targetPeer.getTarget(),
MouseEvent.MOUSE_ENTERED,
when, modifiers,
newp.x, newp.y, screenX, screenY,
clickCount, popupTrigger, button));
}
} }
// TODO: fill "bdata" member of AWTEvent // TODO: fill "bdata" member of AWTEvent
......
...@@ -36,6 +36,7 @@ final class CCursorManager extends LWCursorManager { ...@@ -36,6 +36,7 @@ final class CCursorManager extends LWCursorManager {
private static native Point2D nativeGetCursorPosition(); private static native Point2D nativeGetCursorPosition();
private static native void nativeSetBuiltInCursor(final int type, final String name); private static native void nativeSetBuiltInCursor(final int type, final String name);
private static native void nativeSetCustomCursor(final long imgPtr, final double x, final double y); private static native void nativeSetCustomCursor(final long imgPtr, final double x, final double y);
public static native void nativeSetAllowsCursorSetInBackground(final boolean allows);
private static final int NAMED_CURSOR = -1; private static final int NAMED_CURSOR = -1;
......
...@@ -76,6 +76,12 @@ public class CEmbeddedFrame extends EmbeddedFrame { ...@@ -76,6 +76,12 @@ public class CEmbeddedFrame extends EmbeddedFrame {
int screenX = locationOnScreen.x + x; int screenX = locationOnScreen.x + x;
int screenY = locationOnScreen.y + y; int screenY = locationOnScreen.y + y;
if (eventType == CocoaConstants.NPCocoaEventMouseEntered) {
CCursorManager.nativeSetAllowsCursorSetInBackground(true);
} else if (eventType == CocoaConstants.NPCocoaEventMouseExited) {
CCursorManager.nativeSetAllowsCursorSetInBackground(false);
}
responder.handleMouseEvent(eventType, modifierFlags, buttonNumber, responder.handleMouseEvent(eventType, modifierFlags, buttonNumber,
clickCount, x, y, screenX, screenY); clickCount, x, y, screenX, screenY);
} }
......
...@@ -61,6 +61,7 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo ...@@ -61,6 +61,7 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
private static native void nativeSetNSWindowMinimizedIcon(long nsWindowPtr, long nsImage); private static native void nativeSetNSWindowMinimizedIcon(long nsWindowPtr, long nsImage);
private static native void nativeSetNSWindowRepresentedFilename(long nsWindowPtr, String representedFilename); private static native void nativeSetNSWindowRepresentedFilename(long nsWindowPtr, String representedFilename);
private static native void nativeSetNSWindowSecurityWarningPositioning(long nsWindowPtr, double x, double y, float biasX, float biasY); private static native void nativeSetNSWindowSecurityWarningPositioning(long nsWindowPtr, double x, double y, float biasX, float biasY);
private static native void nativeSynthesizeMouseEnteredExitedEvents(long nsWindowPtr);
private static native int nativeGetScreenNSWindowIsOn_AppKitThread(long nsWindowPtr); private static native int nativeGetScreenNSWindowIsOn_AppKitThread(long nsWindowPtr);
...@@ -582,6 +583,8 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo ...@@ -582,6 +583,8 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
} }
} }
nativeSynthesizeMouseEnteredExitedEvents(nsWindowPtr);
// 6. Configure stuff #2 // 6. Configure stuff #2
updateFocusabilityForAutoRequestFocus(true); updateFocusabilityForAutoRequestFocus(true);
...@@ -791,6 +794,8 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo ...@@ -791,6 +794,8 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
throw new RuntimeException("Unknown window state: " + windowState); throw new RuntimeException("Unknown window state: " + windowState);
} }
nativeSynthesizeMouseEnteredExitedEvents(nsWindowPtr);
// NOTE: the SWP.windowState field gets updated to the newWindowState // NOTE: the SWP.windowState field gets updated to the newWindowState
// value when the native notification comes to us // value when the native notification comes to us
} }
......
/* /*
* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -656,6 +656,14 @@ public class LWCToolkit extends LWToolkit { ...@@ -656,6 +656,14 @@ public class LWCToolkit extends LWToolkit {
return ((mods & (InputEvent.META_MASK | InputEvent.CTRL_MASK)) == 0); return ((mods & (InputEvent.META_MASK | InputEvent.CTRL_MASK)) == 0);
} }
/**
* Returns whether popup is allowed to be shown above the task bar.
*/
@Override
public boolean canPopupOverlapTaskBar() {
return false;
}
// Extends PeerEvent because we want to pass long an ObjC mediator object and because we want these events to be posted early // Extends PeerEvent because we want to pass long an ObjC mediator object and because we want these events to be posted early
// Typically, rather than relying on the notifier to call notifyAll(), we use the mediator to stop the runloop // Typically, rather than relying on the notifier to call notifyAll(), we use the mediator to stop the runloop
public static class CPeerEvent extends PeerEvent { public static class CPeerEvent extends PeerEvent {
......
...@@ -52,9 +52,12 @@ ...@@ -52,9 +52,12 @@
BOOL fPAHNeedsToSelect; BOOL fPAHNeedsToSelect;
id cglLayer; // is a sublayer of view.layer id cglLayer; // is a sublayer of view.layer
BOOL mouseIsOver;
} }
@property (nonatomic, retain) id cglLayer; @property (nonatomic, retain) id cglLayer;
@property (nonatomic) BOOL mouseIsOver;
- (id) initWithRect:(NSRect) rect platformView:(jobject)cPlatformView windowLayer:(CALayer*)windowLayer; - (id) initWithRect:(NSRect) rect platformView:(jobject)cPlatformView windowLayer:(CALayer*)windowLayer;
- (void) deliverJavaMouseEvent: (NSEvent *) event; - (void) deliverJavaMouseEvent: (NSEvent *) event;
......
...@@ -61,6 +61,7 @@ static BOOL shouldUsePressAndHold() { ...@@ -61,6 +61,7 @@ static BOOL shouldUsePressAndHold() {
@synthesize _dropTarget; @synthesize _dropTarget;
@synthesize _dragSource; @synthesize _dragSource;
@synthesize cglLayer; @synthesize cglLayer;
@synthesize mouseIsOver;
// Note: Must be called on main (AppKit) thread only // Note: Must be called on main (AppKit) thread only
- (id) initWithRect: (NSRect) rect - (id) initWithRect: (NSRect) rect
...@@ -80,6 +81,8 @@ AWT_ASSERT_APPKIT_THREAD; ...@@ -80,6 +81,8 @@ AWT_ASSERT_APPKIT_THREAD;
fEnablePressAndHold = shouldUsePressAndHold(); fEnablePressAndHold = shouldUsePressAndHold();
fInPressAndHold = NO; fInPressAndHold = NO;
fPAHNeedsToSelect = NO; fPAHNeedsToSelect = NO;
mouseIsOver = NO;
if (windowLayer != nil) { if (windowLayer != nil) {
self.cglLayer = windowLayer; self.cglLayer = windowLayer;
...@@ -299,6 +302,16 @@ AWT_ASSERT_APPKIT_THREAD; ...@@ -299,6 +302,16 @@ AWT_ASSERT_APPKIT_THREAD;
*/ */
-(void) deliverJavaMouseEvent: (NSEvent *) event { -(void) deliverJavaMouseEvent: (NSEvent *) event {
NSEventType type = [event type];
// check synthesized mouse entered/exited events
if ((type == NSMouseEntered && mouseIsOver) || (type == NSMouseExited && !mouseIsOver)) {
return;
}else if ((type == NSMouseEntered && !mouseIsOver) || (type == NSMouseExited && mouseIsOver)) {
mouseIsOver = !mouseIsOver;
}
[AWTToolkit eventCountPlusPlus]; [AWTToolkit eventCountPlusPlus];
JNIEnv *env = [ThreadUtilities getJNIEnv]; JNIEnv *env = [ThreadUtilities getJNIEnv];
...@@ -306,7 +319,6 @@ AWT_ASSERT_APPKIT_THREAD; ...@@ -306,7 +319,6 @@ AWT_ASSERT_APPKIT_THREAD;
NSPoint eventLocation = [event locationInWindow]; NSPoint eventLocation = [event locationInWindow];
NSPoint localPoint = [self convertPoint: eventLocation fromView: nil]; NSPoint localPoint = [self convertPoint: eventLocation fromView: nil];
NSPoint absP = [NSEvent mouseLocation]; NSPoint absP = [NSEvent mouseLocation];
NSEventType type = [event type];
// Convert global numbers between Cocoa's coordinate system and Java. // Convert global numbers between Cocoa's coordinate system and Java.
// TODO: need consitent way for doing that both with global as well as with local coordinates. // TODO: need consitent way for doing that both with global as well as with local coordinates.
......
...@@ -56,6 +56,7 @@ ...@@ -56,6 +56,7 @@
contentView:(NSView *)contentView; contentView:(NSView *)contentView;
- (void) adjustGrowBoxWindow; - (void) adjustGrowBoxWindow;
- (BOOL) isTopmostWindowUnderMouse;
@end @end
#endif _AWTWINDOW_H #endif _AWTWINDOW_H
...@@ -170,6 +170,66 @@ AWT_ASSERT_APPKIT_THREAD; ...@@ -170,6 +170,66 @@ AWT_ASSERT_APPKIT_THREAD;
return self; return self;
} }
// checks that this window is under the mouse cursor and this point is not overlapped by others windows
- (BOOL) isTopmostWindowUnderMouse {
int currentWinID = [self windowNumber];
NSRect screenRect = [[NSScreen mainScreen] frame];
NSPoint nsMouseLocation = [NSEvent mouseLocation];
CGPoint cgMouseLocation = CGPointMake(nsMouseLocation.x, screenRect.size.height - nsMouseLocation.y);
NSMutableArray *windows = (NSMutableArray *)CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly | kCGWindowListExcludeDesktopElements, kCGNullWindowID);
for (NSDictionary *window in windows) {
int layer = [[window objectForKey:(id)kCGWindowLayer] intValue];
if (layer == 0) {
int winID = [[window objectForKey:(id)kCGWindowNumber] intValue];
CGRect rect;
CGRectMakeWithDictionaryRepresentation((CFDictionaryRef)[window objectForKey:(id)kCGWindowBounds], &rect);
if (CGRectContainsPoint(rect, cgMouseLocation)) {
return currentWinID == winID;
} else if (currentWinID == winID) {
return NO;
}
}
}
return NO;
}
- (void) synthesizeMouseEnteredExitedEvents {
int eventType = 0;
BOOL isUnderMouse = [self isTopmostWindowUnderMouse];
BOOL mouseIsOver = [[self contentView] mouseIsOver];
if (isUnderMouse && !mouseIsOver) {
eventType = NSMouseEntered;
} else if (!isUnderMouse && mouseIsOver) {
eventType = NSMouseExited;
} else {
return;
}
NSPoint screenLocation = [NSEvent mouseLocation];
NSPoint windowLocation = [self convertScreenToBase: screenLocation];
int modifierFlags = (eventType == NSMouseEntered) ? NSMouseEnteredMask : NSMouseExitedMask;
NSEvent *mouseEvent = [NSEvent enterExitEventWithType: eventType
location: windowLocation
modifierFlags: modifierFlags
timestamp: 0
windowNumber: [self windowNumber]
context: nil
eventNumber: 0
trackingNumber: 0
userData: nil
];
[[self contentView] deliverJavaMouseEvent: mouseEvent];
}
- (void) dealloc { - (void) dealloc {
AWT_ASSERT_APPKIT_THREAD; AWT_ASSERT_APPKIT_THREAD;
...@@ -669,6 +729,8 @@ AWT_ASSERT_NOT_APPKIT_THREAD; ...@@ -669,6 +729,8 @@ AWT_ASSERT_NOT_APPKIT_THREAD;
// ensure we repaint the whole window after the resize operation // ensure we repaint the whole window after the resize operation
// (this will also re-enable screen updates, which were disabled above) // (this will also re-enable screen updates, which were disabled above)
// TODO: send PaintEvent // TODO: send PaintEvent
[window synthesizeMouseEnteredExitedEvents];
}]; }];
JNF_COCOA_EXIT(env); JNF_COCOA_EXIT(env);
...@@ -897,6 +959,27 @@ AWT_ASSERT_NOT_APPKIT_THREAD; ...@@ -897,6 +959,27 @@ AWT_ASSERT_NOT_APPKIT_THREAD;
JNF_COCOA_EXIT(env); JNF_COCOA_EXIT(env);
} }
/*
* Class: sun_lwawt_macosx_CPlatformWindow
* Method: nativeSynthesizeMouseEnteredExitedEvents
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSynthesizeMouseEnteredExitedEvents
(JNIEnv *env, jclass clazz, jlong windowPtr)
{
JNF_COCOA_ENTER(env);
AWT_ASSERT_NOT_APPKIT_THREAD;
AWTWindow *window = OBJC(windowPtr);
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
AWT_ASSERT_APPKIT_THREAD;
[window synthesizeMouseEnteredExitedEvents];
}];
JNF_COCOA_EXIT(env);
}
/* /*
* Class: sun_lwawt_macosx_CPlatformWindow * Class: sun_lwawt_macosx_CPlatformWindow
* Method: nativeGetScreenNSWindowIsOn_AppKitThread * Method: nativeGetScreenNSWindowIsOn_AppKitThread
......
...@@ -137,3 +137,30 @@ JNF_COCOA_EXIT(env); ...@@ -137,3 +137,30 @@ JNF_COCOA_EXIT(env);
return jpt; return jpt;
} }
JNIEXPORT void JNICALL
Java_sun_lwawt_macosx_CCursorManager_nativeSetAllowsCursorSetInBackground
(JNIEnv *env, jclass class, jboolean allows)
{
JNF_COCOA_ENTER(env);
AWT_ASSERT_NOT_APPKIT_THREAD;
SEL allowsSetInBackground_SEL = @selector(javaSetAllowsCursorSetInBackground:);
if ([[NSCursor class] respondsToSelector:allowsSetInBackground_SEL]) {
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
NSMethodSignature *allowsSetInBackground_sig =
[[NSCursor class] methodSignatureForSelector:allowsSetInBackground_SEL];
NSInvocation *invocation =
[NSInvocation invocationWithMethodSignature:allowsSetInBackground_sig];
BOOL arg = (BOOL)allows;
[invocation setSelector:allowsSetInBackground_SEL];
[invocation setArgument:&arg atIndex:2];
[invocation invokeWithTarget:[NSCursor class]];
}];
}
JNF_COCOA_EXIT(env);
}
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#import "java_awt_print_Pageable.h" #import "java_awt_print_Pageable.h"
#import "java_awt_print_Printable.h" #import "java_awt_print_Printable.h"
#import "java_awt_print_PageFormat.h"
#import <JavaNativeFoundation/JavaNativeFoundation.h> #import <JavaNativeFoundation/JavaNativeFoundation.h>
...@@ -35,6 +36,7 @@ ...@@ -35,6 +36,7 @@
static JNF_CLASS_CACHE(sjc_CPrinterJob, "sun/lwawt/macosx/CPrinterJob"); static JNF_CLASS_CACHE(sjc_CPrinterJob, "sun/lwawt/macosx/CPrinterJob");
static JNF_CLASS_CACHE(sjc_PageFormat, "java/awt/print/PageFormat");
@implementation PrinterView @implementation PrinterView
...@@ -152,6 +154,7 @@ static JNF_CLASS_CACHE(sjc_CPrinterJob, "sun/lwawt/macosx/CPrinterJob"); ...@@ -152,6 +154,7 @@ static JNF_CLASS_CACHE(sjc_CPrinterJob, "sun/lwawt/macosx/CPrinterJob");
static JNF_MEMBER_CACHE(jm_getPageformatPrintablePeekgraphics, sjc_CPrinterJob, "getPageformatPrintablePeekgraphics", "(I)[Ljava/lang/Object;"); static JNF_MEMBER_CACHE(jm_getPageformatPrintablePeekgraphics, sjc_CPrinterJob, "getPageformatPrintablePeekgraphics", "(I)[Ljava/lang/Object;");
static JNF_MEMBER_CACHE(jm_printAndGetPageFormatArea, sjc_CPrinterJob, "printAndGetPageFormatArea", "(Ljava/awt/print/Printable;Ljava/awt/Graphics;Ljava/awt/print/PageFormat;I)Ljava/awt/geom/Rectangle2D;"); static JNF_MEMBER_CACHE(jm_printAndGetPageFormatArea, sjc_CPrinterJob, "printAndGetPageFormatArea", "(Ljava/awt/print/Printable;Ljava/awt/Graphics;Ljava/awt/print/PageFormat;I)Ljava/awt/geom/Rectangle2D;");
static JNF_MEMBER_CACHE(jm_getOrientation, sjc_PageFormat, "getOrientation", "()I");
// Assertions removed, and corresponding JNFDeleteGlobalRefs added, for radr://3962543 // Assertions removed, and corresponding JNFDeleteGlobalRefs added, for radr://3962543
// Actual fix that will keep these assertions from being true is radr://3205462 , // Actual fix that will keep these assertions from being true is radr://3205462 ,
...@@ -201,6 +204,26 @@ static JNF_CLASS_CACHE(sjc_CPrinterJob, "sun/lwawt/macosx/CPrinterJob"); ...@@ -201,6 +204,26 @@ static JNF_CLASS_CACHE(sjc_CPrinterJob, "sun/lwawt/macosx/CPrinterJob");
// Actually print and get the PageFormatArea // Actually print and get the PageFormatArea
jobject pageFormatArea = JNFCallObjectMethod(env, fPrinterJob, jm_printAndGetPageFormatArea, fCurPainter, fCurPeekGraphics, fCurPageFormat, jPageNumber); // AWT_THREADING Safe (AWTRunLoopMode) jobject pageFormatArea = JNFCallObjectMethod(env, fPrinterJob, jm_printAndGetPageFormatArea, fCurPainter, fCurPeekGraphics, fCurPageFormat, jPageNumber); // AWT_THREADING Safe (AWTRunLoopMode)
if (pageFormatArea != NULL) { if (pageFormatArea != NULL) {
NSPrintingOrientation currentOrientation =
[[[NSPrintOperation currentOperation] printInfo] orientation];
// set page orientation
switch (JNFCallIntMethod(env, fCurPageFormat, jm_getOrientation)) {
case java_awt_print_PageFormat_PORTRAIT:
default:
if (currentOrientation != NSPortraitOrientation) {
[[[NSPrintOperation currentOperation] printInfo]
setOrientation:NSPortraitOrientation];
}
break;
case java_awt_print_PageFormat_LANDSCAPE:
case java_awt_print_PageFormat_REVERSE_LANDSCAPE:
if (currentOrientation != NSLandscapeOrientation) {
[[[NSPrintOperation currentOperation] printInfo]
setOrientation:NSLandscapeOrientation];
}
break;
}
result = JavaToNSRect(env, pageFormatArea); result = JavaToNSRect(env, pageFormatArea);
(*env)->DeleteLocalRef(env, pageFormatArea); (*env)->DeleteLocalRef(env, pageFormatArea);
} else { } else {
......
/* /*
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -2638,17 +2638,16 @@ public abstract class JComponent extends Container implements Serializable, ...@@ -2638,17 +2638,16 @@ public abstract class JComponent extends Container implements Serializable,
* attribute: visualUpdate true * attribute: visualUpdate true
*/ */
public void setVisible(boolean aFlag) { public void setVisible(boolean aFlag) {
if(aFlag != isVisible()) { if (aFlag != isVisible()) {
super.setVisible(aFlag); super.setVisible(aFlag);
Container parent = getParent(); if (aFlag) {
if(parent != null) { Container parent = getParent();
Rectangle r = getBounds(); if (parent != null) {
parent.repaint(r.x,r.y,r.width,r.height); Rectangle r = getBounds();
parent.repaint(r.x, r.y, r.width, r.height);
}
revalidate();
} }
// Some (all should) LayoutManagers do not consider components
// that are not visible. As such we need to revalidate when the
// visible bit changes.
revalidate();
} }
} }
...@@ -5568,4 +5567,21 @@ public abstract class JComponent extends Container implements Serializable, ...@@ -5568,4 +5567,21 @@ public abstract class JComponent extends Container implements Serializable,
",preferredSize=" + preferredSizeString; ",preferredSize=" + preferredSizeString;
} }
/**
* {@inheritDoc}
*/
@Override
public void hide() {
boolean showing = isShowing();
super.hide();
if (showing) {
Container parent = getParent();
if (parent != null) {
Rectangle r = getBounds();
parent.repaint(r.x, r.y, r.width, r.height);
}
revalidate();
}
}
} }
...@@ -27,7 +27,8 @@ package javax.swing; ...@@ -27,7 +27,8 @@ package javax.swing;
import java.util.List; import java.util.List;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Vector; import java.util.Collection;
import java.util.Iterator;
import javax.swing.plaf.*; import javax.swing.plaf.*;
import javax.accessibility.*; import javax.accessibility.*;
...@@ -42,7 +43,6 @@ import java.io.IOException; ...@@ -42,7 +43,6 @@ import java.io.IOException;
import java.beans.PropertyVetoException; import java.beans.PropertyVetoException;
import java.util.Set; import java.util.Set;
import java.util.TreeSet; import java.util.TreeSet;
/** /**
* A container used to create a multiple-document interface or a virtual desktop. * A container used to create a multiple-document interface or a virtual desktop.
* You create <code>JInternalFrame</code> objects and add them to the * You create <code>JInternalFrame</code> objects and add them to the
...@@ -261,25 +261,26 @@ public class JDesktopPane extends JLayeredPane implements Accessible ...@@ -261,25 +261,26 @@ public class JDesktopPane extends JLayeredPane implements Accessible
* @return an array of <code>JInternalFrame</code> objects * @return an array of <code>JInternalFrame</code> objects
*/ */
public JInternalFrame[] getAllFrames() { public JInternalFrame[] getAllFrames() {
return getAllFrames(this).toArray(new JInternalFrame[0]);
}
private static Collection<JInternalFrame> getAllFrames(Container parent) {
int i, count; int i, count;
JInternalFrame[] results; Collection<JInternalFrame> results = new ArrayList<JInternalFrame>();
Vector<JInternalFrame> vResults = new Vector<JInternalFrame>(10); count = parent.getComponentCount();
for (i = 0; i < count; i++) {
count = getComponentCount(); Component next = parent.getComponent(i);
for(i = 0; i < count; i++) { if (next instanceof JInternalFrame) {
Component next = getComponent(i); results.add((JInternalFrame) next);
if(next instanceof JInternalFrame) } else if (next instanceof JInternalFrame.JDesktopIcon) {
vResults.addElement((JInternalFrame) next); JInternalFrame tmp = ((JInternalFrame.JDesktopIcon) next).getInternalFrame();
else if(next instanceof JInternalFrame.JDesktopIcon) { if (tmp != null) {
JInternalFrame tmp = ((JInternalFrame.JDesktopIcon)next).getInternalFrame(); results.add(tmp);
if(tmp != null) }
vResults.addElement(tmp); } else if (next instanceof Container) {
results.addAll(getAllFrames((Container) next));
} }
} }
results = new JInternalFrame[vResults.size()];
vResults.copyInto(results);
return results; return results;
} }
...@@ -322,27 +323,14 @@ public class JDesktopPane extends JLayeredPane implements Accessible ...@@ -322,27 +323,14 @@ public class JDesktopPane extends JLayeredPane implements Accessible
* @see JLayeredPane * @see JLayeredPane
*/ */
public JInternalFrame[] getAllFramesInLayer(int layer) { public JInternalFrame[] getAllFramesInLayer(int layer) {
int i, count; Collection<JInternalFrame> allFrames = getAllFrames(this);
JInternalFrame[] results; Iterator<JInternalFrame> iterator = allFrames.iterator();
Vector<JInternalFrame> vResults = new Vector<JInternalFrame>(10); while (iterator.hasNext()) {
if (iterator.next().getLayer() != layer) {
count = getComponentCount(); iterator.remove();
for(i = 0; i < count; i++) {
Component next = getComponent(i);
if(next instanceof JInternalFrame) {
if(((JInternalFrame)next).getLayer() == layer)
vResults.addElement((JInternalFrame) next);
} else if(next instanceof JInternalFrame.JDesktopIcon) {
JInternalFrame tmp = ((JInternalFrame.JDesktopIcon)next).getInternalFrame();
if(tmp != null && tmp.getLayer() == layer)
vResults.addElement(tmp);
} }
} }
return allFrames.toArray(new JInternalFrame[0]);
results = new JInternalFrame[vResults.size()];
vResults.copyInto(results);
return results;
} }
private List<JInternalFrame> getFrames() { private List<JInternalFrame> getFrames() {
......
/* /*
* Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -41,6 +41,8 @@ import javax.swing.plaf.PopupMenuUI; ...@@ -41,6 +41,8 @@ import javax.swing.plaf.PopupMenuUI;
import javax.swing.plaf.ComponentUI; import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.basic.BasicComboPopup; import javax.swing.plaf.basic.BasicComboPopup;
import javax.swing.event.*; import javax.swing.event.*;
import sun.awt.SunToolkit;
import sun.security.util.SecurityConstants; import sun.security.util.SecurityConstants;
import java.applet.Applet; import java.applet.Applet;
...@@ -347,6 +349,7 @@ public class JPopupMenu extends JComponent implements Accessible,MenuElement { ...@@ -347,6 +349,7 @@ public class JPopupMenu extends JComponent implements Accessible,MenuElement {
long popupBottomY = (long)popupLocation.y + (long)popupSize.height; long popupBottomY = (long)popupLocation.y + (long)popupSize.height;
int scrWidth = scrBounds.width; int scrWidth = scrBounds.width;
int scrHeight = scrBounds.height; int scrHeight = scrBounds.height;
if (!canPopupOverlapTaskBar()) { if (!canPopupOverlapTaskBar()) {
// Insets include the task bar. Take them into account. // Insets include the task bar. Take them into account.
Insets scrInsets = toolkit.getScreenInsets(gc); Insets scrInsets = toolkit.getScreenInsets(gc);
...@@ -407,25 +410,19 @@ public class JPopupMenu extends JComponent implements Accessible,MenuElement { ...@@ -407,25 +410,19 @@ public class JPopupMenu extends JComponent implements Accessible,MenuElement {
} }
/** /**
* Checks that there are enough security permissions * Returns whether popup is allowed to be shown above the task bar.
* to make popup "always on top", which allows to show it above the task bar.
*/ */
static boolean canPopupOverlapTaskBar() { static boolean canPopupOverlapTaskBar() {
boolean result = true; boolean result = true;
try {
SecurityManager sm = System.getSecurityManager(); Toolkit tk = Toolkit.getDefaultToolkit();
if (sm != null) { if (tk instanceof SunToolkit) {
sm.checkPermission( result = ((SunToolkit)tk).canPopupOverlapTaskBar();
SecurityConstants.AWT.SET_WINDOW_ALWAYS_ON_TOP_PERMISSION);
}
} catch (SecurityException se) {
// There is no permission to show popups over the task bar
result = false;
} }
return result; return result;
} }
/** /**
* Factory method which creates the <code>JMenuItem</code> for * Factory method which creates the <code>JMenuItem</code> for
* <code>Actions</code> added to the <code>JPopupMenu</code>. * <code>Actions</code> added to the <code>JPopupMenu</code>.
......
...@@ -5470,7 +5470,7 @@ public class JTable extends JComponent implements TableModelListener, Scrollable ...@@ -5470,7 +5470,7 @@ public class JTable extends JComponent implements TableModelListener, Scrollable
if (constructor.getDeclaringClass() == String.class) { if (constructor.getDeclaringClass() == String.class) {
value = s; value = s;
} }
super.stopCellEditing(); return super.stopCellEditing();
} }
try { try {
......
/* /*
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -42,6 +42,8 @@ import java.util.concurrent.TimeUnit; ...@@ -42,6 +42,8 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.locks.ReentrantLock;
import sun.security.util.SecurityConstants;
import sun.util.logging.PlatformLogger; import sun.util.logging.PlatformLogger;
import sun.misc.SoftCache; import sun.misc.SoftCache;
import sun.font.FontDesignMetrics; import sun.font.FontDesignMetrics;
...@@ -1135,6 +1137,26 @@ public abstract class SunToolkit extends Toolkit ...@@ -1135,6 +1137,26 @@ public abstract class SunToolkit extends Toolkit
return ((mods & InputEvent.ALT_MASK) == (mods & InputEvent.CTRL_MASK)); return ((mods & InputEvent.ALT_MASK) == (mods & InputEvent.CTRL_MASK));
} }
/**
* Returns whether popup is allowed to be shown above the task bar.
* This is a default implementation of this method, which checks
* corresponding security permission.
*/
public boolean canPopupOverlapTaskBar() {
boolean result = true;
try {
SecurityManager sm = System.getSecurityManager();
if (sm != null) {
sm.checkPermission(
SecurityConstants.AWT.SET_WINDOW_ALWAYS_ON_TOP_PERMISSION);
}
} catch (SecurityException se) {
// There is no permission to show popups over the task bar
result = false;
}
return result;
}
/** /**
* Returns a new input method window, with behavior as specified in * Returns a new input method window, with behavior as specified in
* {@link java.awt.im.spi.InputMethodContext#createInputMethodWindow}. * {@link java.awt.im.spi.InputMethodContext#createInputMethodWindow}.
......
...@@ -72,6 +72,7 @@ import javax.swing.text.NumberFormatter; ...@@ -72,6 +72,7 @@ import javax.swing.text.NumberFormatter;
import sun.print.SunPageSelection; import sun.print.SunPageSelection;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.lang.reflect.Field;
/** /**
...@@ -479,20 +480,45 @@ public class ServiceDialog extends JDialog implements ActionListener { ...@@ -479,20 +480,45 @@ public class ServiceDialog extends JDialog implements ActionListener {
*/ */
public static String getMsg(String key) { public static String getMsg(String key) {
try { try {
return messageRB.getString(key); return removeMnemonics(messageRB.getString(key));
} catch (java.util.MissingResourceException e) { } catch (java.util.MissingResourceException e) {
throw new Error("Fatal: Resource for ServiceUI is broken; " + throw new Error("Fatal: Resource for ServiceUI is broken; " +
"there is no " + key + " key in resource"); "there is no " + key + " key in resource");
} }
} }
private static String removeMnemonics(String s) {
int i = s.indexOf('&');
int len = s.length();
if (i < 0 || i == (len - 1)) {
return s;
}
int j = s.indexOf('&', i+1);
if (j == i+1) {
if (j+1 == len) {
return s.substring(0, i+1); // string ends with &&
} else {
return s.substring(0, i+1) + removeMnemonics(s.substring(j+1));
}
}
// ok first & not double &&
if (i == 0) {
return removeMnemonics(s.substring(1));
} else {
return (s.substring(0, i) + removeMnemonics(s.substring(i+1)));
}
}
/** /**
* Returns mnemonic character from resource * Returns mnemonic character from resource
*/ */
private static char getMnemonic(String key) { private static char getMnemonic(String key) {
String str = getMsg(key + ".mnemonic"); String str = messageRB.getString(key).replace("&&", "");
if ((str != null) && (str.length() > 0)) { int index = str.indexOf('&');
return str.charAt(0); if (0 <= index && index < str.length() - 1) {
char c = str.charAt(index + 1);
return Character.toUpperCase(c);
} else { } else {
return (char)0; return (char)0;
} }
...@@ -501,12 +527,23 @@ public class ServiceDialog extends JDialog implements ActionListener { ...@@ -501,12 +527,23 @@ public class ServiceDialog extends JDialog implements ActionListener {
/** /**
* Returns the mnemonic as a KeyEvent.VK constant from the resource. * Returns the mnemonic as a KeyEvent.VK constant from the resource.
*/ */
static Class _keyEventClazz = null;
private static int getVKMnemonic(String key) { private static int getVKMnemonic(String key) {
String str = getMsg(key + ".vkMnemonic"); String s = String.valueOf(getMnemonic(key));
if ((str != null) && (str.length() > 0)) { if ( s == null || s.length() != 1) {
try { return 0;
return Integer.parseInt(str); }
} catch (NumberFormatException nfe) {} String vkString = "VK_" + s.toUpperCase();
try {
if (_keyEventClazz == null) {
_keyEventClazz= Class.forName("java.awt.event.KeyEvent",
true, (ServiceDialog.class).getClassLoader());
}
Field field = _keyEventClazz.getDeclaredField(vkString);
int value = field.getInt(null);
return value;
} catch (Exception e) {
} }
return 0; return 0;
} }
......
...@@ -14,15 +14,11 @@ border.margins=Margins ...@@ -14,15 +14,11 @@ border.margins=Margins
button.cancel=Cancel button.cancel=Cancel
button.ok=OK button.ok=OK
button.print=Print button.print=Print
button.properties=Properties... button.properties=P&roperties...
button.properties.mnemonic=R
# #
checkbox.collate=Collate checkbox.collate=&Collate
checkbox.collate.mnemonic=C checkbox.jobsheets=&Banner Page
checkbox.jobsheets=Banner Page checkbox.printtofile=Print To &File
checkbox.jobsheets.mnemonic=B
checkbox.printtofile=Print To File
checkbox.printtofile.mnemonic=F
# #
dialog.printtitle=Print dialog.printtitle=Print
dialog.pstitle=Page Setup dialog.pstitle=Page Setup
...@@ -33,70 +29,42 @@ dialog.noprintermsg=No print service found. ...@@ -33,70 +29,42 @@ dialog.noprintermsg=No print service found.
dialog.writeerror=Cannot write to file: dialog.writeerror=Cannot write to file:
# #
label.info=Info: label.info=Info:
label.jobname=Job Name: label.jobname=&Job Name:
label.jobname.mnemonic=J label.numcopies=Number &of copies:
label.numcopies=Number of copies: label.priority=P&riority:
label.numcopies.mnemonic=O label.psname=&Name:
label.priority=Priority:
label.priority.mnemonic=R
label.psname=Name:
label.psname.mnemonic=N
label.pstype=Type: label.pstype=Type:
label.rangeto=To label.rangeto=To
label.size=Size: label.size=Si&ze:
label.size.mnemonic=Z label.source=Sour&ce:
label.source=Source:
label.source.mnemonic=C
label.status=Status: label.status=Status:
label.username=User Name: label.username=&User Name:
label.username.mnemonic=U
label.millimetres=(mm) label.millimetres=(mm)
label.inches=(in) label.inches=(in)
label.topmargin=top label.topmargin=&top
label.topmargin.mnemonic=T label.bottommargin=&bottom
label.bottommargin=bottom label.leftmargin=le&ft
label.bottommargin.mnemonic=B label.rightmargin=&right
label.leftmargin=left
label.leftmargin.mnemonic=F
label.rightmargin=right
label.rightmargin.mnemonic=R
# #
radiobutton.color=Color radiobutton.color=&Color
radiobutton.color.mnemonic=C radiobutton.draftq=Dra&ft
radiobutton.draftq=Draft radiobutton.duplex=&Duplex
radiobutton.draftq.mnemonic=F radiobutton.highq=&High
radiobutton.duplex=Duplex radiobutton.landscape=&Landscape
radiobutton.duplex.mnemonic=D radiobutton.monochrome=&Monochrome
radiobutton.highq=High radiobutton.normalq=&Normal
radiobutton.highq.mnemonic=H radiobutton.oneside=&One Side
radiobutton.landscape=Landscape radiobutton.portrait=&Portrait
radiobutton.landscape.mnemonic=L radiobutton.rangeall=A&ll
radiobutton.monochrome=Monochrome radiobutton.rangepages=Pag&es
radiobutton.monochrome.mnemonic=M radiobutton.revlandscape=Reverse La&ndscape
radiobutton.normalq=Normal radiobutton.revportrait=Reverse Portra&it
radiobutton.normalq.mnemonic=N radiobutton.tumble=&Tumble
radiobutton.oneside=One Side
radiobutton.oneside.mnemonic=O
radiobutton.portrait=Portrait
radiobutton.portrait.mnemonic=P
radiobutton.rangeall=All
radiobutton.rangeall.mnemonic=L
radiobutton.rangepages=Pages
radiobutton.rangepages.mnemonic=E
radiobutton.revlandscape=Reverse Landscape
radiobutton.revlandscape.mnemonic=N
radiobutton.revportrait=Reverse Portrait
radiobutton.revportrait.mnemonic=I
radiobutton.tumble=Tumble
radiobutton.tumble.mnemonic=T
# The vkMnemonics correspond with the constants defined in KeyEvent, eg # The vkMnemonics correspond with the constants defined in KeyEvent, eg
# 65 = KeyEvent.VK_A # 65 = KeyEvent.VK_A
tab.appearance=Appearance tab.appearance=&Appearance
tab.appearance.vkMnemonic=65 tab.general=&General
tab.general=General tab.pagesetup=Page &Setup
tab.general.vkMnemonic=71
tab.pagesetup=Page Setup
tab.pagesetup.vkMnemonic=83
# #
error.pagerange=Invalid page range; please re-enter values (e.g. 1-3,5,7-10) error.pagerange=Invalid page range; please re-enter values (e.g. 1-3,5,7-10)
error.destination=Invalid filename; please try again error.destination=Invalid filename; please try again
......
...@@ -14,15 +14,11 @@ border.margins=R\u00E4nder ...@@ -14,15 +14,11 @@ border.margins=R\u00E4nder
button.cancel=Abbrechen button.cancel=Abbrechen
button.ok=OK button.ok=OK
button.print=Drucken button.print=Drucken
button.properties=Eigenschaften... button.properties=E&igenschaften...
button.properties.mnemonic=I
# #
checkbox.collate=Sortieren checkbox.collate=So&rtieren
checkbox.collate.mnemonic=R checkbox.jobsheets=&Bannerseite
checkbox.jobsheets=Bannerseite checkbox.printtofile=A&usgabe in Datei
checkbox.jobsheets.mnemonic=B
checkbox.printtofile=Ausgabe in Datei
checkbox.printtofile.mnemonic=U
# #
dialog.printtitle=Drucken dialog.printtitle=Drucken
dialog.pstitle=Seite einrichten dialog.pstitle=Seite einrichten
...@@ -33,70 +29,42 @@ dialog.noprintermsg=Kein Druckservice gefunden. ...@@ -33,70 +29,42 @@ dialog.noprintermsg=Kein Druckservice gefunden.
dialog.writeerror=Schreiben in Datei nicht m\u00F6glich: dialog.writeerror=Schreiben in Datei nicht m\u00F6glich:
# #
label.info=Info: label.info=Info:
label.jobname=Job-Name: label.jobname=&Job-Name:
label.jobname.mnemonic=J label.numcopies=Anzahl &Kopien:
label.numcopies=Anzahl Kopien: label.priority=P&riorit\u00E4t:
label.numcopies.mnemonic=K label.psname=&Name:
label.priority=Priorit\u00E4t:
label.priority.mnemonic=R
label.psname=Name:
label.psname.mnemonic=N
label.pstype=Typ: label.pstype=Typ:
label.rangeto=Bis label.rangeto=Bis
label.size=Gr\u00F6\u00DFe: label.size=Gr\u00F6\u00DF&e:
label.size.mnemonic=E label.source=Q&uelle:
label.source=Quelle:
label.source.mnemonic=U
label.status=Status: label.status=Status:
label.username=Benutzername: label.username=Ben&utzername:
label.username.mnemonic=U
label.millimetres=(mm) label.millimetres=(mm)
label.inches=(Zoll) label.inches=(Zoll)
label.topmargin=oben label.topmargin=&oben
label.topmargin.mnemonic=O label.bottommargin=u&nten
label.bottommargin=unten label.leftmargin=&links
label.bottommargin.mnemonic=N label.rightmargin=&rechts
label.leftmargin=links
label.leftmargin.mnemonic=L
label.rightmargin=rechts
label.rightmargin.mnemonic=R
# #
radiobutton.color=Farbe radiobutton.color=&Farbe
radiobutton.color.mnemonic=F radiobutton.draftq=Ent&wurf
radiobutton.draftq=Entwurf radiobutton.duplex=Du&plex
radiobutton.draftq.mnemonic=W radiobutton.highq=&Hoch
radiobutton.duplex=Duplex radiobutton.landscape=&Querformat
radiobutton.duplex.mnemonic=P radiobutton.monochrome=&Monochrom
radiobutton.highq=Hoch radiobutton.normalq=&Normal
radiobutton.highq.mnemonic=H radiobutton.oneside=&Einseitig
radiobutton.landscape=Querformat radiobutton.portrait=&Hochformat
radiobutton.landscape.mnemonic=Q radiobutton.rangeall=A&lle
radiobutton.monochrome=Monochrom radiobutton.rangepages=S&eiten
radiobutton.monochrome.mnemonic=M radiobutton.revlandscape=U&mgekehrtes Querformat
radiobutton.normalq=Normal radiobutton.revportrait=Umge&kehrtes Hochformat
radiobutton.normalq.mnemonic=N radiobutton.tumble=&Kalenderdruck
radiobutton.oneside=Einseitig
radiobutton.oneside.mnemonic=E
radiobutton.portrait=Hochformat
radiobutton.portrait.mnemonic=H
radiobutton.rangeall=Alle
radiobutton.rangeall.mnemonic=L
radiobutton.rangepages=Seiten
radiobutton.rangepages.mnemonic=E
radiobutton.revlandscape=Umgekehrtes Querformat
radiobutton.revlandscape.mnemonic=M
radiobutton.revportrait=Umgekehrtes Hochformat
radiobutton.revportrait.mnemonic=K
radiobutton.tumble=Kalenderdruck
radiobutton.tumble.mnemonic=K
# The vkMnemonics correspond with the constants defined in KeyEvent, eg # The vkMnemonics correspond with the constants defined in KeyEvent, eg
# 65 = KeyEvent.VK_A # 65 = KeyEvent.VK_A
tab.appearance=Darstellung tab.appearance=&Darstellung
tab.appearance.vkMnemonic=68 tab.general=&Allgemein
tab.general=Allgemein tab.pagesetup=&Seite einrichten
tab.general.vkMnemonic=65
tab.pagesetup=Seite einrichten
tab.pagesetup.vkMnemonic=83
# #
error.pagerange=Ung\u00FCltiger Seitenbereich. Geben Sie die Werte erneut ein (Beispiel: 1-3,5,7-10) error.pagerange=Ung\u00FCltiger Seitenbereich. Geben Sie die Werte erneut ein (Beispiel: 1-3,5,7-10)
error.destination=Ung\u00FCltiger Dateiname. Wiederholen Sie den Vorgang error.destination=Ung\u00FCltiger Dateiname. Wiederholen Sie den Vorgang
......
...@@ -14,15 +14,11 @@ border.margins=M\u00E1rgenes ...@@ -14,15 +14,11 @@ border.margins=M\u00E1rgenes
button.cancel=Cancelar button.cancel=Cancelar
button.ok=Aceptar button.ok=Aceptar
button.print=Imprimir button.print=Imprimir
button.properties=Propiedades... button.properties=P&ropiedades...
button.properties.mnemonic=R
# #
checkbox.collate=Intercalar checkbox.collate=Inter&calar
checkbox.collate.mnemonic=C checkbox.jobsheets=P\u00E1gina d&e R\u00F3tulo
checkbox.jobsheets=P\u00E1gina de R\u00F3tulo checkbox.printtofile=I&mprimir en Archivo
checkbox.jobsheets.mnemonic=E
checkbox.printtofile=Imprimir en Archivo
checkbox.printtofile.mnemonic=M
# #
dialog.printtitle=Imprimir dialog.printtitle=Imprimir
dialog.pstitle=Preparar P\u00E1gina dialog.pstitle=Preparar P\u00E1gina
...@@ -33,70 +29,42 @@ dialog.noprintermsg=No se ha encontrado el servicio de impresi\u00F3n. ...@@ -33,70 +29,42 @@ dialog.noprintermsg=No se ha encontrado el servicio de impresi\u00F3n.
dialog.writeerror=No se puede escribir en el archivo: dialog.writeerror=No se puede escribir en el archivo:
# #
label.info=Informaci\u00F3n: label.info=Informaci\u00F3n:
label.jobname=Nombre del Trabajo: label.jobname=Nombre del &Trabajo:
label.jobname.mnemonic=T label.numcopies=N\u00FAmer&o de Copias:
label.numcopies=N\u00FAmero de Copias: label.priority=Pr&ioridad:
label.numcopies.mnemonic=O label.psname=&Nombre:
label.priority=Prioridad:
label.priority.mnemonic=I
label.psname=Nombre:
label.psname.mnemonic=N
label.pstype=Tipo: label.pstype=Tipo:
label.rangeto=A label.rangeto=A
label.size=Tama\u00F1o: label.size=&Tama\u00F1o:
label.size.mnemonic=T
label.source=Origen: label.source=Origen:
label.source.mnemonic=O
label.status=Estado: label.status=Estado:
label.username=Usuario: label.username=U&suario:
label.username.mnemonic=S
label.millimetres=(mm) label.millimetres=(mm)
label.inches=(pulg.) label.inches=(pulg.)
label.topmargin=superior label.topmargin=superior
label.topmargin.mnemonic=S label.bottommargin=in&ferior
label.bottommargin=inferior label.leftmargin=iz&quierdo
label.bottommargin.mnemonic=F label.rightmargin=d&erecho
label.leftmargin=izquierdo
label.leftmargin.mnemonic=Q
label.rightmargin=derecho
label.rightmargin.mnemonic=E
# #
radiobutton.color=Color radiobutton.color=&Color
radiobutton.color.mnemonic=C radiobutton.draftq=Bo&rrador
radiobutton.draftq=Borrador radiobutton.duplex=&D\u00FAplex
radiobutton.draftq.mnemonic=R radiobutton.highq=A&lta
radiobutton.duplex=D\u00FAplex radiobutton.landscape=Hori&zontal
radiobutton.duplex.mnemonic=D radiobutton.monochrome=&Monocromo
radiobutton.highq=Alta radiobutton.normalq=&Normal
radiobutton.highq.mnemonic=L radiobutton.oneside=&Una Cara
radiobutton.landscape=Horizontal radiobutton.portrait=&Vertical
radiobutton.landscape.mnemonic=Z radiobutton.rangeall=&Todo
radiobutton.monochrome=Monocromo radiobutton.rangepages=P\u00E1&ginas
radiobutton.monochrome.mnemonic=M radiobutton.revlandscape=&Horizontal Inverso
radiobutton.normalq=Normal radiobutton.revportrait=Ve&rtical Inverso
radiobutton.normalq.mnemonic=N radiobutton.tumble=Cam&bio de Cara
radiobutton.oneside=Una Cara
radiobutton.oneside.mnemonic=U
radiobutton.portrait=Vertical
radiobutton.portrait.mnemonic=V
radiobutton.rangeall=Todo
radiobutton.rangeall.mnemonic=T
radiobutton.rangepages=P\u00E1ginas
radiobutton.rangepages.mnemonic=G
radiobutton.revlandscape=Horizontal Inverso
radiobutton.revlandscape.mnemonic=H
radiobutton.revportrait=Vertical Inverso
radiobutton.revportrait.mnemonic=R
radiobutton.tumble=Cambio de Cara
radiobutton.tumble.mnemonic=B
# The vkMnemonics correspond with the constants defined in KeyEvent, eg # The vkMnemonics correspond with the constants defined in KeyEvent, eg
# 65 = KeyEvent.VK_A # 65 = KeyEvent.VK_A
tab.appearance=Apariencia tab.appearance=&Apariencia
tab.appearance.vkMnemonic=65 tab.general=&General
tab.general=General tab.pagesetup=&Preparar P\u00E1gina
tab.general.vkMnemonic=71
tab.pagesetup=Preparar P\u00E1gina
tab.pagesetup.vkMnemonic=80
# #
error.pagerange=Rango de p\u00E1ginas no v\u00E1lido; vuelva a introducir los valores (por ejemplo, 1-3, 5, 7-10) error.pagerange=Rango de p\u00E1ginas no v\u00E1lido; vuelva a introducir los valores (por ejemplo, 1-3, 5, 7-10)
error.destination=Nombre de archivo no v\u00E1lido; int\u00E9ntelo de nuevo error.destination=Nombre de archivo no v\u00E1lido; int\u00E9ntelo de nuevo
......
...@@ -14,15 +14,11 @@ border.margins=Marges ...@@ -14,15 +14,11 @@ border.margins=Marges
button.cancel=Annuler button.cancel=Annuler
button.ok=OK button.ok=OK
button.print=Imprimer button.print=Imprimer
button.properties=Propri\u00E9t\u00E9s... button.properties=P&ropri\u00E9t\u00E9s...
button.properties.mnemonic=R
# #
checkbox.collate=Collationner checkbox.collate=&Collationner
checkbox.collate.mnemonic=C checkbox.jobsheets=Page de &banni\u00E8re
checkbox.jobsheets=Page de banni\u00E8re checkbox.printtofile=Imprimer dans un &fichier
checkbox.jobsheets.mnemonic=B
checkbox.printtofile=Imprimer dans un fichier
checkbox.printtofile.mnemonic=F
# #
dialog.printtitle=Imprimer dialog.printtitle=Imprimer
dialog.pstitle=Mise en page dialog.pstitle=Mise en page
...@@ -33,70 +29,42 @@ dialog.noprintermsg=Service d'impression introuvable. ...@@ -33,70 +29,42 @@ dialog.noprintermsg=Service d'impression introuvable.
dialog.writeerror=Impossible d'\u00E9crire dans le fichier : dialog.writeerror=Impossible d'\u00E9crire dans le fichier :
# #
label.info=Infos : label.info=Infos :
label.jobname=Nom du travail : label.jobname=Nom du &travail :
label.jobname.mnemonic=T label.numcopies=N&ombre de copies :
label.numcopies=Nombre de copies : label.priority=P&riorit\u00E9 :
label.numcopies.mnemonic=O label.psname=&Nom :
label.priority=Priorit\u00E9 :
label.priority.mnemonic=R
label.psname=Nom :
label.psname.mnemonic=N
label.pstype=Type : label.pstype=Type :
label.rangeto=A label.rangeto=A
label.size=Taille : label.size=Tai&lle :
label.size.mnemonic=L label.source=Sour&ce :
label.source=Source :
label.source.mnemonic=C
label.status=Statut : label.status=Statut :
label.username=Nom utilisateur : label.username=N&om utilisateur :
label.username.mnemonic=O
label.millimetres=(mm) label.millimetres=(mm)
label.inches=(po) label.inches=(po)
label.topmargin=haut label.topmargin=&haut
label.topmargin.mnemonic=H label.bottommargin=&bas
label.bottommargin=bas label.leftmargin=&gauche
label.bottommargin.mnemonic=B label.rightmargin=&droite
label.leftmargin=gauche
label.leftmargin.mnemonic=G
label.rightmargin=droite
label.rightmargin.mnemonic=D
# #
radiobutton.color=Couleur radiobutton.color=&Couleur
radiobutton.color.mnemonic=C radiobutton.draftq=Broui&llon
radiobutton.draftq=Brouillon radiobutton.duplex=&Duplex
radiobutton.draftq.mnemonic=L radiobutton.highq=Ma&x.
radiobutton.duplex=Duplex radiobutton.landscape=Pa&ysage
radiobutton.duplex.mnemonic=D radiobutton.monochrome=&Monochrome
radiobutton.highq=Max. radiobutton.normalq=&Normal
radiobutton.highq.mnemonic=X radiobutton.oneside=&Un c\u00F4t\u00E9
radiobutton.landscape=Paysage radiobutton.portrait=&Portrait
radiobutton.landscape.mnemonic=Y radiobutton.rangeall=&Tout
radiobutton.monochrome=Monochrome radiobutton.rangepages=Pag&es
radiobutton.monochrome.mnemonic=M radiobutton.revlandscape=Paysage i&nvers\u00E9
radiobutton.normalq=Normal radiobutton.revportrait=Portra&it invers\u00E9
radiobutton.normalq.mnemonic=N radiobutton.tumble=&T\u00EAte-b\u00EAche
radiobutton.oneside=Un c\u00F4t\u00E9
radiobutton.oneside.mnemonic=U
radiobutton.portrait=Portrait
radiobutton.portrait.mnemonic=P
radiobutton.rangeall=Tout
radiobutton.rangeall.mnemonic=T
radiobutton.rangepages=Pages
radiobutton.rangepages.mnemonic=E
radiobutton.revlandscape=Paysage invers\u00E9
radiobutton.revlandscape.mnemonic=N
radiobutton.revportrait=Portrait invers\u00E9
radiobutton.revportrait.mnemonic=I
radiobutton.tumble=T\u00EAte-b\u00EAche
radiobutton.tumble.mnemonic=T
# The vkMnemonics correspond with the constants defined in KeyEvent, eg # The vkMnemonics correspond with the constants defined in KeyEvent, eg
# 65 = KeyEvent.VK_A # 65 = KeyEvent.VK_A
tab.appearance=Apparence tab.appearance=&Apparence
tab.appearance.vkMnemonic=65 tab.general=&G\u00E9n\u00E9ral
tab.general=G\u00E9n\u00E9ral tab.pagesetup=Mi&se en page
tab.general.vkMnemonic=71
tab.pagesetup=Mise en page
tab.pagesetup.vkMnemonic=83
# #
error.pagerange=Plage de pages non valide. Sp\u00E9cifiez les valeurs de nouveau (ex. : 1-3,5,7-10) error.pagerange=Plage de pages non valide. Sp\u00E9cifiez les valeurs de nouveau (ex. : 1-3,5,7-10)
error.destination=Nom de fichier non valide ; recommencez error.destination=Nom de fichier non valide ; recommencez
......
...@@ -14,15 +14,11 @@ border.margins=Margini ...@@ -14,15 +14,11 @@ border.margins=Margini
button.cancel=Annulla button.cancel=Annulla
button.ok=OK button.ok=OK
button.print=Stampa button.print=Stampa
button.properties=Propriet\u00E0... button.properties=P&ropriet\u00E0...
button.properties.mnemonic=R
# #
checkbox.collate=Fascicola checkbox.collate=Fascico&la
checkbox.collate.mnemonic=L checkbox.jobsheets=&Pagina banner
checkbox.jobsheets=Pagina banner checkbox.printtofile=Stampa su &file
checkbox.jobsheets.mnemonic=P
checkbox.printtofile=Stampa su file
checkbox.printtofile.mnemonic=F
# #
dialog.printtitle=Stampa dialog.printtitle=Stampa
dialog.pstitle=Imposta pagina dialog.pstitle=Imposta pagina
...@@ -33,70 +29,42 @@ dialog.noprintermsg=Nessun servizio di stampa trovato ...@@ -33,70 +29,42 @@ dialog.noprintermsg=Nessun servizio di stampa trovato
dialog.writeerror=Impossibile scrivere nel file: dialog.writeerror=Impossibile scrivere nel file:
# #
label.info=Informazioni: label.info=Informazioni:
label.jobname=Nome job: label.jobname=Nome &job:
label.jobname.mnemonic=J label.numcopies=Numer&o di copie:
label.numcopies=Numero di copie: label.priority=Pr&iorit\u00E0:
label.numcopies.mnemonic=O label.psname=&Nome:
label.priority=Priorit\u00E0:
label.priority.mnemonic=I
label.psname=Nome:
label.psname.mnemonic=N
label.pstype=Tipo: label.pstype=Tipo:
label.rangeto=A label.rangeto=A
label.size=Dimensioni: label.size=Di&mensioni:
label.size.mnemonic=M label.source=O&rigine:
label.source=Origine:
label.source.mnemonic=R
label.status=Stato: label.status=Stato:
label.username=Nome utente: label.username=Nome &utente:
label.username.mnemonic=U
label.millimetres=(mm) label.millimetres=(mm)
label.inches=(poll.) label.inches=(poll.)
label.topmargin=superiore label.topmargin=su&periore
label.topmargin.mnemonic=P label.bottommargin=in&feriore
label.bottommargin=inferiore label.leftmargin=sinis&tro
label.bottommargin.mnemonic=F label.rightmargin=&destro
label.leftmargin=sinistro
label.leftmargin.mnemonic=T
label.rightmargin=destro
label.rightmargin.mnemonic=D
# #
radiobutton.color=Colore radiobutton.color=&Colore
radiobutton.color.mnemonic=C radiobutton.draftq=&Bozza
radiobutton.draftq=Bozza radiobutton.duplex=F&ronte retro
radiobutton.draftq.mnemonic=B radiobutton.highq=A&lta
radiobutton.duplex=Fronte retro radiobutton.landscape=Orizzonta&le
radiobutton.duplex.mnemonic=R radiobutton.monochrome=&Monocromatico
radiobutton.highq=Alta radiobutton.normalq=&Normale
radiobutton.highq.mnemonic=L radiobutton.oneside=Un lat&o
radiobutton.landscape=Orizzontale radiobutton.portrait=&Verticale
radiobutton.landscape.mnemonic=L radiobutton.rangeall=T&utto
radiobutton.monochrome=Monocromatico radiobutton.rangepages=Pagin&e
radiobutton.monochrome.mnemonic=M radiobutton.revlandscape=Orizzo&ntale capovolto
radiobutton.normalq=Normale radiobutton.revportrait=Vert&icale capovolto
radiobutton.normalq.mnemonic=N radiobutton.tumble=La&to corto
radiobutton.oneside=Un lato
radiobutton.oneside.mnemonic=O
radiobutton.portrait=Verticale
radiobutton.portrait.mnemonic=V
radiobutton.rangeall=Tutto
radiobutton.rangeall.mnemonic=U
radiobutton.rangepages=Pagine
radiobutton.rangepages.mnemonic=E
radiobutton.revlandscape=Orizzontale capovolto
radiobutton.revlandscape.mnemonic=N
radiobutton.revportrait=Verticale capovolto
radiobutton.revportrait.mnemonic=I
radiobutton.tumble=Lato corto
radiobutton.tumble.mnemonic=T
# The vkMnemonics correspond with the constants defined in KeyEvent, eg # The vkMnemonics correspond with the constants defined in KeyEvent, eg
# 65 = KeyEvent.VK_A # 65 = KeyEvent.VK_A
tab.appearance=Aspetto tab.appearance=&Aspetto
tab.appearance.vkMnemonic=65 tab.general=&Generale
tab.general=Generale tab.pagesetup=Impo&sta pagina
tab.general.vkMnemonic=71
tab.pagesetup=Imposta pagina
tab.pagesetup.vkMnemonic=83
# #
error.pagerange=Intervallo pagine non valido; immettere nuovamente i valori (ad es. 1-3,5,7-10) error.pagerange=Intervallo pagine non valido; immettere nuovamente i valori (ad es. 1-3,5,7-10)
error.destination=Nome file non valido; riprovare error.destination=Nome file non valido; riprovare
......
...@@ -14,15 +14,11 @@ border.margins=\u30DE\u30FC\u30B8\u30F3 ...@@ -14,15 +14,11 @@ border.margins=\u30DE\u30FC\u30B8\u30F3
button.cancel=\u53D6\u6D88 button.cancel=\u53D6\u6D88
button.ok=OK button.ok=OK
button.print=\u5370\u5237 button.print=\u5370\u5237
button.properties=\u30D7\u30ED\u30D1\u30C6\u30A3(R)... button.properties=\u30D7\u30ED\u30D1\u30C6\u30A3(&R)...
button.properties.mnemonic=R
# #
checkbox.collate=\u4E01\u5408\u3044(C) checkbox.collate=\u4E01\u5408\u3044(&C)
checkbox.collate.mnemonic=C checkbox.jobsheets=\u30D0\u30CA\u30FC\u30FB\u30DA\u30FC\u30B8(&B)
checkbox.jobsheets=\u30D0\u30CA\u30FC\u30FB\u30DA\u30FC\u30B8(B) checkbox.printtofile=\u30D5\u30A1\u30A4\u30EB\u306B\u51FA\u529B(&F)
checkbox.jobsheets.mnemonic=B
checkbox.printtofile=\u30D5\u30A1\u30A4\u30EB\u306B\u51FA\u529B(F)
checkbox.printtofile.mnemonic=F
# #
dialog.printtitle=\u5370\u5237 dialog.printtitle=\u5370\u5237
dialog.pstitle=\u30DA\u30FC\u30B8\u8A2D\u5B9A dialog.pstitle=\u30DA\u30FC\u30B8\u8A2D\u5B9A
...@@ -33,70 +29,42 @@ dialog.noprintermsg=\u5370\u5237\u30B5\u30FC\u30D3\u30B9\u304C\u898B\u3064\u304B ...@@ -33,70 +29,42 @@ dialog.noprintermsg=\u5370\u5237\u30B5\u30FC\u30D3\u30B9\u304C\u898B\u3064\u304B
dialog.writeerror=\u30D5\u30A1\u30A4\u30EB\u306B\u66F8\u304D\u8FBC\u3081\u307E\u305B\u3093: dialog.writeerror=\u30D5\u30A1\u30A4\u30EB\u306B\u66F8\u304D\u8FBC\u3081\u307E\u305B\u3093:
# #
label.info=\u60C5\u5831: label.info=\u60C5\u5831:
label.jobname=\u30B8\u30E7\u30D6\u540D(J): label.jobname=\u30B8\u30E7\u30D6\u540D(&J):
label.jobname.mnemonic=J label.numcopies=\u5370\u5237\u90E8\u6570(&O):
label.numcopies=\u5370\u5237\u90E8\u6570(O): label.priority=\u512A\u5148\u5EA6(&R):
label.numcopies.mnemonic=O label.psname=\u540D\u524D(&N):
label.priority=\u512A\u5148\u5EA6(R):
label.priority.mnemonic=R
label.psname=\u540D\u524D(N):
label.psname.mnemonic=N
label.pstype=\u30BF\u30A4\u30D7: label.pstype=\u30BF\u30A4\u30D7:
label.rangeto=\u5370\u5237\u7BC4\u56F2 label.rangeto=\u5370\u5237\u7BC4\u56F2
label.size=\u30B5\u30A4\u30BA(Z): label.size=\u30B5\u30A4\u30BA(&Z):
label.size.mnemonic=Z label.source=\u30BD\u30FC\u30B9(&C):
label.source=\u30BD\u30FC\u30B9(C):
label.source.mnemonic=C
label.status=\u72B6\u614B: label.status=\u72B6\u614B:
label.username=\u30E6\u30FC\u30B6\u30FC\u540D(U): label.username=\u30E6\u30FC\u30B6\u30FC\u540D(&U):
label.username.mnemonic=U
label.millimetres=(mm) label.millimetres=(mm)
label.inches=(in) label.inches=(in)
label.topmargin=\u4E0A(T) label.topmargin=\u4E0A(&T)
label.topmargin.mnemonic=T label.bottommargin=\u4E0B(&B)
label.bottommargin=\u4E0B(B) label.leftmargin=\u5DE6(&F)
label.bottommargin.mnemonic=B label.rightmargin=\u53F3(&R)
label.leftmargin=\u5DE6(F)
label.leftmargin.mnemonic=F
label.rightmargin=\u53F3(R)
label.rightmargin.mnemonic=R
# #
radiobutton.color=\u30AB\u30E9\u30FC(C) radiobutton.color=\u30AB\u30E9\u30FC(&C)
radiobutton.color.mnemonic=C radiobutton.draftq=\u30C9\u30E9\u30D5\u30C8(&F)
radiobutton.draftq=\u30C9\u30E9\u30D5\u30C8(F) radiobutton.duplex=\u4E21\u9762(&D)
radiobutton.draftq.mnemonic=F radiobutton.highq=\u9AD8(&H)
radiobutton.duplex=\u4E21\u9762(D) radiobutton.landscape=\u6A2A(&L)
radiobutton.duplex.mnemonic=D radiobutton.monochrome=\u30E2\u30CE\u30AF\u30ED(&M)
radiobutton.highq=\u9AD8(H) radiobutton.normalq=\u6A19\u6E96(&N)
radiobutton.highq.mnemonic=H radiobutton.oneside=\u7247\u9762(&O)
radiobutton.landscape=\u6A2A(L) radiobutton.portrait=\u7E26(&P)
radiobutton.landscape.mnemonic=L radiobutton.rangeall=\u3059\u3079\u3066(&L)
radiobutton.monochrome=\u30E2\u30CE\u30AF\u30ED(M) radiobutton.rangepages=\u30DA\u30FC\u30B8(&E)
radiobutton.monochrome.mnemonic=M radiobutton.revlandscape=\u30E9\u30F3\u30C9\u30B9\u30B1\u30FC\u30D7(\u53CD\u8EE2)(&N)
radiobutton.normalq=\u6A19\u6E96(N) radiobutton.revportrait=\u30DD\u30FC\u30C8\u30EC\u30A4\u30C8(\u53CD\u8EE2)(&I)
radiobutton.normalq.mnemonic=N radiobutton.tumble=\u53CD\u8EE2(&T)
radiobutton.oneside=\u7247\u9762(O)
radiobutton.oneside.mnemonic=O
radiobutton.portrait=\u7E26(P)
radiobutton.portrait.mnemonic=P
radiobutton.rangeall=\u3059\u3079\u3066(L)
radiobutton.rangeall.mnemonic=L
radiobutton.rangepages=\u30DA\u30FC\u30B8(E)
radiobutton.rangepages.mnemonic=E
radiobutton.revlandscape=\u30E9\u30F3\u30C9\u30B9\u30B1\u30FC\u30D7(\u53CD\u8EE2)(N)
radiobutton.revlandscape.mnemonic=N
radiobutton.revportrait=\u30DD\u30FC\u30C8\u30EC\u30A4\u30C8(\u53CD\u8EE2)(I)
radiobutton.revportrait.mnemonic=I
radiobutton.tumble=\u53CD\u8EE2(T)
radiobutton.tumble.mnemonic=T
# The vkMnemonics correspond with the constants defined in KeyEvent, eg # The vkMnemonics correspond with the constants defined in KeyEvent, eg
# 65 = KeyEvent.VK_A # 65 = KeyEvent.VK_A
tab.appearance=\u5916\u89B3(A) tab.appearance=\u5916\u89B3(&A)
tab.appearance.vkMnemonic=65 tab.general=\u4E00\u822C(&G)
tab.general=\u4E00\u822C(G) tab.pagesetup=\u30DA\u30FC\u30B8\u8A2D\u5B9A(&S)
tab.general.vkMnemonic=71
tab.pagesetup=\u30DA\u30FC\u30B8\u8A2D\u5B9A(S)
tab.pagesetup.vkMnemonic=83
# #
error.pagerange=\u7121\u52B9\u306A\u30DA\u30FC\u30B8\u7BC4\u56F2\u3002\u5024\u3092\u518D\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044(\u4F8B\u30011-3,5,7-10) error.pagerange=\u7121\u52B9\u306A\u30DA\u30FC\u30B8\u7BC4\u56F2\u3002\u5024\u3092\u518D\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044(\u4F8B\u30011-3,5,7-10)
error.destination=\u7121\u52B9\u306A\u30D5\u30A1\u30A4\u30EB\u540D\u3002\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u518D\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 error.destination=\u7121\u52B9\u306A\u30D5\u30A1\u30A4\u30EB\u540D\u3002\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u518D\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044
......
...@@ -14,15 +14,11 @@ border.margins=\uC5EC\uBC31 ...@@ -14,15 +14,11 @@ border.margins=\uC5EC\uBC31
button.cancel=\uCDE8\uC18C button.cancel=\uCDE8\uC18C
button.ok=\uD655\uC778 button.ok=\uD655\uC778
button.print=\uC778\uC1C4 button.print=\uC778\uC1C4
button.properties=\uC18D\uC131(R)... button.properties=\uC18D\uC131(&R)...
button.properties.mnemonic=R
# #
checkbox.collate=\uD55C \uBD80\uC529 \uC778\uC1C4(C) checkbox.collate=\uD55C \uBD80\uC529 \uC778\uC1C4(&C)
checkbox.collate.mnemonic=C checkbox.jobsheets=\uBC30\uB108 \uD398\uC774\uC9C0(&B)
checkbox.jobsheets=\uBC30\uB108 \uD398\uC774\uC9C0(B) checkbox.printtofile=\uD30C\uC77C\uB85C \uC778\uC1C4(&F)
checkbox.jobsheets.mnemonic=B
checkbox.printtofile=\uD30C\uC77C\uB85C \uC778\uC1C4(F)
checkbox.printtofile.mnemonic=F
# #
dialog.printtitle=\uC778\uC1C4 dialog.printtitle=\uC778\uC1C4
dialog.pstitle=\uD398\uC774\uC9C0 \uC124\uC815 dialog.pstitle=\uD398\uC774\uC9C0 \uC124\uC815
...@@ -33,70 +29,42 @@ dialog.noprintermsg=\uC778\uC1C4 \uC11C\uBE44\uC2A4\uB97C \uCC3E\uC744 \uC218 \u ...@@ -33,70 +29,42 @@ dialog.noprintermsg=\uC778\uC1C4 \uC11C\uBE44\uC2A4\uB97C \uCC3E\uC744 \uC218 \u
dialog.writeerror=\uD30C\uC77C\uC5D0 \uC4F8 \uC218 \uC5C6\uC74C: dialog.writeerror=\uD30C\uC77C\uC5D0 \uC4F8 \uC218 \uC5C6\uC74C:
# #
label.info=\uC815\uBCF4: label.info=\uC815\uBCF4:
label.jobname=\uC791\uC5C5 \uC774\uB984(J): label.jobname=\uC791\uC5C5 \uC774\uB984(&J):
label.jobname.mnemonic=J label.numcopies=\uB9E4\uC218(&O):
label.numcopies=\uB9E4\uC218(O): label.priority=\uC6B0\uC120\uC21C\uC704(&R):
label.numcopies.mnemonic=O label.psname=\uC774\uB984(&N):
label.priority=\uC6B0\uC120\uC21C\uC704(R):
label.priority.mnemonic=R
label.psname=\uC774\uB984(N):
label.psname.mnemonic=N
label.pstype=\uC720\uD615: label.pstype=\uC720\uD615:
label.rangeto=\uC885\uB8CC label.rangeto=\uC885\uB8CC
label.size=\uD06C\uAE30(Z): label.size=\uD06C\uAE30(&Z):
label.size.mnemonic=Z label.source=\uC18C\uC2A4(&C):
label.source=\uC18C\uC2A4(C):
label.source.mnemonic=C
label.status=\uC0C1\uD0DC: label.status=\uC0C1\uD0DC:
label.username=\uC0AC\uC6A9\uC790 \uC774\uB984(U): label.username=\uC0AC\uC6A9\uC790 \uC774\uB984(&U):
label.username.mnemonic=U
label.millimetres=(mm) label.millimetres=(mm)
label.inches=(\uC778\uCE58) label.inches=(\uC778\uCE58)
label.topmargin=\uC704\uCABD(T) label.topmargin=\uC704\uCABD(&T)
label.topmargin.mnemonic=T label.bottommargin=\uC544\uB798\uCABD(&B)
label.bottommargin=\uC544\uB798\uCABD(B) label.leftmargin=\uC67C\uCABD(&F)
label.bottommargin.mnemonic=B label.rightmargin=\uC624\uB978\uCABD(&R)
label.leftmargin=\uC67C\uCABD(F)
label.leftmargin.mnemonic=F
label.rightmargin=\uC624\uB978\uCABD(R)
label.rightmargin.mnemonic=R
# #
radiobutton.color=\uC0C9\uC0C1(C) radiobutton.color=\uC0C9\uC0C1(&C)
radiobutton.color.mnemonic=C radiobutton.draftq=\uCD08\uC548(&F)
radiobutton.draftq=\uCD08\uC548(F) radiobutton.duplex=\uC591\uBA74(&D)
radiobutton.draftq.mnemonic=F radiobutton.highq=\uB192\uC74C(&H)
radiobutton.duplex=\uC591\uBA74(D) radiobutton.landscape=\uAC00\uB85C(&L)
radiobutton.duplex.mnemonic=D radiobutton.monochrome=\uB2E8\uC0C9(&M)
radiobutton.highq=\uB192\uC74C(H) radiobutton.normalq=\uBCF4\uD1B5(&N)
radiobutton.highq.mnemonic=H radiobutton.oneside=\uB2E8\uBA74(&O)
radiobutton.landscape=\uAC00\uB85C(L) radiobutton.portrait=\uC138\uB85C(&P)
radiobutton.landscape.mnemonic=L radiobutton.rangeall=\uC804\uCCB4(&L)
radiobutton.monochrome=\uB2E8\uC0C9(M) radiobutton.rangepages=\uD398\uC774\uC9C0(&E)
radiobutton.monochrome.mnemonic=M radiobutton.revlandscape=\uAC00\uB85C \uBC18\uC804(&N)
radiobutton.normalq=\uBCF4\uD1B5(N) radiobutton.revportrait=\uC138\uB85C \uBC18\uC804(&I)
radiobutton.normalq.mnemonic=N radiobutton.tumble=\uD68C\uC804\uC2DD(&T)
radiobutton.oneside=\uB2E8\uBA74(O)
radiobutton.oneside.mnemonic=O
radiobutton.portrait=\uC138\uB85C(P)
radiobutton.portrait.mnemonic=P
radiobutton.rangeall=\uC804\uCCB4(L)
radiobutton.rangeall.mnemonic=L
radiobutton.rangepages=\uD398\uC774\uC9C0(E)
radiobutton.rangepages.mnemonic=E
radiobutton.revlandscape=\uAC00\uB85C \uBC18\uC804(N)
radiobutton.revlandscape.mnemonic=N
radiobutton.revportrait=\uC138\uB85C \uBC18\uC804(I)
radiobutton.revportrait.mnemonic=I
radiobutton.tumble=\uD68C\uC804\uC2DD(T)
radiobutton.tumble.mnemonic=T
# The vkMnemonics correspond with the constants defined in KeyEvent, eg # The vkMnemonics correspond with the constants defined in KeyEvent, eg
# 65 = KeyEvent.VK_A # 65 = KeyEvent.VK_A
tab.appearance=\uBAA8\uC591(A) tab.appearance=\uBAA8\uC591(&A)
tab.appearance.vkMnemonic=65 tab.general=\uC77C\uBC18 \uC0AC\uD56D(&G)
tab.general=\uC77C\uBC18 \uC0AC\uD56D(G) tab.pagesetup=\uD398\uC774\uC9C0 \uC124\uC815(&S)
tab.general.vkMnemonic=71
tab.pagesetup=\uD398\uC774\uC9C0 \uC124\uC815(S)
tab.pagesetup.vkMnemonic=83
# #
error.pagerange=\uBD80\uC801\uD569\uD55C \uD398\uC774\uC9C0 \uBC94\uC704: \uAC12\uC744 \uB2E4\uC2DC \uC785\uB825\uD558\uC2ED\uC2DC\uC624(\uC608: 1-3,5,7-10). error.pagerange=\uBD80\uC801\uD569\uD55C \uD398\uC774\uC9C0 \uBC94\uC704: \uAC12\uC744 \uB2E4\uC2DC \uC785\uB825\uD558\uC2ED\uC2DC\uC624(\uC608: 1-3,5,7-10).
error.destination=\uBD80\uC801\uD569\uD55C \uD30C\uC77C \uC774\uB984: \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC2ED\uC2DC\uC624. error.destination=\uBD80\uC801\uD569\uD55C \uD30C\uC77C \uC774\uB984: \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC2ED\uC2DC\uC624.
......
...@@ -14,15 +14,11 @@ border.margins=Margens ...@@ -14,15 +14,11 @@ border.margins=Margens
button.cancel=Cancelar button.cancel=Cancelar
button.ok=OK button.ok=OK
button.print=Imprimir button.print=Imprimir
button.properties=Propriedades... button.properties=Proprie&dades...
button.properties.mnemonic=D
# #
checkbox.collate=Agrupar checkbox.collate=Ag&rupar
checkbox.collate.mnemonic=R checkbox.jobsheets=P\u00E1gina com &Banner
checkbox.jobsheets=P\u00E1gina com Banner checkbox.printtofile=&Imprimir em Arquivo
checkbox.jobsheets.mnemonic=B
checkbox.printtofile=Imprimir em Arquivo
checkbox.printtofile.mnemonic=I
# #
dialog.printtitle=Imprimir dialog.printtitle=Imprimir
dialog.pstitle=Configura\u00E7\u00E3o da P\u00E1gina dialog.pstitle=Configura\u00E7\u00E3o da P\u00E1gina
...@@ -33,70 +29,42 @@ dialog.noprintermsg=Nenhum servi\u00E7o de impress\u00E3o encontrado. ...@@ -33,70 +29,42 @@ dialog.noprintermsg=Nenhum servi\u00E7o de impress\u00E3o encontrado.
dialog.writeerror=N\u00E3o \u00E9 poss\u00EDvel gravar no arquivo: dialog.writeerror=N\u00E3o \u00E9 poss\u00EDvel gravar no arquivo:
# #
label.info=Informa\u00E7\u00F5es: label.info=Informa\u00E7\u00F5es:
label.jobname=Nome do Job: label.jobname=Nome do &Job:
label.jobname.mnemonic=J label.numcopies=N\u00FAmer&o de c\u00F3pias:
label.numcopies=N\u00FAmero de c\u00F3pias: label.priority=&Prioridade:
label.numcopies.mnemonic=O label.psname=&Nome:
label.priority=Prioridade:
label.priority.mnemonic=P
label.psname=Nome:
label.psname.mnemonic=N
label.pstype=Tipo: label.pstype=Tipo:
label.rangeto=At\u00E9 label.rangeto=At\u00E9
label.size=Tamanho: label.size=Ta&manho:
label.size.mnemonic=M label.source=&Origem:
label.source=Origem:
label.source.mnemonic=O
label.status=Status: label.status=Status:
label.username=Nome do Usu\u00E1rio: label.username=Nome do &Usu\u00E1rio:
label.username.mnemonic=U
label.millimetres=(mm) label.millimetres=(mm)
label.inches=(pol) label.inches=(pol)
label.topmargin=superior label.topmargin=&superior
label.topmargin.mnemonic=S label.bottommargin=&inferior
label.bottommargin=inferior label.leftmargin=es&querda:
label.bottommargin.mnemonic=I label.rightmargin=&direita
label.leftmargin=esquerda:
label.leftmargin.mnemonic=Q
label.rightmargin=direita
label.rightmargin.mnemonic=D
# #
radiobutton.color=Cor radiobutton.color=C&or
radiobutton.color.mnemonic=O radiobutton.draftq=&Rascunho
radiobutton.draftq=Rascunho radiobutton.duplex=&Duplex
radiobutton.draftq.mnemonic=R radiobutton.highq=Al&ta
radiobutton.duplex=Duplex radiobutton.landscape=&Paisagem
radiobutton.duplex.mnemonic=D radiobutton.monochrome=&Monocrom\u00E1tico
radiobutton.highq=Alta radiobutton.normalq=&Normal
radiobutton.highq.mnemonic=T radiobutton.oneside=Um &Lado
radiobutton.landscape=Paisagem radiobutton.portrait=&Retrato
radiobutton.landscape.mnemonic=P radiobutton.rangeall=T&udo
radiobutton.monochrome=Monocrom\u00E1tico radiobutton.rangepages=&P\u00E1ginas
radiobutton.monochrome.mnemonic=M radiobutton.revlandscape=Paisagem I&nvertida
radiobutton.normalq=Normal radiobutton.revportrait=R&etrato Invertido
radiobutton.normalq.mnemonic=N radiobutton.tumble=&Virar
radiobutton.oneside=Um Lado
radiobutton.oneside.mnemonic=L
radiobutton.portrait=Retrato
radiobutton.portrait.mnemonic=R
radiobutton.rangeall=Tudo
radiobutton.rangeall.mnemonic=U
radiobutton.rangepages=P\u00E1ginas
radiobutton.rangepages.mnemonic=P
radiobutton.revlandscape=Paisagem Invertida
radiobutton.revlandscape.mnemonic=N
radiobutton.revportrait=Retrato Invertido
radiobutton.revportrait.mnemonic=E
radiobutton.tumble=Virar
radiobutton.tumble.mnemonic=V
# The vkMnemonics correspond with the constants defined in KeyEvent, eg # The vkMnemonics correspond with the constants defined in KeyEvent, eg
# 65 = KeyEvent.VK_A # 65 = KeyEvent.VK_A
tab.appearance=Apar\u00EAncia tab.appearance=&Apar\u00EAncia
tab.appearance.vkMnemonic=65 tab.general=&Geral
tab.general=Geral tab.pagesetup=&Configura\u00E7\u00E3o de P\u00E1gina
tab.general.vkMnemonic=71
tab.pagesetup=Configura\u00E7\u00E3o de P\u00E1gina
tab.pagesetup.vkMnemonic=67
# #
error.pagerange=Faixa de p\u00E1ginas inv\u00E1lida; insira novamente os valores (por exemplo, 1-3,5,7-10) error.pagerange=Faixa de p\u00E1ginas inv\u00E1lida; insira novamente os valores (por exemplo, 1-3,5,7-10)
error.destination=Nome de arquivo inv\u00E1lido; tente novamente error.destination=Nome de arquivo inv\u00E1lido; tente novamente
......
...@@ -14,15 +14,11 @@ border.margins=Marginaler ...@@ -14,15 +14,11 @@ border.margins=Marginaler
button.cancel=Avbryt button.cancel=Avbryt
button.ok=OK button.ok=OK
button.print=Skriv ut button.print=Skriv ut
button.properties=Egenskaper... button.properties=Egenskape&r...
button.properties.mnemonic=R
# #
checkbox.collate=Sortera checkbox.collate=Sor&tera
checkbox.collate.mnemonic=T checkbox.jobsheets=F\u00F6&rs\u00E4ttsblad
checkbox.jobsheets=F\u00F6rs\u00E4ttsblad checkbox.printtofile=S&kriv ut till fil
checkbox.jobsheets.mnemonic=R
checkbox.printtofile=Skriv ut till fil
checkbox.printtofile.mnemonic=K
# #
dialog.printtitle=Skriv ut dialog.printtitle=Skriv ut
dialog.pstitle=Utskriftsformat dialog.pstitle=Utskriftsformat
...@@ -33,70 +29,42 @@ dialog.noprintermsg=Hittade ingen utskriftstj\u00E4nst. ...@@ -33,70 +29,42 @@ dialog.noprintermsg=Hittade ingen utskriftstj\u00E4nst.
dialog.writeerror=Kan inte skriva till filen: dialog.writeerror=Kan inte skriva till filen:
# #
label.info=Information: label.info=Information:
label.jobname=Utskrift: label.jobname=&Utskrift:
label.jobname.mnemonic=U label.numcopies=Antal &exemplar:
label.numcopies=Antal exemplar: label.priority=P&rioritet:
label.numcopies.mnemonic=E label.psname=&Namn:
label.priority=Prioritet:
label.priority.mnemonic=R
label.psname=Namn:
label.psname.mnemonic=N
label.pstype=Typ: label.pstype=Typ:
label.rangeto=Till label.rangeto=Till
label.size=Storlek: label.size=St&orlek:
label.size.mnemonic=O label.source=&K\u00E4lla:
label.source=K\u00E4lla:
label.source.mnemonic=K
label.status=Status: label.status=Status:
label.username=Anv\u00E4ndarnamn: label.username=A&nv\u00E4ndarnamn:
label.username.mnemonic=N
label.millimetres=(mm) label.millimetres=(mm)
label.inches=(tum) label.inches=(tum)
label.topmargin=\u00F6verkant label.topmargin=\u00F6ve&rkant
label.topmargin.mnemonic=R label.bottommargin=&nederkant
label.bottommargin=nederkant label.leftmargin=&v\u00E4nster
label.bottommargin.mnemonic=N label.rightmargin=&h\u00F6ger
label.leftmargin=v\u00E4nster
label.leftmargin.mnemonic=V
label.rightmargin=h\u00F6ger
label.rightmargin.mnemonic=H
# #
radiobutton.color=F\u00E4rg radiobutton.color=F\u00E4r&g
radiobutton.color.mnemonic=G radiobutton.draftq=Ut&kast
radiobutton.draftq=Utkast radiobutton.duplex=&Dubbelsidig
radiobutton.draftq.mnemonic=K radiobutton.highq=&H\u00F6g
radiobutton.duplex=Dubbelsidig radiobutton.landscape=&Liggande
radiobutton.duplex.mnemonic=D radiobutton.monochrome=&Monokrom
radiobutton.highq=H\u00F6g radiobutton.normalq=N&ormal
radiobutton.highq.mnemonic=H radiobutton.oneside=&Ensidig
radiobutton.landscape=Liggande radiobutton.portrait=St\u00E5en&de
radiobutton.landscape.mnemonic=L radiobutton.rangeall=A&lla
radiobutton.monochrome=Monokrom radiobutton.rangepages=Si&dor
radiobutton.monochrome.mnemonic=M radiobutton.revlandscape=Omv\u00E4nt li&ggande
radiobutton.normalq=Normal radiobutton.revportrait=O&mv\u00E4nt st\u00E5ende
radiobutton.normalq.mnemonic=O radiobutton.tumble=&V\u00E4nd
radiobutton.oneside=Ensidig
radiobutton.oneside.mnemonic=E
radiobutton.portrait=St\u00E5ende
radiobutton.portrait.mnemonic=D
radiobutton.rangeall=Alla
radiobutton.rangeall.mnemonic=L
radiobutton.rangepages=Sidor
radiobutton.rangepages.mnemonic=D
radiobutton.revlandscape=Omv\u00E4nt liggande
radiobutton.revlandscape.mnemonic=G
radiobutton.revportrait=Omv\u00E4nt st\u00E5ende
radiobutton.revportrait.mnemonic=M
radiobutton.tumble=V\u00E4nd
radiobutton.tumble.mnemonic=V
# The vkMnemonics correspond with the constants defined in KeyEvent, eg # The vkMnemonics correspond with the constants defined in KeyEvent, eg
# 65 = KeyEvent.VK_A # 65 = KeyEvent.VK_A
tab.appearance=Format tab.appearance=&Format
tab.appearance.vkMnemonic=70 tab.general=&Allm\u00E4nt
tab.general=Allm\u00E4nt tab.pagesetup=Ut&skriftsformat
tab.general.vkMnemonic=65
tab.pagesetup=Utskriftsformat
tab.pagesetup.vkMnemonic=83
# #
error.pagerange=Ogiltigt sidintervall. Skriv in v\u00E4rdena igen (t ex 1-3,5,7-10) error.pagerange=Ogiltigt sidintervall. Skriv in v\u00E4rdena igen (t ex 1-3,5,7-10)
error.destination=Ogiltigt filnamn. F\u00F6rs\u00F6k igen. error.destination=Ogiltigt filnamn. F\u00F6rs\u00F6k igen.
......
...@@ -14,15 +14,11 @@ border.margins=\u8FB9\u8DDD ...@@ -14,15 +14,11 @@ border.margins=\u8FB9\u8DDD
button.cancel=\u53D6\u6D88 button.cancel=\u53D6\u6D88
button.ok=\u786E\u5B9A button.ok=\u786E\u5B9A
button.print=\u6253\u5370 button.print=\u6253\u5370
button.properties=\u5C5E\u6027(R)... button.properties=\u5C5E\u6027(&R)...
button.properties.mnemonic=R
# #
checkbox.collate=\u9010\u4EFD\u6253\u5370(C) checkbox.collate=\u9010\u4EFD\u6253\u5370(&C)
checkbox.collate.mnemonic=C checkbox.jobsheets=\u6807\u5E1C\u9875(&B)
checkbox.jobsheets=\u6807\u5E1C\u9875(B) checkbox.printtofile=\u6253\u5370\u5230\u6587\u4EF6(&F)
checkbox.jobsheets.mnemonic=B
checkbox.printtofile=\u6253\u5370\u5230\u6587\u4EF6(F)
checkbox.printtofile.mnemonic=F
# #
dialog.printtitle=\u6253\u5370 dialog.printtitle=\u6253\u5370
dialog.pstitle=\u9875\u9762\u8BBE\u7F6E dialog.pstitle=\u9875\u9762\u8BBE\u7F6E
...@@ -33,70 +29,42 @@ dialog.noprintermsg=\u627E\u4E0D\u5230\u6253\u5370\u670D\u52A1\u3002 ...@@ -33,70 +29,42 @@ dialog.noprintermsg=\u627E\u4E0D\u5230\u6253\u5370\u670D\u52A1\u3002
dialog.writeerror=\u65E0\u6CD5\u5199\u5165\u6587\u4EF6: dialog.writeerror=\u65E0\u6CD5\u5199\u5165\u6587\u4EF6:
# #
label.info=\u4FE1\u606F: label.info=\u4FE1\u606F:
label.jobname=\u4F5C\u4E1A\u540D(J): label.jobname=\u4F5C\u4E1A\u540D(&J):
label.jobname.mnemonic=J label.numcopies=\u6253\u5370\u4EFD\u6570(&O):
label.numcopies=\u6253\u5370\u4EFD\u6570(O): label.priority=\u4F18\u5148\u7EA7(&R):
label.numcopies.mnemonic=O label.psname=\u540D\u79F0(&N):
label.priority=\u4F18\u5148\u7EA7(R):
label.priority.mnemonic=R
label.psname=\u540D\u79F0(N):
label.psname.mnemonic=N
label.pstype=\u7C7B\u578B: label.pstype=\u7C7B\u578B:
label.rangeto=\u81F3 label.rangeto=\u81F3
label.size=\u5927\u5C0F(Z): label.size=\u5927\u5C0F(&Z):
label.size.mnemonic=Z label.source=\u6765\u6E90(&C):
label.source=\u6765\u6E90(C):
label.source.mnemonic=C
label.status=\u72B6\u6001: label.status=\u72B6\u6001:
label.username=\u7528\u6237\u540D(U): label.username=\u7528\u6237\u540D(&U):
label.username.mnemonic=U
label.millimetres=(\u6BEB\u7C73) label.millimetres=(\u6BEB\u7C73)
label.inches=(\u82F1\u5BF8) label.inches=(\u82F1\u5BF8)
label.topmargin=\u4E0A\u8FB9\u8DDD(T) label.topmargin=\u4E0A\u8FB9\u8DDD(&T)
label.topmargin.mnemonic=T label.bottommargin=\u4E0B\u8FB9\u8DDD(&B)
label.bottommargin=\u4E0B\u8FB9\u8DDD(B) label.leftmargin=\u5DE6\u8FB9\u8DDD(&F)
label.bottommargin.mnemonic=B label.rightmargin=\u53F3\u8FB9\u8DDD(&R)
label.leftmargin=\u5DE6\u8FB9\u8DDD(F)
label.leftmargin.mnemonic=F
label.rightmargin=\u53F3\u8FB9\u8DDD(R)
label.rightmargin.mnemonic=R
# #
radiobutton.color=\u989C\u8272(C) radiobutton.color=\u989C\u8272(&C)
radiobutton.color.mnemonic=C radiobutton.draftq=\u8349\u56FE(&F)
radiobutton.draftq=\u8349\u56FE(F) radiobutton.duplex=\u53CC\u9762\u6253\u5370(&D)
radiobutton.draftq.mnemonic=F radiobutton.highq=\u9AD8(&H)
radiobutton.duplex=\u53CC\u9762\u6253\u5370(D) radiobutton.landscape=\u6A2A\u5411(&L)
radiobutton.duplex.mnemonic=D radiobutton.monochrome=\u5355\u8272(&M)
radiobutton.highq=\u9AD8(H) radiobutton.normalq=\u6B63\u5E38(&N)
radiobutton.highq.mnemonic=H radiobutton.oneside=\u5355\u9762(&O)
radiobutton.landscape=\u6A2A\u5411(L) radiobutton.portrait=\u7EB5\u5411(&P)
radiobutton.landscape.mnemonic=L radiobutton.rangeall=\u5168\u90E8(&L)
radiobutton.monochrome=\u5355\u8272(M) radiobutton.rangepages=\u9875\u7801\u8303\u56F4(&E)
radiobutton.monochrome.mnemonic=M radiobutton.revlandscape=\u6A2A\u5411\u53CD\u9762\u6253\u5370(&N)
radiobutton.normalq=\u6B63\u5E38(N) radiobutton.revportrait=\u7EB5\u5411\u53CD\u9762\u6253\u5370(&I)
radiobutton.normalq.mnemonic=N radiobutton.tumble=\u7FFB\u8F6C(&T)
radiobutton.oneside=\u5355\u9762(O)
radiobutton.oneside.mnemonic=O
radiobutton.portrait=\u7EB5\u5411(P)
radiobutton.portrait.mnemonic=P
radiobutton.rangeall=\u5168\u90E8(L)
radiobutton.rangeall.mnemonic=L
radiobutton.rangepages=\u9875\u7801\u8303\u56F4(E)
radiobutton.rangepages.mnemonic=E
radiobutton.revlandscape=\u6A2A\u5411\u53CD\u9762\u6253\u5370(N)
radiobutton.revlandscape.mnemonic=N
radiobutton.revportrait=\u7EB5\u5411\u53CD\u9762\u6253\u5370(I)
radiobutton.revportrait.mnemonic=I
radiobutton.tumble=\u7FFB\u8F6C(T)
radiobutton.tumble.mnemonic=T
# The vkMnemonics correspond with the constants defined in KeyEvent, eg # The vkMnemonics correspond with the constants defined in KeyEvent, eg
# 65 = KeyEvent.VK_A # 65 = KeyEvent.VK_A
tab.appearance=\u5916\u89C2(A) tab.appearance=\u5916\u89C2(&A)
tab.appearance.vkMnemonic=65 tab.general=\u4E00\u822C\u4FE1\u606F(&G)
tab.general=\u4E00\u822C\u4FE1\u606F(G) tab.pagesetup=\u9875\u9762\u8BBE\u7F6E(&S)
tab.general.vkMnemonic=71
tab.pagesetup=\u9875\u9762\u8BBE\u7F6E(S)
tab.pagesetup.vkMnemonic=83
# #
error.pagerange=\u65E0\u6548\u7684\u9875\u9762\u8303\u56F4; \u8BF7\u91CD\u65B0\u8F93\u5165\u6570\u503C (\u4F8B\u5982 1-3,5,7-10) error.pagerange=\u65E0\u6548\u7684\u9875\u9762\u8303\u56F4; \u8BF7\u91CD\u65B0\u8F93\u5165\u6570\u503C (\u4F8B\u5982 1-3,5,7-10)
error.destination=\u65E0\u6548\u7684\u6587\u4EF6\u540D; \u8BF7\u91CD\u8BD5 error.destination=\u65E0\u6548\u7684\u6587\u4EF6\u540D; \u8BF7\u91CD\u8BD5
......
...@@ -14,15 +14,11 @@ border.margins=\u908A\u8DDD ...@@ -14,15 +14,11 @@ border.margins=\u908A\u8DDD
button.cancel=\u53D6\u6D88 button.cancel=\u53D6\u6D88
button.ok=\u78BA\u5B9A button.ok=\u78BA\u5B9A
button.print=\u5217\u5370 button.print=\u5217\u5370
button.properties=\u7279\u6027(R)... button.properties=\u7279\u6027(&R)...
button.properties.mnemonic=R
# #
checkbox.collate=\u7406\u5E8F(C) checkbox.collate=\u7406\u5E8F(&C)
checkbox.collate.mnemonic=C checkbox.jobsheets=\u6A19\u984C\u9801(&B)
checkbox.jobsheets=\u6A19\u984C\u9801(B) checkbox.printtofile=\u5217\u5370\u81F3\u6A94\u6848(&F)
checkbox.jobsheets.mnemonic=B
checkbox.printtofile=\u5217\u5370\u81F3\u6A94\u6848(F)
checkbox.printtofile.mnemonic=F
# #
dialog.printtitle=\u5217\u5370 dialog.printtitle=\u5217\u5370
dialog.pstitle=\u9801\u9762\u8A2D\u5B9A dialog.pstitle=\u9801\u9762\u8A2D\u5B9A
...@@ -33,70 +29,42 @@ dialog.noprintermsg=\u627E\u4E0D\u5230\u5217\u5370\u670D\u52D9\u3002 ...@@ -33,70 +29,42 @@ dialog.noprintermsg=\u627E\u4E0D\u5230\u5217\u5370\u670D\u52D9\u3002
dialog.writeerror=\u7121\u6CD5\u5BEB\u5165\u81F3\u6A94\u6848: dialog.writeerror=\u7121\u6CD5\u5BEB\u5165\u81F3\u6A94\u6848:
# #
label.info=\u8CC7\u8A0A: label.info=\u8CC7\u8A0A:
label.jobname=\u5DE5\u4F5C\u540D\u7A31(J): label.jobname=\u5DE5\u4F5C\u540D\u7A31(&J):
label.jobname.mnemonic=J label.numcopies=\u5217\u5370\u4EFD\u6578(&O):
label.numcopies=\u5217\u5370\u4EFD\u6578(O): label.priority=\u512A\u5148\u6B0A(&R):
label.numcopies.mnemonic=O label.psname=\u540D\u7A31(&N):
label.priority=\u512A\u5148\u6B0A(R):
label.priority.mnemonic=R
label.psname=\u540D\u7A31(N):
label.psname.mnemonic=N
label.pstype=\u985E\u578B: label.pstype=\u985E\u578B:
label.rangeto=\u81F3 label.rangeto=\u81F3
label.size=\u5927\u5C0F(Z): label.size=\u5927\u5C0F(&Z):
label.size.mnemonic=Z label.source=\u4F86\u6E90(&C):
label.source=\u4F86\u6E90(C):
label.source.mnemonic=C
label.status=\u72C0\u614B: label.status=\u72C0\u614B:
label.username=\u4F7F\u7528\u8005\u540D\u7A31(U): label.username=\u4F7F\u7528\u8005\u540D\u7A31(&U):
label.username.mnemonic=U
label.millimetres=(mm) label.millimetres=(mm)
label.inches=(in) label.inches=(in)
label.topmargin=\u9802\u7AEF\u908A\u8DDD(T) label.topmargin=\u9802\u7AEF\u908A\u8DDD(&T)
label.topmargin.mnemonic=T label.bottommargin=\u5E95\u90E8\u908A\u8DDD(&B)
label.bottommargin=\u5E95\u90E8\u908A\u8DDD(B) label.leftmargin=\u5DE6\u908A\u8DDD(&F)
label.bottommargin.mnemonic=B label.rightmargin=\u53F3\u908A\u8DDD(&R)
label.leftmargin=\u5DE6\u908A\u8DDD(F)
label.leftmargin.mnemonic=F
label.rightmargin=\u53F3\u908A\u8DDD(R)
label.rightmargin.mnemonic=R
# #
radiobutton.color=\u984F\u8272(C) radiobutton.color=\u984F\u8272(&C)
radiobutton.color.mnemonic=C radiobutton.draftq=\u8349\u7A3F(&F)
radiobutton.draftq=\u8349\u7A3F(F) radiobutton.duplex=\u96D9\u9762\u5217\u5370(&D)
radiobutton.draftq.mnemonic=F radiobutton.highq=\u9AD8(&H)
radiobutton.duplex=\u96D9\u9762\u5217\u5370(D) radiobutton.landscape=\u6A6B\u5411(&L)
radiobutton.duplex.mnemonic=D radiobutton.monochrome=\u55AE\u8272(&M)
radiobutton.highq=\u9AD8(H) radiobutton.normalq=\u6B63\u5E38(&N)
radiobutton.highq.mnemonic=H radiobutton.oneside=\u55AE\u9762(&O)
radiobutton.landscape=\u6A6B\u5411(L) radiobutton.portrait=\u76F4\u5411(&P)
radiobutton.landscape.mnemonic=L radiobutton.rangeall=\u5168\u90E8(&L)
radiobutton.monochrome=\u55AE\u8272(M) radiobutton.rangepages=\u9801\u9762(&E)
radiobutton.monochrome.mnemonic=M radiobutton.revlandscape=\u53CD\u5411\u6A6B\u5370(&N)
radiobutton.normalq=\u6B63\u5E38(N) radiobutton.revportrait=\u53CD\u5411\u76F4\u5370(&I)
radiobutton.normalq.mnemonic=N radiobutton.tumble=\u7FFB\u8F49(&T)
radiobutton.oneside=\u55AE\u9762(O)
radiobutton.oneside.mnemonic=O
radiobutton.portrait=\u76F4\u5411(P)
radiobutton.portrait.mnemonic=P
radiobutton.rangeall=\u5168\u90E8(L)
radiobutton.rangeall.mnemonic=L
radiobutton.rangepages=\u9801\u9762(E)
radiobutton.rangepages.mnemonic=E
radiobutton.revlandscape=\u53CD\u5411\u6A6B\u5370(N)
radiobutton.revlandscape.mnemonic=N
radiobutton.revportrait=\u53CD\u5411\u76F4\u5370(I)
radiobutton.revportrait.mnemonic=I
radiobutton.tumble=\u7FFB\u8F49(T)
radiobutton.tumble.mnemonic=T
# The vkMnemonics correspond with the constants defined in KeyEvent, eg # The vkMnemonics correspond with the constants defined in KeyEvent, eg
# 65 = KeyEvent.VK_A # 65 = KeyEvent.VK_A
tab.appearance=\u5916\u89C0(A) tab.appearance=\u5916\u89C0(&A)
tab.appearance.vkMnemonic=65 tab.general=\u4E00\u822C(&G)
tab.general=\u4E00\u822C(G) tab.pagesetup=\u9801\u9762\u8A2D\u5B9A(&S)
tab.general.vkMnemonic=71
tab.pagesetup=\u9801\u9762\u8A2D\u5B9A(S)
tab.pagesetup.vkMnemonic=83
# #
error.pagerange=\u7121\u6548\u7684\u9801\u9762\u7BC4\u570D; \u8ACB\u91CD\u65B0\u8F38\u5165\u6578\u503C (\u4F8B\u5982 1-3,5,7-10) error.pagerange=\u7121\u6548\u7684\u9801\u9762\u7BC4\u570D; \u8ACB\u91CD\u65B0\u8F38\u5165\u6578\u503C (\u4F8B\u5982 1-3,5,7-10)
error.destination=\u7121\u6548\u7684\u6A94\u540D; \u8ACB\u518D\u8A66\u4E00\u6B21 error.destination=\u7121\u6548\u7684\u6A94\u540D; \u8ACB\u518D\u8A66\u4E00\u6B21
......
...@@ -516,6 +516,9 @@ public class PlatformLogger { ...@@ -516,6 +516,9 @@ public class PlatformLogger {
} }
void doLog(int level, String msg, Object... params) { void doLog(int level, String msg, Object... params) {
if (!isLoggable(level)) {
return;
}
// only pass String objects to the j.u.l.Logger which may // only pass String objects to the j.u.l.Logger which may
// be created by untrusted code // be created by untrusted code
int len = (params != null) ? params.length : 0; int len = (params != null) ? params.length : 0;
......
...@@ -657,10 +657,13 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer { ...@@ -657,10 +657,13 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
} }
// TODO : fix this duplicate code static class XAWTCaret extends DefaultCaret {
class XAWTCaret extends DefaultCaret {
public void focusGained(FocusEvent e) { public void focusGained(FocusEvent e) {
super.focusGained(e); super.focusGained(e);
if (getComponent().isEnabled()){
// Make sure the cursor is visible in case of non-editable TextArea
super.setVisible(true);
}
getComponent().repaint(); getComponent().repaint();
} }
......
...@@ -578,31 +578,7 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer { ...@@ -578,31 +578,7 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
} }
protected Caret createCaret() { protected Caret createCaret() {
return new XAWTCaret(); return new XTextAreaPeer.XAWTCaret();
}
}
class XAWTCaret extends DefaultCaret {
public void focusGained(FocusEvent e) {
super.focusGained(e);
getComponent().repaint();
}
public void focusLost(FocusEvent e) {
super.focusLost(e);
getComponent().repaint();
}
// Fix for 5100950: textarea.getSelectedText() returns the de-selected text, on XToolkit
// Restoring Motif behaviour
// If the text is unhighlighted then we should sets the selection range to zero
public void setSelectionVisible(boolean vis) {
if (vis){
super.setSelectionVisible(vis);
}else{
// In order to de-select the selection
setDot(getDot());
}
} }
} }
......
<!--
Copyright (c) 2012, 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 4157271
@summary Checks that when a Frame is created it honors the state it
was set to. The bug was that if setState(Frame.ICONIFIED) was
called before setVisible(true) the Frame would be shown in NORMAL
state instead of ICONIFIED.
@author JTG East Team: area=awt.Frame
@run applet/manual=yesno FrameStateTest.html
-->
<html>
<head>
<title> FrameStateTest </title>
</head>
<body>
<h1>FrameStateTest<br>Bug ID: 4157271</h1>
<p>This test checks that when setState(Frame.ICONIFIED) is called before
setVisible(true) the Frame is shown in the proper iconified state.
The problem was that it did not honor the initial iconic state, but
instead was shown in the NORMAL state.</p>
<p>See the dialog box (usually in upper left corner) for instructions</p>
<APPLET CODE="FrameStateTest.class" WIDTH=600 HEIGHT=200></APPLET>
</body>
</html>
/*
* Copyright (c) 2012, 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 4157271
@summary Checks that when a Frame is created it honors the state it
was set to. The bug was that if setState(Frame.ICONIFIED) was
called before setVisible(true) the Frame would be shown in NORMAL
state instead of ICONIFIED.
@author JTG East Team: area=awt.Frame
@run applet/manual=yesno FrameStateTest.html
*/
/**
* FrameStateTest.java
*
* summary: Checks that when setState(Frame.ICONIFIED) is called before
* setVisible(true) the Frame is shown in the proper iconified state.
* The problem was that it did not honor the initial iconic state, but
* instead was shown in the NORMAL state.
*/
import java.awt.event.*;
import java.awt.*;
import java.lang.*;
import java.applet.Applet;
public class FrameStateTest extends Applet implements ActionListener, ItemListener{
Button btnCreate = new Button("Create Frame");
Button btnDispose = new Button("Dispose Frame");
CheckboxGroup cbgState = new CheckboxGroup();
CheckboxGroup cbgResize = new CheckboxGroup();
Checkbox cbIconState = new Checkbox("Frame state ICONIFIED",cbgState,false);
Checkbox cbNormState = new Checkbox("Frame state NORMAL",cbgState,true);
Checkbox cbNonResize = new Checkbox("Frame Nonresizable",cbgResize,false);
Checkbox cbResize = new Checkbox("Frame Resizable",cbgResize,true);
int iState = 0;
boolean bResize = true;
CreateFrame icontst;
public void init() {
this.setLayout (new BorderLayout ());
String[] instructions =
{
"Steps to try to reproduce this problem:",
"When this test is run an Applet Viewer window will display. In the",
"Applet Viewer window select the different options for the Frame (i.e.",
"{Normal, Non-resizalbe}, {Normal, Resizable}, {Iconified, Resizable},",
"{Iconified, Non-resizalbe}). After chosing the Frame's state click the",
"Create Frame button. After the Frame (Frame State Test (Window2)) comes",
"up make sure the proper behavior occurred (Frame shown in proper state).",
"Click the Dispose button to close the Frame. Do the above steps for all",
"the different Frame state combinations available. If you observe the",
"proper behavior the test has passed, Press the Pass button. Otherwise",
"the test has failed, Press the Fail button.",
"Note: In Frame State Test (Window2) you can also chose the different",
"buttons to see different Frame behavior. An example of a problem that",
"has been seen, With the Frame nonresizable you can not iconify the Frame."
};
Sysout.createDialogWithInstructions( instructions );
btnDispose.setEnabled(false);
add(btnCreate, BorderLayout.NORTH);
add(btnDispose, BorderLayout.SOUTH);
Panel p = new Panel(new GridLayout(0,1));
p.add(cbIconState);
p.add(cbResize);
add(p, BorderLayout.WEST);
p = new Panel(new GridLayout(0,1));
p.add(cbNormState);
p.add(cbNonResize);
add(p, BorderLayout.EAST);
// Add Listeners
btnDispose.addActionListener(this);
btnCreate.addActionListener(this);
cbNormState.addItemListener(this);
cbResize.addItemListener(this);
cbIconState.addItemListener(this);
cbNonResize.addItemListener(this);
resize(600, 200);
}//End init()
public void actionPerformed(ActionEvent evt) {
if (evt.getSource() == btnCreate) {
btnCreate.setEnabled(false);
btnDispose.setEnabled(true);
icontst = new CreateFrame(iState, bResize);
icontst.show();
} else if (evt.getSource() == btnDispose) {
btnCreate.setEnabled(true);
btnDispose.setEnabled(false);
icontst.dispose();
}
}
public void itemStateChanged(ItemEvent evt) {
if (cbNormState.getState()) iState = 0;
if (cbIconState.getState()) iState = 1;
if (cbResize.getState()) bResize = true;
if (cbNonResize.getState()) bResize = false;
}
}// class FrameStateTest
class CreateFrame extends Frame implements ActionListener , WindowListener {
static int e=0;
static int u=0;
static int p=0;
static int i=0;
static int v=0;
Button b1, b2, b3, b4, b5, b6, b7;
boolean resizable = true;
boolean iconic = false;
String name = "Frame State Test";
CreateFrame (int iFrameState, boolean bFrameResizable) {
setTitle("Frame State Test (Window 2)");
if (iFrameState == 1) {
iconic = true;
}
if (!(bFrameResizable)) {
resizable = false;
}
System.out.println("CREATING FRAME - Initially "+
((iconic) ? "ICONIFIED" : "NORMAL (NON-ICONIFIED)") + " and " +
((resizable) ? "RESIZABLE" : "NON-RESIZABLE") );
Sysout.println("CREATING FRAME - Initially "+
((iconic) ? "ICONIFIED" : "NORMAL (NON-ICONIFIED)") + " and " +
((resizable) ? "RESIZABLE" : "NON-RESIZABLE") );
setLayout(new FlowLayout() );
b1 = new Button("resizable");
add(b1);
b2 = new Button("resize");
add(b2);
b3 = new Button("iconify");
add(b3);
b4 = new Button("iconify and restore");
add(b4);
b5 = new Button("hide and show");
add(b5);
b6 = new Button("hide, iconify and show");
add(b6);
b7 = new Button("hide, iconify, show, and restore");
add(b7);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
b7.addActionListener(this);
addWindowListener(this);
setBounds(100,2,200, 200);
setState(iconic ? Frame.ICONIFIED: Frame.NORMAL);
setResizable(resizable);
pack();
setVisible(true);
}
public void actionPerformed ( ActionEvent e )
{
if ( e.getSource() == b2 ) {
Rectangle r = this.getBounds();
r.width += 10;
System.out.println(" - button pressed - setting bounds on Frame to: "+r);
setBounds(r);
validate();
} else if ( e.getSource() == b1 ) {
resizable = !resizable;
System.out.println(" - button pressed - setting Resizable to: "+resizable);
((Frame)(b1.getParent())).setResizable(resizable);
} else if ( e.getSource() == b3 ) {
System.out.println(" - button pressed - setting Iconic: ");
dolog();
((Frame)(b1.getParent())).setState(Frame.ICONIFIED);
dolog();
} else if ( e.getSource() == b4 ) {
System.out.println(" - button pressed - setting Iconic: ");
dolog();
((Frame)(b1.getParent())).setState(Frame.ICONIFIED);
dolog();
try {
Thread.sleep(1000);
} catch (Exception ex) {};
System.out.println(" - now restoring: ");
((Frame)(b1.getParent())).setState(Frame.NORMAL);
dolog();
} else if ( e.getSource() == b5 ) {
System.out.println(" - button pressed - hiding : ");
dolog();
((Frame)(b1.getParent())).setVisible(false);
dolog();
try {
Thread.sleep(1000);
} catch (Exception ex) {};
System.out.println(" - now reshowing: ");
((Frame)(b1.getParent())).setVisible(true);
dolog();
} else if ( e.getSource() == b6 ) {
System.out.println(" - button pressed - hiding : ");
dolog();
((Frame)(b1.getParent())).setVisible(false);
dolog();
try {
Thread.sleep(1000);
} catch (Exception ex) {};
System.out.println(" - setting Iconic: ");
dolog();
((Frame)(b1.getParent())).setState(Frame.ICONIFIED);
try {
Thread.sleep(1000);
} catch (Exception ex) {};
System.out.println(" - now reshowing: ");
((Frame)(b1.getParent())).setVisible(true);
dolog();
} else if ( e.getSource() == b7 ) {
System.out.println(" - button pressed - hiding : ");
dolog();
((Frame)(b1.getParent())).setVisible(false);
dolog();
try {
Thread.sleep(1000);
} catch (Exception ex) {};
System.out.println(" - setting Iconic: ");
dolog();
((Frame)(b1.getParent())).setState(Frame.ICONIFIED);
try {
Thread.sleep(1000);
} catch (Exception ex) {};
System.out.println(" - now reshowing: ");
((Frame)(b1.getParent())).setVisible(true);
dolog();
try {
Thread.sleep(1000);
} catch (Exception ex) {};
System.out.println(" - now restoring: ");
((Frame)(b1.getParent())).setState(Frame.NORMAL);
dolog();
}
}
public void windowActivated(WindowEvent e) {
System.out.println(name + " Activated");
dolog();
}
public void windowClosed(WindowEvent e) {
System.out.println(name + " Closed");
dolog();
}
public void windowClosing(WindowEvent e) {
((Window)(e.getSource())).dispose();
System.out.println(name + " Closing");
dolog();
}
public void windowDeactivated(WindowEvent e) {
System.out.println(name + " Deactivated");
dolog();
}
public void windowDeiconified(WindowEvent e) {
System.out.println(name + " Deiconified");
dolog();
}
public void windowIconified(WindowEvent e) {
System.out.println(name + " Iconified");
dolog();
}
public void windowOpened(WindowEvent e) {
System.out.println(name + " Opened");
dolog();
}
public void dolog() {
System.out.println(" getState returns: "+getState());
}
}
// }// class FrameStateTest
/****************************************************
Standard Test Machinery
DO NOT modify anything below -- it's a standard
chunk of code whose purpose is to make user
interaction uniform, and thereby make it simpler
to read and understand someone else's test.
****************************************************/
/**
This is part of the standard test machinery.
It creates a dialog (with the instructions), and is the interface
for sending text messages to the user.
To print the instructions, send an array of strings to Sysout.createDialog
WithInstructions method. Put one line of instructions per array entry.
To display a message for the tester to see, simply call Sysout.println
with the string to be displayed.
This mimics System.out.println but works within the test harness as well
as standalone.
*/
class Sysout
{
private static TestDialog dialog;
public static void createDialogWithInstructions( String[] instructions )
{
dialog = new TestDialog( new Frame(), "Instructions" );
dialog.printInstructions( instructions );
dialog.show();
println( "Any messages for the tester will display here." );
}
public static void createDialog( )
{
dialog = new TestDialog( new Frame(), "Instructions" );
String[] defInstr = { "Instructions will appear here. ", "" } ;
dialog.printInstructions( defInstr );
dialog.show();
println( "Any messages for the tester will display here." );
}
public static void printInstructions( String[] instructions )
{
dialog.printInstructions( instructions );
}
public static void println( String messageIn )
{
dialog.displayMessage( messageIn );
}
}// Sysout class
/**
This is part of the standard test machinery. It provides a place for the
test instructions to be displayed, and a place for interactive messages
to the user to be displayed.
To have the test instructions displayed, see Sysout.
To have a message to the user be displayed, see Sysout.
Do not call anything in this dialog directly.
*/
class TestDialog extends Dialog
{
TextArea instructionsText;
TextArea messageText;
int maxStringLength = 80;
//DO NOT call this directly, go through Sysout
public TestDialog( Frame frame, String name )
{
super( frame, name );
int scrollBoth = TextArea.SCROLLBARS_BOTH;
int scrollNone = TextArea.SCROLLBARS_NONE;
instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth );
add( "North", instructionsText );
messageText = new TextArea( "", 10, maxStringLength, scrollBoth );
add("South", messageText);
pack();
show();
}// TestDialog()
//DO NOT call this directly, go through Sysout
public void printInstructions( String[] instructions )
{
//Clear out any current instructions
instructionsText.setText( "" );
//Go down array of instruction strings
String printStr, remainingStr;
for( int i=0; i < instructions.length; i++ )
{
//chop up each into pieces maxSringLength long
remainingStr = instructions[ i ];
while( remainingStr.length() > 0 )
{
//if longer than max then chop off first max chars to print
if( remainingStr.length() >= maxStringLength )
{
//Try to chop on a word boundary
int posOfSpace = remainingStr.
lastIndexOf( ' ', maxStringLength - 1 );
if( posOfSpace <= 0 ) posOfSpace = maxStringLength - 1;
printStr = remainingStr.substring( 0, posOfSpace + 1 );
remainingStr = remainingStr.substring( posOfSpace + 1 );
}
//else just print
else
{
printStr = remainingStr;
remainingStr = "";
}
instructionsText.append( printStr + "\n" );
}// while
}// for
}//printInstructions()
//DO NOT call this directly, go through Sysout
public void displayMessage( String messageIn )
{
messageText.append( messageIn + "\n" );
}
}// TestDialog class
/*
* Copyright (c) 2005, 2006, 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 7154048
* @summary Window created under a mouse does not receive mouse enter event.
* Mouse Entered/Exited events should be generated during dragging the window
* out of the frame and to the frame.
* @library ../../regtesthelpers
* @build Util
* @author alexandr.scherbatiy area=awt.event
* @run main DragWindowOutOfFrameTest
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.concurrent.*;
import sun.awt.SunToolkit;
import test.java.awt.regtesthelpers.Util;
public class DragWindowOutOfFrameTest {
private static volatile int dragWindowMouseEnteredCount = 0;
private static volatile int dragWindowMouseExitedCount = 0;
private static volatile int dragWindowMouseReleasedCount = 0;
private static volatile int buttonMouseEnteredCount = 0;
private static volatile int buttonMouseExitedCount = 0;
private static volatile int labelMouseEnteredCount = 0;
private static volatile int labelMouseExitedCount = 0;
private static volatile int labelMouseReleasedCount = 0;
private static MyDragWindow dragWindow;
private static JLabel label;
private static JButton button;
public static void main(String[] args) throws Exception {
SunToolkit toolkit = (SunToolkit) Toolkit.getDefaultToolkit();
Robot robot = new Robot();
robot.setAutoDelay(50);
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
createAndShowGUI();
}
});
toolkit.realSync();
Point pointToClick = Util.invokeOnEDT(new Callable<Point>() {
@Override
public Point call() throws Exception {
return getCenterPoint(label);
}
});
robot.mouseMove(pointToClick.x, pointToClick.y);
robot.mousePress(InputEvent.BUTTON1_MASK);
toolkit.realSync();
if (dragWindowMouseEnteredCount != 1 && dragWindowMouseExitedCount != 0) {
throw new RuntimeException(
"Wrong number mouse Entered/Exited events on Drag Window!");
}
Point pointToDrag = Util.invokeOnEDT(new Callable<Point>() {
@Override
public Point call() throws Exception {
label.addMouseListener(new LabelMouseListener());
button.addMouseListener(new ButtonMouseListener());
return getCenterPoint(button);
}
});
robot.mouseMove(450, pointToClick.y);
toolkit.realSync();
if (labelMouseEnteredCount != 0 && labelMouseExitedCount != 1) {
throw new RuntimeException(
"Wrong number Mouse Entered/Exited events on label!");
}
robot.mouseMove(450, pointToDrag.y);
toolkit.realSync();
if (labelMouseEnteredCount != 0 && labelMouseExitedCount != 1) {
throw new RuntimeException(
"Wrong number Mouse Entered/Exited events on label!");
}
if (buttonMouseEnteredCount != 0 && buttonMouseExitedCount != 0) {
throw new RuntimeException(
"Wrong number Mouse Entered/Exited events on button!");
}
robot.mouseMove(pointToDrag.y, pointToDrag.y);
toolkit.realSync();
if (buttonMouseEnteredCount != 1 && buttonMouseExitedCount != 0) {
throw new RuntimeException(
"Wrong number Mouse Entered/Exited events on button!");
}
robot.mouseRelease(InputEvent.BUTTON1_MASK);
toolkit.realSync();
if (labelMouseReleasedCount != 1) {
throw new RuntimeException("No MouseReleased event on label!");
}
}
private static Point getCenterPoint(Component comp) {
Point p = comp.getLocationOnScreen();
Rectangle rect = comp.getBounds();
return new Point(p.x + rect.width / 2, p.y + rect.height / 2);
}
private static void createAndShowGUI() {
JFrame frame = new JFrame("Main Frame");
frame.setLocation(100, 100);
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
label = new JLabel("Label");
DragWindowCreationMouseListener listener = new DragWindowCreationMouseListener(frame);
label.addMouseListener(listener);
label.addMouseMotionListener(listener);
button = new JButton("Button");
Panel panel = new Panel(new BorderLayout());
panel.add(label, BorderLayout.NORTH);
panel.add(button, BorderLayout.CENTER);
frame.getContentPane().add(panel);
frame.setVisible(true);
}
private static Point getAbsoluteLocation(MouseEvent e) {
return new Point(e.getXOnScreen(), e.getYOnScreen());
}
static class MyDragWindow extends Window {
public MyDragWindow(Window parent, Point location) {
super(parent);
setSize(500, 300);
setVisible(true);
JPanel panel = new JPanel();
add(panel);
setLocation(location.x - 250, location.y - 150);
addMouseListener(new DragWindowMouseListener());
}
void dragTo(Point point) {
setLocation(point.x - 250, point.y - 150);
}
}
static class DragWindowCreationMouseListener extends MouseAdapter {
Point origin;
Window parent;
public DragWindowCreationMouseListener(Window parent) {
this.parent = parent;
}
@Override
public void mousePressed(MouseEvent e) {
if (dragWindow == null) {
dragWindow = new MyDragWindow(parent, getAbsoluteLocation(e));
} else {
dragWindow.setVisible(true);
dragWindow.dragTo(getAbsoluteLocation(e));
}
}
@Override
public void mouseReleased(MouseEvent e) {
labelMouseReleasedCount++;
if (dragWindow != null) {
dragWindow.setVisible(false);
}
}
public void mouseDragged(MouseEvent e) {
if (dragWindow != null) {
dragWindow.dragTo(getAbsoluteLocation(e));
}
}
}
static class DragWindowMouseListener extends MouseAdapter {
@Override
public void mouseEntered(MouseEvent e) {
dragWindowMouseEnteredCount++;
}
@Override
public void mouseExited(MouseEvent e) {
dragWindowMouseExitedCount++;
}
@Override
public void mouseReleased(MouseEvent e) {
dragWindowMouseReleasedCount++;
}
}
static class LabelMouseListener extends MouseAdapter {
@Override
public void mouseEntered(MouseEvent e) {
labelMouseEnteredCount++;
}
@Override
public void mouseExited(MouseEvent e) {
labelMouseExitedCount++;
}
}
static class ButtonMouseListener extends MouseAdapter {
@Override
public void mouseEntered(MouseEvent e) {
buttonMouseEnteredCount++;
}
@Override
public void mouseExited(MouseEvent e) {
buttonMouseExitedCount++;
}
}
}
/*
* Copyright (c) 2005, 2006, 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 7154048
* @summary Window created under a mouse does not receive mouse enter event.
* Mouse Entered/Exited events are wrongly generated during dragging the window
* from one component to another
* @library ../../regtesthelpers
* @build Util
* @author alexandr.scherbatiy area=awt.event
* @run main DragWindowTest
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.concurrent.*;
import sun.awt.SunToolkit;
import test.java.awt.regtesthelpers.Util;
public class DragWindowTest {
private static volatile int dragWindowMouseEnteredCount = 0;
private static volatile int dragWindowMouseReleasedCount = 0;
private static volatile int buttonMouseEnteredCount = 0;
private static volatile int labelMouseReleasedCount = 0;
private static MyDragWindow dragWindow;
private static JLabel label;
private static JButton button;
public static void main(String[] args) throws Exception {
SunToolkit toolkit = (SunToolkit) Toolkit.getDefaultToolkit();
Robot robot = new Robot();
robot.setAutoDelay(50);
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
createAndShowGUI();
}
});
toolkit.realSync();
Point pointToClick = Util.invokeOnEDT(new Callable<Point>() {
@Override
public Point call() throws Exception {
return getCenterPoint(label);
}
});
robot.mouseMove(pointToClick.x, pointToClick.y);
robot.mousePress(InputEvent.BUTTON1_MASK);
toolkit.realSync();
if (dragWindowMouseEnteredCount != 1) {
throw new RuntimeException("No MouseEntered event on Drag Window!");
}
Point pointToDrag = Util.invokeOnEDT(new Callable<Point>() {
@Override
public Point call() throws Exception {
button.addMouseListener(new ButtonMouseListener());
return getCenterPoint(button);
}
});
robot.mouseMove(pointToDrag.x, pointToDrag.y);
toolkit.realSync();
if (buttonMouseEnteredCount != 0) {
throw new RuntimeException("Extra MouseEntered event on button!");
}
robot.mouseRelease(InputEvent.BUTTON1_MASK);
toolkit.realSync();
if (labelMouseReleasedCount != 1) {
throw new RuntimeException("No MouseReleased event on label!");
}
}
private static Point getCenterPoint(Component comp) {
Point p = comp.getLocationOnScreen();
Rectangle rect = comp.getBounds();
return new Point(p.x + rect.width / 2, p.y + rect.height / 2);
}
private static void createAndShowGUI() {
JFrame frame = new JFrame("Main Frame");
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
label = new JLabel("Label");
LabelMouseListener listener = new LabelMouseListener(frame);
label.addMouseListener(listener);
label.addMouseMotionListener(listener);
button = new JButton("Button");
Panel panel = new Panel(new BorderLayout());
panel.add(label, BorderLayout.NORTH);
panel.add(button, BorderLayout.CENTER);
frame.getContentPane().add(panel);
frame.setVisible(true);
}
private static Point getAbsoluteLocation(MouseEvent e) {
return new Point(e.getXOnScreen(), e.getYOnScreen());
}
static class MyDragWindow extends Window {
static int d = 30;
public MyDragWindow(Window parent, Point location) {
super(parent);
setSize(150, 150);
setVisible(true);
JPanel panel = new JPanel();
add(panel);
setLocation(location.x - d, location.y - d);
addMouseListener(new DragWindowMouseListener());
}
void dragTo(Point point) {
setLocation(point.x - d, point.y - d);
}
}
static class LabelMouseListener extends MouseAdapter {
Point origin;
Window parent;
public LabelMouseListener(Window parent) {
this.parent = parent;
}
@Override
public void mousePressed(MouseEvent e) {
if (dragWindow == null) {
dragWindow = new MyDragWindow(parent, getAbsoluteLocation(e));
} else {
dragWindow.setVisible(true);
dragWindow.dragTo(getAbsoluteLocation(e));
}
}
@Override
public void mouseReleased(MouseEvent e) {
labelMouseReleasedCount++;
if (dragWindow != null) {
dragWindow.setVisible(false);
}
}
public void mouseDragged(MouseEvent e) {
if (dragWindow != null) {
dragWindow.dragTo(getAbsoluteLocation(e));
}
}
}
static class DragWindowMouseListener extends MouseAdapter {
@Override
public void mouseEntered(MouseEvent e) {
dragWindowMouseEnteredCount++;
}
@Override
public void mouseReleased(MouseEvent e) {
dragWindowMouseReleasedCount++;
}
}
static class ButtonMouseListener extends MouseAdapter {
@Override
public void mouseEntered(MouseEvent e) {
buttonMouseEnteredCount++;
}
}
}
/*
* Copyright (c) 2005, 2006, 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 7154048
* @summary Programmatically resized window does not receive mouse entered/exited events
* @author alexandr.scherbatiy area=awt.event
* @run main ResizingFrameTest
*/
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import sun.awt.SunToolkit;
public class ResizingFrameTest {
private static volatile int mouseEnteredCount = 0;
private static volatile int mouseExitedCount = 0;
private static JFrame frame;
public static void main(String[] args) throws Exception {
SunToolkit toolkit = (SunToolkit) Toolkit.getDefaultToolkit();
Robot robot = new Robot();
robot.setAutoDelay(50);
robot.mouseMove(100, 100);
// create a frame under the mouse cursor
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
createAndShowGUI();
}
});
toolkit.realSync();
if (mouseEnteredCount != 1 || mouseExitedCount != 0) {
throw new RuntimeException("No Mouse Entered/Exited events!");
}
// iconify frame
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
frame.setExtendedState(Frame.ICONIFIED);
}
});
toolkit.realSync();
robot.delay(200);
if (mouseEnteredCount != 1 || mouseExitedCount != 1) {
throw new RuntimeException("No Mouse Entered/Exited events!");
}
// deiconify frame
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
frame.setExtendedState(Frame.NORMAL);
}
});
toolkit.realSync();
robot.delay(200);
if (mouseEnteredCount != 2 || mouseExitedCount != 1) {
throw new RuntimeException("No Mouse Entered/Exited events!");
}
// move the mouse out of the frame
robot.mouseMove(500, 500);
toolkit.realSync();
robot.delay(200);
if (mouseEnteredCount != 2 || mouseExitedCount != 2) {
throw new RuntimeException("No Mouse Entered/Exited events!");
}
// maximize the frame
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
frame.setExtendedState(Frame.MAXIMIZED_BOTH);
}
});
toolkit.realSync();
robot.delay(200);
if (mouseEnteredCount != 3 || mouseExitedCount != 2) {
throw new RuntimeException("No Mouse Entered/Exited events!");
}
// demaximize the frame
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
frame.setExtendedState(Frame.NORMAL);
}
});
toolkit.realSync();
robot.delay(200);
if (mouseEnteredCount != 3 || mouseExitedCount != 3) {
throw new RuntimeException("No Mouse Entered/Exited events!");
}
// move the frame under the mouse
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
frame.setLocation(400, 400);
}
});
toolkit.realSync();
robot.delay(200);
if (mouseEnteredCount != 4 || mouseExitedCount != 3) {
throw new RuntimeException("No Mouse Entered/Exited events!");
}
// move the frame out of the mouse
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
frame.setLocation(100, 100);
}
});
toolkit.realSync();
robot.delay(400);
if (mouseEnteredCount != 4 || mouseExitedCount != 4) {
throw new RuntimeException("No Mouse Entered/Exited events!");
}
// enlarge the frame bounds
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
frame.setBounds(100, 100, 800, 800);
}
});
toolkit.realSync();
robot.delay(200);
if (mouseEnteredCount != 5 || mouseExitedCount != 4) {
throw new RuntimeException("No Mouse Entered/Exited events!");
}
// make the frame bounds smaller
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
frame.setBounds(100, 100, 200, 300);
}
});
toolkit.realSync();
robot.delay(400);
if (mouseEnteredCount != 5 || mouseExitedCount != 5) {
throw new RuntimeException("No Mouse Entered/Exited events!");
}
}
private static void createAndShowGUI() {
frame = new JFrame("Main Frame");
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
mouseEnteredCount++;
}
@Override
public void mouseExited(MouseEvent e) {
mouseExitedCount++;
}
});
frame.setVisible(true);
}
}
\ No newline at end of file
/*
* Copyright (c) 2012 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.
*/
/*
* Portions Copyright (c) 2012 IBM Corporation
*/
/* @test
* @bug 7129742
* @summary Focus in non-editable TextArea is not shown on Linux.
* @author Sean Chou
*/
import java.awt.FlowLayout;
import java.awt.TextArea;
import java.awt.Toolkit;
import java.lang.reflect.Field;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
import javax.swing.text.DefaultCaret;
import sun.awt.SunToolkit;
public class bug7129742 {
public static DefaultCaret caret = null;
public static JFrame frame = null;
public static boolean fastreturn = false;
public static void main(String[] args) throws Exception {
SunToolkit toolkit = (SunToolkit) Toolkit.getDefaultToolkit();
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
frame = new JFrame("Test");
TextArea textArea = new TextArea("Non-editable textArea");
textArea.setEditable(false);
frame.setLayout(new FlowLayout());
frame.add(textArea);
frame.pack();
frame.setVisible(true);
try {
Class XTextAreaPeerClzz = textArea.getPeer().getClass();
System.out.println(XTextAreaPeerClzz.getName());
if (!XTextAreaPeerClzz.getName().equals("sun.awt.X11.XTextAreaPeer")) {
fastreturn = true;
return;
}
Field jtextField = XTextAreaPeerClzz.getDeclaredField("jtext");
jtextField.setAccessible(true);
JTextArea jtext = (JTextArea)jtextField.get(textArea.getPeer());
caret = (DefaultCaret) jtext.getCaret();
textArea.requestFocusInWindow();
} catch (NoSuchFieldException | SecurityException
| IllegalArgumentException | IllegalAccessException e) {
/* These exceptions mean the implementation of XTextAreaPeer is
* changed, this testcase is not valid any more, fix it or remove.
*/
frame.dispose();
throw new RuntimeException("This testcase is not valid any more!");
}
}
});
toolkit.realSync();
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
try{
if (fastreturn) {
return;
}
boolean passed = caret.isActive();
System.out.println("is caret visible : " + passed);
if (!passed) {
throw new RuntimeException("The test for bug 71297422 failed");
}
} finally {
frame.dispose();
}
}
});
}
}
...@@ -600,4 +600,34 @@ public final class Util { ...@@ -600,4 +600,34 @@ public final class Util {
time, printEvent); time, printEvent);
} }
/**
* Invokes the <code>task</code> on the EDT thread.
*
* @return result of the <code>task</code>
*/
public static <T> T invokeOnEDT(final java.util.concurrent.Callable<T> task) throws Exception {
final java.util.List<T> result = new java.util.ArrayList<T>(1);
final Exception[] exception = new Exception[1];
javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
try {
result.add(task.call());
} catch (Exception e) {
exception[0] = e;
}
}
});
if (exception[0] != null) {
throw exception[0];
}
return result.get(0);
}
} }
/*
* Copyright (c) 2012 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.
*/
/*
* Portions Copyright (c) 2012 IBM Corporation
*/
import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import sun.awt.SunToolkit;
import java.awt.AWTException;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
/* @test 1.1 2012/04/12
* @bug 7154030
* @summary Swing components fail to hide after calling hide()
* @author Jonathan Lu
* @library ../../regtesthelpers/
* @build Util
* @run main bug7154030
*/
public class bug7154030 {
private static JButton button = null;
public static void main(String[] args) throws Exception {
BufferedImage imageInit = null;
BufferedImage imageShow = null;
BufferedImage imageHide = null;
SunToolkit toolkit = (SunToolkit) Toolkit.getDefaultToolkit();
Robot robot = new Robot();
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
JDesktopPane desktop = new JDesktopPane();
button = new JButton("button");
JFrame frame = new JFrame();
button.setSize(200, 200);
button.setLocation(100, 100);
button.setForeground(Color.RED);
button.setBackground(Color.RED);
button.setOpaque(true);
button.setVisible(false);
desktop.add(button);
frame.setContentPane(desktop);
frame.setSize(300, 300);
frame.setLocation(0, 0);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
});
toolkit.realSync();
imageInit = robot.createScreenCapture(new Rectangle(0, 0, 300, 300));
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
button.show();
}
});
toolkit.realSync();
imageShow = robot.createScreenCapture(new Rectangle(0, 0, 300, 300));
if (Util.compareBufferedImages(imageInit, imageShow)) {
throw new Exception("Failed to show opaque button");
}
toolkit.realSync();
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
button.hide();
}
});
toolkit.realSync();
imageHide = robot.createScreenCapture(new Rectangle(0, 0, 300, 300));
if (!Util.compareBufferedImages(imageInit, imageHide)) {
throw new Exception("Failed to hide opaque button");
}
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
button.setOpaque(false);
button.setBackground(new Color(128, 128, 0));
button.setVisible(false);
}
});
toolkit.realSync();
imageInit = robot.createScreenCapture(new Rectangle(0, 0, 300, 300));
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
button.show();
}
});
toolkit.realSync();
imageShow = robot.createScreenCapture(new Rectangle(0, 0, 300, 300));
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
button.hide();
}
});
if (Util.compareBufferedImages(imageInit, imageShow)) {
throw new Exception("Failed to show non-opaque button");
}
toolkit.realSync();
imageHide = robot.createScreenCapture(new Rectangle(0, 0, 300, 300));
if (!Util.compareBufferedImages(imageInit, imageHide)) {
throw new Exception("Failed to hide non-opaque button");
}
}
}
/*
* Copyright (c) 2012 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.
*/
/*
* Portions Copyright (c) 2012 IBM Corporation
*/
/* @test 1.1 2012/04/19
* @bug 7055065
* @summary NullPointerException when sorting JTable with empty cell
* @author Jonathan Lu
* @library ../../regtesthelpers/
* @build Util
* @run main bug7055065
*/
import java.awt.Dimension;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
import sun.awt.SunToolkit;
import java.util.concurrent.Callable;
public class bug7055065 {
private static JTable table;
public static void main(String[] args) throws Exception {
SunToolkit toolkit = (SunToolkit) Toolkit.getDefaultToolkit();
Robot robot = new Robot();
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
createAndShowUI();
}
});
toolkit.realSync();
clickCell(robot, 1, 1);
Util.hitKeys(robot, KeyEvent.VK_BACK_SPACE, KeyEvent.VK_BACK_SPACE,
KeyEvent.VK_BACK_SPACE);
toolkit.realSync();
clickColumnHeader(robot, 1);
toolkit.realSync();
clickColumnHeader(robot, 1);
}
private static void clickCell(Robot robot, final int row, final int column)
throws Exception {
Point point = Util.invokeOnEDT(new Callable<Point>() {
@Override
public Point call() throws Exception {
Rectangle rect = table.getCellRect(row, column, false);
Point point = new Point(rect.x + rect.width / 2, rect.y
+ rect.height / 2);
SwingUtilities.convertPointToScreen(point, table);
return point;
}
});
robot.mouseMove(point.x, point.y);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
}
private static void clickColumnHeader(Robot robot, final int column)
throws Exception {
Point point = Util.invokeOnEDT(new Callable<Point>() {
@Override
public Point call() throws Exception {
Rectangle rect = table.getCellRect(0, column, false);
int headerHeight = table.getTableHeader().getHeight();
Point point = new Point(rect.x + rect.width / 2, rect.y
- headerHeight / 2);
SwingUtilities.convertPointToScreen(point, table);
return point;
}
});
robot.mouseMove(point.x, point.y);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
}
private static void createAndShowUI() {
JFrame frame = new JFrame("SimpleTableDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel newContentPane = new JPanel();
newContentPane.setOpaque(true);
frame.setContentPane(newContentPane);
final String[] columnNames = { "String", "Number" };
final Object[][] data = { { "aaaa", new Integer(1) },
{ "bbbb", new Integer(3) }, { "cccc", new Integer(2) },
{ "dddd", new Integer(4) }, { "eeee", new Integer(5) } };
table = new JTable(data, columnNames);
table.setPreferredScrollableViewportSize(new Dimension(500, 400));
table.setFillsViewportHeight(true);
TableModel dataModel = new AbstractTableModel() {
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return data.length;
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
public String getColumnName(int column) {
return columnNames[column];
}
public Class<?> getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
public boolean isCellEditable(int row, int col) {
return col != 5;
}
public void setValueAt(Object aValue, int row, int column) {
data[row][column] = aValue;
}
};
table.setModel(dataModel);
TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(
dataModel);
table.setRowSorter(sorter);
JScrollPane scrollPane = new JScrollPane(table);
newContentPane.add(scrollPane);
frame.pack();
frame.setLocation(0, 0);
frame.setVisible(true);
}
}
/*
* Copyright (c) 2009, 2010, 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 4908142
* @summary JList doesn't handle search function appropriately
* @author Andrey Pikalev
* @library ../../regtesthelpers
* @build Util
* @run main bug4908142
*/
import javax.swing.*;
import javax.swing.tree.*;
import java.awt.*;
import java.awt.event.*;
import java.util.concurrent.Callable;
import sun.awt.SunToolkit;
public class bug4908142 {
private static JTree tree;
public static void main(String[] args) throws Exception {
SunToolkit toolkit = (SunToolkit) Toolkit.getDefaultToolkit();
Robot robot = new Robot();
robot.setAutoDelay(50);
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
createAndShowGUI();
}
});
toolkit.realSync();
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
tree.requestFocus();
tree.setSelectionRow(0);
}
});
toolkit.realSync();
robot.keyPress(KeyEvent.VK_A);
robot.keyRelease(KeyEvent.VK_A);
robot.keyPress(KeyEvent.VK_A);
robot.keyRelease(KeyEvent.VK_A);
robot.keyPress(KeyEvent.VK_D);
robot.keyRelease(KeyEvent.VK_D);
toolkit.realSync();
String sel = Util.invokeOnEDT(new Callable<String>() {
@Override
public String call() throws Exception {
return tree.getLastSelectedPathComponent().toString();
}
});
if (!"aad".equals(sel)) {
throw new Error("The selected index should be \"aad\", but not " + sel);
}
}
private static void createAndShowGUI() {
JFrame fr = new JFrame("Test");
fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
String[] data = {"aaa", "aab", "aac", "aad", "ade", "bba"};
final DefaultMutableTreeNode root = new DefaultMutableTreeNode(data[0]);
for (int i = 1; i < data.length; i++) {
DefaultMutableTreeNode node = new DefaultMutableTreeNode(data[i]);
root.add(node);
}
tree = new JTree(root);
JScrollPane sp = new JScrollPane(tree);
fr.getContentPane().add(sp);
fr.setSize(200, 200);
fr.setVisible(true);
}
}
/*
* Copyright (c) 2012, 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.
*/
/*
* see TestSpecialArgs.java
* bug 7131021
* summary Checks for environment variables set by the launcher
* author anthony.petrov@oracle.com: area=launcher
*/
public class EnvironmentVariables {
public static void main(String[] args) {
if (args.length != 2) {
throw new RuntimeException("ERROR: two command line arguments expected");
}
String name = args[0];
String expect = args[1];
String key = null;
if (!name.endsWith("*")) {
key = name;
} else {
name = name.split("\\*")[0];
for (String s : System.getenv().keySet()) {
if (s.startsWith(name)) {
if (key == null) {
key = s;
} else {
System.err.println("WARNING: more variables match: " + s);
}
}
}
if (key == null) {
throw new RuntimeException("ERROR: unable to find a match for: " + name);
}
}
System.err.println("Will check the variable named: '" + key +
"' expecting the value: '" + expect + "'");
if (!System.getenv().containsKey(key)) {
throw new RuntimeException("ERROR: the variable '" + key +
"' is not present in the environment");
}
if (!expect.equals(System.getenv().get(key))) {
throw new RuntimeException("ERROR: expected: '" + expect +
"', got: '" + System.getenv().get(key) + "'");
}
for (String x : args) {
System.err.print(x + " ");
}
System.err.println("-----> Passed!");
}
}
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
import java.io.StringWriter; import java.io.StringWriter;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.Set;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.File; import java.io.File;
import java.io.FileFilter; import java.io.FileFilter;
...@@ -319,19 +320,28 @@ public class TestHelper { ...@@ -319,19 +320,28 @@ public class TestHelper {
} }
static TestResult doExec(String...cmds) { static TestResult doExec(String...cmds) {
return doExec(null, cmds); return doExec(null, null, cmds);
} }
static TestResult doExec(Map<String, String> envToSet, String...cmds) {
return doExec(envToSet, null, cmds);
}
/* /*
* A method which executes a java cmd and returns the results in a container * A method which executes a java cmd and returns the results in a container
*/ */
static TestResult doExec(Map<String, String> envToSet, String...cmds) { static TestResult doExec(Map<String, String> envToSet,
Set<String> envToRemove, String...cmds) {
String cmdStr = ""; String cmdStr = "";
for (String x : cmds) { for (String x : cmds) {
cmdStr = cmdStr.concat(x + " "); cmdStr = cmdStr.concat(x + " ");
} }
ProcessBuilder pb = new ProcessBuilder(cmds); ProcessBuilder pb = new ProcessBuilder(cmds);
Map<String, String> env = pb.environment(); Map<String, String> env = pb.environment();
if (envToRemove != null) {
for (String key : envToRemove) {
env.remove(key);
}
}
if (envToSet != null) { if (envToSet != null) {
env.putAll(envToSet); env.putAll(envToSet);
} }
......
/*
* Copyright (c) 2012, 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 7124089 7131021
* @summary Checks for MacOSX specific flags are accepted or rejected, and
* MacOSX platforms specific environment is consistent.
* @compile -XDignore.symbol.file TestSpecialArgs.java EnvironmentVariables.java
* @run main TestSpecialArgs
*/
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public class TestSpecialArgs extends TestHelper {
public static void main(String... args) {
final Map<String, String> envMap = new HashMap<>();
envMap.put("_JAVA_LAUNCHER_DEBUG", "true");
TestResult tr = doExec(envMap, javaCmd, "-XstartOnFirstThread", "-version");
if (isMacOSX) {
if (!tr.contains("In same thread")) {
System.out.println(tr);
throw new RuntimeException("Error: not running in the same thread ?");
}
if (!tr.isOK()) {
System.out.println(tr);
throw new RuntimeException("Error: arg was rejected ????");
}
} else {
if (tr.isOK()) {
System.out.println(tr);
throw new RuntimeException("Error: argument was accepted ????");
}
}
tr = doExec(javaCmd, "-Xdock:/tmp/not-available", "-version");
if (isMacOSX) {
if (!tr.isOK()) {
System.out.println(tr);
throw new RuntimeException("Error: arg was rejected ????");
}
} else {
if (tr.isOK()) {
System.out.println(tr);
throw new RuntimeException("Error: argument was accepted ????");
}
}
// MacOSX specific tests ensue......
if (!isMacOSX)
return;
Set<String> envToRemove = new HashSet<>();
Map<String, String> map = System.getenv();
for (String s : map.keySet()) {
if (s.startsWith("JAVA_MAIN_CLASS_")
|| s.startsWith("APP_NAME_")
|| s.startsWith("APP_ICON_")) {
envToRemove.add(s);
}
}
runTest(envToRemove, javaCmd, "-cp", TEST_CLASSES_DIR.getAbsolutePath(),
"EnvironmentVariables", "JAVA_MAIN_CLASS_*",
"EnvironmentVariables");
runTest(envToRemove, javaCmd, "-cp", TEST_CLASSES_DIR.getAbsolutePath(),
"-Xdock:name=TestAppName", "EnvironmentVariables",
"APP_NAME_*", "TestAppName");
runTest(envToRemove, javaCmd, "-cp", TEST_CLASSES_DIR.getAbsolutePath(),
"-Xdock:icon=TestAppIcon", "EnvironmentVariables",
"APP_ICON_*", "TestAppIcon");
}
static void runTest(Set<String> envToRemove, String... args) {
TestResult tr = doExec(null, envToRemove, args);
if (!tr.isOK()) {
System.err.println(tr.toString());
throw new RuntimeException("Test Fails");
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册