Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
f63cb0a6
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
f63cb0a6
编写于
5月 25, 2012
作者:
L
lana
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
5f3abe87
877d6943
变更
87
隐藏空白更改
内联
并排
Showing
87 changed file
with
1855 addition
and
1296 deletion
+1855
-1296
.hgtags
.hgtags
+2
-0
make/com/apple/osxui/Makefile
make/com/apple/osxui/Makefile
+2
-6
make/common/Release.gmk
make/common/Release.gmk
+3
-2
make/common/internal/Resources.gmk
make/common/internal/Resources.gmk
+4
-0
src/macosx/classes/com/apple/laf/AquaButtonLabeledUI.java
src/macosx/classes/com/apple/laf/AquaButtonLabeledUI.java
+6
-2
src/macosx/classes/com/apple/laf/AquaLookAndFeel.java
src/macosx/classes/com/apple/laf/AquaLookAndFeel.java
+1
-1
src/macosx/classes/com/apple/laf/AquaTabbedPaneUI.java
src/macosx/classes/com/apple/laf/AquaTabbedPaneUI.java
+1
-1
src/macosx/classes/com/apple/laf/resources/aqua.properties
src/macosx/classes/com/apple/laf/resources/aqua.properties
+79
-101
src/macosx/classes/sun/awt/CGraphicsDevice.java
src/macosx/classes/sun/awt/CGraphicsDevice.java
+3
-3
src/macosx/classes/sun/lwawt/LWComponentPeer.java
src/macosx/classes/sun/lwawt/LWComponentPeer.java
+41
-5
src/macosx/classes/sun/lwawt/LWCursorManager.java
src/macosx/classes/sun/lwawt/LWCursorManager.java
+3
-3
src/macosx/classes/sun/lwawt/LWTextComponentPeer.java
src/macosx/classes/sun/lwawt/LWTextComponentPeer.java
+12
-0
src/macosx/classes/sun/lwawt/LWWindowPeer.java
src/macosx/classes/sun/lwawt/LWWindowPeer.java
+36
-21
src/macosx/classes/sun/lwawt/PlatformWindow.java
src/macosx/classes/sun/lwawt/PlatformWindow.java
+2
-0
src/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java
src/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java
+6
-15
src/macosx/classes/sun/lwawt/macosx/CFileDialog.java
src/macosx/classes/sun/lwawt/macosx/CFileDialog.java
+27
-19
src/macosx/classes/sun/lwawt/macosx/CPlatformEmbeddedFrame.java
...cosx/classes/sun/lwawt/macosx/CPlatformEmbeddedFrame.java
+3
-0
src/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java
src/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java
+4
-0
src/macosx/classes/sun/lwawt/macosx/CPlatformView.java
src/macosx/classes/sun/lwawt/macosx/CPlatformView.java
+2
-2
src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java
src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java
+18
-2
src/macosx/classes/sun/lwawt/macosx/CToolkitThreadBlockedHandler.java
...lasses/sun/lwawt/macosx/CToolkitThreadBlockedHandler.java
+4
-3
src/macosx/classes/sun/lwawt/macosx/LWCToolkit.java
src/macosx/classes/sun/lwawt/macosx/LWCToolkit.java
+4
-0
src/macosx/native/sun/awt/AWTView.m
src/macosx/native/sun/awt/AWTView.m
+22
-6
src/macosx/native/sun/awt/AWTWindow.h
src/macosx/native/sun/awt/AWTWindow.h
+27
-2
src/macosx/native/sun/awt/AWTWindow.m
src/macosx/native/sun/awt/AWTWindow.m
+213
-99
src/macosx/native/sun/awt/CFileDialog.h
src/macosx/native/sun/awt/CFileDialog.h
+8
-4
src/macosx/native/sun/awt/CFileDialog.m
src/macosx/native/sun/awt/CFileDialog.m
+35
-13
src/macosx/native/sun/awt/CImage.m
src/macosx/native/sun/awt/CImage.m
+0
-1
src/macosx/native/sun/awt/LWCToolkit.m
src/macosx/native/sun/awt/LWCToolkit.m
+34
-0
src/macosx/native/sun/java2d/opengl/CGLSurfaceData.m
src/macosx/native/sun/java2d/opengl/CGLSurfaceData.m
+2
-1
src/share/classes/com/sun/java/swing/plaf/motif/resources/motif.properties
.../com/sun/java/swing/plaf/motif/resources/motif.properties
+19
-24
src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_de.properties
...m/sun/java/swing/plaf/motif/resources/motif_de.properties
+19
-24
src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_es.properties
...m/sun/java/swing/plaf/motif/resources/motif_es.properties
+19
-24
src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_fr.properties
...m/sun/java/swing/plaf/motif/resources/motif_fr.properties
+19
-24
src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_it.properties
...m/sun/java/swing/plaf/motif/resources/motif_it.properties
+19
-24
src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_ja.properties
...m/sun/java/swing/plaf/motif/resources/motif_ja.properties
+19
-24
src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_ko.properties
...m/sun/java/swing/plaf/motif/resources/motif_ko.properties
+19
-24
src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_pt_BR.properties
...un/java/swing/plaf/motif/resources/motif_pt_BR.properties
+19
-24
src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_sv.properties
...m/sun/java/swing/plaf/motif/resources/motif_sv.properties
+19
-24
src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_zh_CN.properties
...un/java/swing/plaf/motif/resources/motif_zh_CN.properties
+19
-24
src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_zh_TW.properties
...un/java/swing/plaf/motif/resources/motif_zh_TW.properties
+19
-24
src/share/classes/com/sun/java/swing/plaf/windows/resources/windows.properties
.../sun/java/swing/plaf/windows/resources/windows.properties
+20
-24
src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_de.properties
...n/java/swing/plaf/windows/resources/windows_de.properties
+20
-24
src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_es.properties
...n/java/swing/plaf/windows/resources/windows_es.properties
+20
-24
src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_fr.properties
...n/java/swing/plaf/windows/resources/windows_fr.properties
+20
-24
src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_it.properties
...n/java/swing/plaf/windows/resources/windows_it.properties
+20
-24
src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_ja.properties
...n/java/swing/plaf/windows/resources/windows_ja.properties
+20
-24
src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_ko.properties
...n/java/swing/plaf/windows/resources/windows_ko.properties
+20
-24
src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_pt_BR.properties
...ava/swing/plaf/windows/resources/windows_pt_BR.properties
+20
-24
src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_sv.properties
...n/java/swing/plaf/windows/resources/windows_sv.properties
+20
-24
src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_zh_CN.properties
...ava/swing/plaf/windows/resources/windows_zh_CN.properties
+20
-24
src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_zh_TW.properties
...ava/swing/plaf/windows/resources/windows_zh_TW.properties
+20
-24
src/share/classes/java/awt/Component.java
src/share/classes/java/awt/Component.java
+11
-9
src/share/classes/java/awt/Container.java
src/share/classes/java/awt/Container.java
+7
-5
src/share/classes/java/awt/DefaultKeyboardFocusManager.java
src/share/classes/java/awt/DefaultKeyboardFocusManager.java
+4
-4
src/share/classes/java/awt/Dialog.java
src/share/classes/java/awt/Dialog.java
+9
-4
src/share/classes/java/awt/FileDialog.java
src/share/classes/java/awt/FileDialog.java
+4
-8
src/share/classes/java/awt/Frame.java
src/share/classes/java/awt/Frame.java
+1
-1
src/share/classes/java/awt/KeyboardFocusManager.java
src/share/classes/java/awt/KeyboardFocusManager.java
+199
-124
src/share/classes/java/awt/Window.java
src/share/classes/java/awt/Window.java
+2
-2
src/share/classes/javax/swing/JApplet.java
src/share/classes/javax/swing/JApplet.java
+1
-1
src/share/classes/javax/swing/JComponent.java
src/share/classes/javax/swing/JComponent.java
+5
-2
src/share/classes/javax/swing/JDialog.java
src/share/classes/javax/swing/JDialog.java
+1
-1
src/share/classes/javax/swing/JFrame.java
src/share/classes/javax/swing/JFrame.java
+1
-1
src/share/classes/javax/swing/JInternalFrame.java
src/share/classes/javax/swing/JInternalFrame.java
+1
-1
src/share/classes/javax/swing/JWindow.java
src/share/classes/javax/swing/JWindow.java
+1
-1
src/share/classes/javax/swing/UIManager.java
src/share/classes/javax/swing/UIManager.java
+23
-11
src/share/classes/sun/awt/AWTAccessor.java
src/share/classes/sun/awt/AWTAccessor.java
+3
-1
src/share/classes/sun/awt/SunToolkit.java
src/share/classes/sun/awt/SunToolkit.java
+5
-42
src/share/demo/jfc/Notepad/Notepad.java
src/share/demo/jfc/Notepad/Notepad.java
+90
-170
src/share/demo/jfc/Notepad/resources/Notepad.properties
src/share/demo/jfc/Notepad/resources/Notepad.properties
+0
-30
src/share/demo/jfc/Notepad/resources/NotepadSystem.properties
...share/demo/jfc/Notepad/resources/NotepadSystem.properties
+12
-0
src/share/native/sun/java2d/opengl/OGLContext.h
src/share/native/sun/java2d/opengl/OGLContext.h
+1
-0
src/share/native/sun/java2d/opengl/OGLTextRenderer.c
src/share/native/sun/java2d/opengl/OGLTextRenderer.c
+4
-5
src/share/native/sun/java2d/opengl/OGLVertexCache.c
src/share/native/sun/java2d/opengl/OGLVertexCache.c
+22
-20
src/share/native/sun/java2d/opengl/OGLVertexCache.h
src/share/native/sun/java2d/opengl/OGLVertexCache.h
+1
-1
src/solaris/classes/sun/awt/X11/GtkFileDialogPeer.java
src/solaris/classes/sun/awt/X11/GtkFileDialogPeer.java
+8
-2
src/solaris/classes/sun/awt/X11/XFileDialogPeer.java
src/solaris/classes/sun/awt/X11/XFileDialogPeer.java
+9
-2
src/windows/classes/sun/awt/windows/WFileDialogPeer.java
src/windows/classes/sun/awt/windows/WFileDialogPeer.java
+10
-7
test/java/awt/Dialog/ModalDialogPermission/ModalDialogPermission.java
...t/Dialog/ModalDialogPermission/ModalDialogPermission.java
+60
-0
test/java/awt/Dialog/ModalDialogPermission/java.policy
test/java/awt/Dialog/ModalDialogPermission/java.policy
+3
-0
test/java/awt/Focus/FocusTraversalPolicy/InitialFTP.java
test/java/awt/Focus/FocusTraversalPolicy/InitialFTP.java
+26
-0
test/java/awt/Focus/FocusTraversalPolicy/InitialFTP_AWT.java
test/java/awt/Focus/FocusTraversalPolicy/InitialFTP_AWT.java
+50
-0
test/java/awt/Focus/FocusTraversalPolicy/InitialFTP_Swing.java
...java/awt/Focus/FocusTraversalPolicy/InitialFTP_Swing.java
+46
-0
test/java/awt/GraphicsDevice/CloneConfigsTest.java
test/java/awt/GraphicsDevice/CloneConfigsTest.java
+1
-1
test/java/awt/event/KeyEvent/SwallowKeyEvents/SwallowKeyEvents.java
...awt/event/KeyEvent/SwallowKeyEvents/SwallowKeyEvents.java
+100
-0
test/javax/swing/text/html/HTMLEditorKit/4242228/bug4242228.java
...vax/swing/text/html/HTMLEditorKit/4242228/bug4242228.java
+101
-0
未找到文件。
.hgtags
浏览文件 @
f63cb0a6
...
@@ -160,3 +160,5 @@ ddfe5562f61f54ed2121ac0c73b688b94f3e66b5 jdk8-b32
...
@@ -160,3 +160,5 @@ ddfe5562f61f54ed2121ac0c73b688b94f3e66b5 jdk8-b32
45da9cb055ee258dc09e69c1718e27eadea38e45 jdk8-b36
45da9cb055ee258dc09e69c1718e27eadea38e45 jdk8-b36
9e82ac15ab80370d6e021aea7b98c7c9626adb5e jdk8-b37
9e82ac15ab80370d6e021aea7b98c7c9626adb5e jdk8-b37
c45f3509a70796c54b48f32910d1caf435763416 jdk8-b38
c45f3509a70796c54b48f32910d1caf435763416 jdk8-b38
b6f52911752110a2889681923992c7a0baa52ccc jdk8-b39
b88fc3359dc7edabfa8a228855d8cebf8843c055 jdk8-b40
make/com/apple/osxui/Makefile
浏览文件 @
f63cb0a6
...
@@ -65,12 +65,8 @@ FILES_export = \
...
@@ -65,12 +65,8 @@ FILES_export = \
com/apple/laf/ScreenMenuPropertyHandler.java
\
com/apple/laf/ScreenMenuPropertyHandler.java
\
com/apple/laf/ScreenMenuPropertyListener.java
com/apple/laf/ScreenMenuPropertyListener.java
#RESOURCE_BUNDLES_COMPILED_PROPERTIES += \
RESOURCE_BUNDLES_COMPILED_PROPERTIES
+=
\
# com/apple/laf/resources/aqua.properties \
com/apple/laf/resources/aqua.properties
# com/apple/laf/resources/aqua_de.properties \
# com/apple/laf/resources/aqua_fr.properties \
# com/apple/laf/resources/aqua_ja.properties
#
#
# Rules
# Rules
...
...
make/common/Release.gmk
浏览文件 @
f63cb0a6
...
@@ -156,6 +156,7 @@ JDK_MAN_PAGES = \
...
@@ -156,6 +156,7 @@ JDK_MAN_PAGES = \
jstack.1 \
jstack.1 \
jstat.1 \
jstat.1 \
jstatd.1 \
jstatd.1 \
jvisualvm.1 \
native2ascii.1 \
native2ascii.1 \
rmic.1 \
rmic.1 \
schemagen.1 \
schemagen.1 \
...
@@ -1311,8 +1312,8 @@ $(TEMP_PREV_JDK_COMPARISON): install-previous-jdk $(DIRDIFF_JARFILE)
...
@@ -1311,8 +1312,8 @@ $(TEMP_PREV_JDK_COMPARISON): install-previous-jdk $(DIRDIFF_JARFILE)
@$(java-vm-cleanup)
@$(java-vm-cleanup)
# Clean up names in the messages printed out
# Clean up names in the messages printed out
CAT_FILTER = $(SED) -e "s
@$(JDK_IMAGE_DIR)@JDK_IMAGE@
g" \
CAT_FILTER = $(SED) -e "s
|$(JDK_IMAGE_DIR)|JDK_IMAGE|
g" \
-e "s
@$(JRE_IMAGE_DIR)@JRE_IMAGE@
g"
-e "s
|$(JRE_IMAGE_DIR)|JRE_IMAGE|
g"
# Report on the jre image comparison
# Report on the jre image comparison
compare-image-jre: $(TEMP_PREV_JRE_COMPARISON)
compare-image-jre: $(TEMP_PREV_JRE_COMPARISON)
...
...
make/common/internal/Resources.gmk
浏览文件 @
f63cb0a6
...
@@ -197,6 +197,10 @@ $(GENSRCDIR)/%.java: $(SHARE_SRC)/classes/%.properties
...
@@ -197,6 +197,10 @@ $(GENSRCDIR)/%.java: $(SHARE_SRC)/classes/%.properties
$(add-property-java-file)
$(add-property-java-file)
$(GENSRCDIR)/%.java: $(GENSRCDIR)/%.properties
$(GENSRCDIR)/%.java: $(GENSRCDIR)/%.properties
$(add-property-java-file)
$(add-property-java-file)
ifdef PLATFORM_SRC_MACOS
$(GENSRCDIR)/%.java: $(PLATFORM_SRC_MACOS)/classes/%.properties
$(add-property-java-file)
endif
ifndef OPENJDK
ifndef OPENJDK
$(GENSRCDIR)/%.java: $(CLOSED_PLATFORM_SRC)/classes/%.properties
$(GENSRCDIR)/%.java: $(CLOSED_PLATFORM_SRC)/classes/%.properties
$(add-property-java-file)
$(add-property-java-file)
...
...
src/macosx/classes/com/apple/laf/AquaButtonLabeledUI.java
浏览文件 @
f63cb0a6
...
@@ -30,6 +30,7 @@ import java.awt.image.BufferedImage;
...
@@ -30,6 +30,7 @@ import java.awt.image.BufferedImage;
import
javax.swing.*
;
import
javax.swing.*
;
import
javax.swing.border.Border
;
import
javax.swing.border.Border
;
import
javax.swing.plaf.UIResource
;
import
javax.swing.plaf.basic.BasicHTML
;
import
javax.swing.plaf.basic.BasicHTML
;
import
javax.swing.text.View
;
import
javax.swing.text.View
;
...
@@ -76,8 +77,11 @@ public abstract class AquaButtonLabeledUI extends AquaButtonToggleUI implements
...
@@ -76,8 +77,11 @@ public abstract class AquaButtonLabeledUI extends AquaButtonToggleUI implements
protected
void
setThemeBorder
(
final
AbstractButton
b
)
{
protected
void
setThemeBorder
(
final
AbstractButton
b
)
{
super
.
setThemeBorder
(
b
);
super
.
setThemeBorder
(
b
);
// Set the correct border
Border
border
=
b
.
getBorder
();
b
.
setBorder
(
AquaButtonBorder
.
getBevelButtonBorder
());
if
(
border
==
null
||
border
instanceof
UIResource
)
{
// Set the correct border
b
.
setBorder
(
AquaButtonBorder
.
getBevelButtonBorder
());
}
}
}
protected
abstract
AquaButtonBorder
getPainter
();
protected
abstract
AquaButtonBorder
getPainter
();
...
...
src/macosx/classes/com/apple/laf/AquaLookAndFeel.java
浏览文件 @
f63cb0a6
...
@@ -250,6 +250,7 @@ public class AquaLookAndFeel extends BasicLookAndFeel {
...
@@ -250,6 +250,7 @@ public class AquaLookAndFeel extends BasicLookAndFeel {
*/
*/
private
void
initResourceBundle
(
final
UIDefaults
table
)
{
private
void
initResourceBundle
(
final
UIDefaults
table
)
{
table
.
setDefaultLocale
(
Locale
.
getDefault
());
table
.
setDefaultLocale
(
Locale
.
getDefault
());
table
.
addResourceBundle
(
PKG_PREFIX
+
"resources.aqua"
);
try
{
try
{
final
ResourceBundle
aquaProperties
=
MacOSXResourceBundle
.
getMacResourceBundle
(
PKG_PREFIX
+
"resources.aqua"
);
final
ResourceBundle
aquaProperties
=
MacOSXResourceBundle
.
getMacResourceBundle
(
PKG_PREFIX
+
"resources.aqua"
);
final
Enumeration
<
String
>
propertyKeys
=
aquaProperties
.
getKeys
();
final
Enumeration
<
String
>
propertyKeys
=
aquaProperties
.
getKeys
();
...
@@ -259,7 +260,6 @@ public class AquaLookAndFeel extends BasicLookAndFeel {
...
@@ -259,7 +260,6 @@ public class AquaLookAndFeel extends BasicLookAndFeel {
table
.
put
(
key
,
aquaProperties
.
getString
(
key
));
table
.
put
(
key
,
aquaProperties
.
getString
(
key
));
}
}
}
catch
(
final
Exception
e
)
{
}
catch
(
final
Exception
e
)
{
table
.
addResourceBundle
(
PKG_PREFIX
+
"resources.aqua"
);
}
}
}
}
...
...
src/macosx/classes/com/apple/laf/AquaTabbedPaneUI.java
浏览文件 @
f63cb0a6
...
@@ -318,7 +318,7 @@ public class AquaTabbedPaneUI extends AquaTabbedPaneCopyFromBasicUI {
...
@@ -318,7 +318,7 @@ public class AquaTabbedPaneUI extends AquaTabbedPaneCopyFromBasicUI {
}
}
// not for the scrolling tabs
// not for the scrolling tabs
if
(
tabIndex
>=
0
)
{
if
(
component
==
null
&&
tabIndex
>=
0
)
{
paintTitle
(
g2d
,
font
,
metrics
,
textRect
,
tabIndex
,
title
);
paintTitle
(
g2d
,
font
,
metrics
,
textRect
,
tabIndex
,
title
);
}
}
...
...
src/macosx/classes/com/apple/laf/resources/aqua.properties
浏览文件 @
f63cb0a6
...
@@ -36,45 +36,45 @@
...
@@ -36,45 +36,45 @@
# support.
# support.
############ FILE CHOOSER STRINGS #############
############ FILE CHOOSER STRINGS #############
FileChooser.fileDescription
Text
=
Generic File
FileChooser.fileDescription
.textAndMnemonic
=
Generic File
FileChooser.directoryDescription
Text
=
Directory
FileChooser.directoryDescription
.textAndMnemonic
=
Directory
FileChooser.newFolderError
Text
=
Error occured during folder creation
FileChooser.newFolderError
.textAndMnemonic
=
Error occured during folder creation
FileChooser.newFolderErrorSeparator
=
:
FileChooser.newFolderErrorSeparator
=
:
FileChooser.acceptAllFileFilter
Text
=
All Files
FileChooser.acceptAllFileFilter
.textAndMnemonic
=
All Files
FileChooser.cancelButton
Text
=
Cancel
FileChooser.cancelButton
.textAndMnemonic
=
Cancel
FileChooser.saveButton
Text
=
Save
FileChooser.saveButton
.textAndMnemonic
=
Save
FileChooser.openButton
Text
=
Open
FileChooser.openButton
.textAndMnemonic
=
Open
FileChooser.saveDialogTitle
Text
=
Save
FileChooser.saveDialogTitle
.textAndMnemonic
=
Save
FileChooser.openDialogTitle
Text
=
Open
FileChooser.openDialogTitle
.textAndMnemonic
=
Open
FileChooser.updateButton
Text
=
Update
FileChooser.updateButton
.textAndMnemonic
=
Update
FileChooser.helpButton
Text
=
Help
FileChooser.helpButton
.textAndMnemonic
=
Help
FileChooser.directoryOpenButton
Text
=
Open
FileChooser.directoryOpenButton
.textAndMnemonic
=
Open
# File Size Units
# File Size Units
FileChooser.fileSizeKiloBytes
=
{0} KB
FileChooser.fileSizeKiloBytes
=
{0} KB
FileChooser.fileSizeMegaBytes
=
{0} MB
FileChooser.fileSizeMegaBytes
=
{0} MB
FileChooser.fileSizeGigaBytes
=
{0} GB
FileChooser.fileSizeGigaBytes
=
{0} GB
//
Mac-specific
strings
#
Mac-specific strings
FileChooser.saveTitle
Text
=
Save
FileChooser.saveTitle
.textAndMnemonic
=
Save
FileChooser.openTitle
Text
=
Open
FileChooser.openTitle
.textAndMnemonic
=
Open
FileChooser.newFolderExistsError
Text
=
That name is already taken
FileChooser.newFolderExistsError
.textAndMnemonic
=
That name is already taken
FileChooser.chooseButton
Text
=
Choose
FileChooser.chooseButton
.textAndMnemonic
=
Choose
FileChooser.newFolderButton
Text
=
New Folder
FileChooser.newFolderButton
.textAndMnemonic
=
New Folder
FileChooser.newFolderTitle
Text
=
New Folder
FileChooser.newFolderTitle
.textAndMnemonic
=
New Folder
FileChooser.fileNameLabel
Text
=
File:
FileChooser.fileNameLabel
.textAndMnemonic
=
File:
FileChooser.saveDialogFileNameLabel
Text
=
Save As:
FileChooser.saveDialogFileNameLabel
.textAndMnemonic
=
Save As:
FileChooser.filesOfTypeLabel
Text
=
File Format:
FileChooser.filesOfTypeLabel
.textAndMnemonic
=
File Format:
FileChooser.desktopName
=
Desktop
FileChooser.desktopName
=
Desktop
FileChooser.newFolderPrompt
Text
=
Name of new folder:
FileChooser.newFolderPrompt
.textAndMnemonic
=
Name of new folder:
FileChooser.untitledFolderName
=
untitled folder
FileChooser.untitledFolderName
=
untitled folder
FileChooser.untitledFileName
=
untitled
FileChooser.untitledFileName
=
untitled
FileChooser.createButton
Text
=
Create
FileChooser.createButton
.textAndMnemonic
=
Create
FileChooser.byDate
Text
=
Date Modified
FileChooser.byDate
.textAndMnemonic
=
Date Modified
FileChooser.by
NameText
=
Name
FileChooser.by
.textAndMnemonic
=
Name
FileChooser.newFolderAccessibleName
=
New Folder
FileChooser.newFolderAccessibleName
=
New Folder
FileChooser.mac.newFolder
=
untitled folder
FileChooser.mac.newFolder
=
untitled folder
...
@@ -82,76 +82,54 @@ FileChooser.mac.newFolder.subsequent=untitled folder {0}
...
@@ -82,76 +82,54 @@ FileChooser.mac.newFolder.subsequent=untitled folder {0}
############ COLOR CHOOSER STRINGS #############
############ COLOR CHOOSER STRINGS #############
ColorChooser.previewText
=
Preview
ColorChooser.preview.textAndMnemonic
=
Preview
ColorChooser.okText
=
OK
ColorChooser.ok.textAndMnemonic
=
OK
ColorChooser.cancelText
=
Cancel
ColorChooser.cancel.textAndMnemonic
=
Cancel
ColorChooser.resetText
=
Reset
ColorChooser.reset.textAndMnemonic
=
&Reset
# VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic
ColorChooser.sample.textAndMnemonic
=
Sample Text Sample Text
ColorChooser.resetMnemonic
=
82
ColorChooser.swatches.textAndMnemonic
=
&Swatches
ColorChooser.sampleText
=
Sample Text Sample Text
ColorChooser.swatchesRecent.textAndMnemonic
=
Recent:
ColorChooser.swatchesNameText
=
Swatches
ColorChooser.hsb.textAndMnemonic
=
&HSB
ColorChooser.swatchesMnemonic
=
83
ColorChooser.hsbHue.textAndMnemonic
=
H
ColorChooser.swatchesDisplayedMnemonicIndex
=
0
ColorChooser.hsbSaturation.textAndMnemonic
=
S
ColorChooser.swatchesRecentText
=
Recent:
ColorChooser.hsbBrightness.textAndMnemonic
=
B
ColorChooser.hsbNameText
=
HSB
ColorChooser.hsbRed.textAndMnemonic
=
R
# Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX
ColorChooser.hsbGreen.textAndMnemonic
=
G
# constant, and an index into the text to render the mnemonic as. The
ColorChooser.hsbBlue.textAndMnemonic
=
B
# mnemonic is xxxMnemonic and the index of the character to underline is
ColorChooser.rgb.textAndMnemonic
=
R&GB
# xxxDisplayedMnemonicIndex.
ColorChooser.rgbRed.textAndMnemonic
=
Re&d
ColorChooser.hsbMnemonic
=
72
ColorChooser.rgbGreen.textAndMnemonic
=
Gree&n
ColorChooser.hsbDisplayedMnemonicIndex
=
0
ColorChooser.rgbBlue.textAndMnemonic
=
&Blue
ColorChooser.hsbHueText
=
H
ColorChooser.hsbSaturationText
=
S
ColorChooser.hsbBrightnessText
=
B
ColorChooser.hsbRedText
=
R
ColorChooser.hsbGreenText
=
G
ColorChooser.hsbBlueText
=
B
ColorChooser.rgbNameText
=
RGB
ColorChooser.rgbMnemonic
=
71
ColorChooser.rgbDisplayedMnemonicIndex
=
1
ColorChooser.rgbRedText
=
Red
ColorChooser.rgbRedMnemonic
=
68
ColorChooser.rgbGreenText
=
Green
ColorChooser.rgbGreenMnemonic
=
78
ColorChooser.rgbBlueText
=
Blue
ColorChooser.rgbBlueMnemonic
=
66
############ OPTION PANE STRINGS #############
############ OPTION PANE STRINGS #############
# Mnemonic keys correspond to KeyEvent.VK_XXX constant
# We only define mnemonics for YES/NO, but for completeness you can
# We only define mnemonics for YES/NO, but for completeness you can
# define mnemonics for any of the buttons.
# define mnemonics for any of the buttons.
OptionPane.yesButtonText
=
Yes
OptionPane.yesButton.textAndMnemonic
=
&Yes
OptionPane.yesButtonMnemonic
=
89
OptionPane.noButton.textAndMnemonic
=
&No
OptionPane.noButtonText
=
No
OptionPane.okButton.textAndMnemonic
=
OK
OptionPane.noButtonMnemonic
=
78
OptionPane.cancelButton.textAndMnemonic
=
Cancel
OptionPane.okButtonText
=
OK
OptionPane.title.textAndMnemonic
=
Select an Option
OptionPane.okButtonMnemonic
=
0
OptionPane.cancelButtonText
=
Cancel
OptionPane.cancelButtonMnemonic
=
0
OptionPane.titleText
=
Select an Option
# Title for the dialog for the showInputDialog methods. Only used if
# Title for the dialog for the showInputDialog methods. Only used if
# the developer uses one of the variants that doesn't take a title.
# the developer uses one of the variants that doesn't take a title.
OptionPane.inputDialog
Title
=
Input
OptionPane.inputDialog
.titleAndMnemonic
=
Input
# Title for the dialog for the showMessageDialog methods. Only used if
# Title for the dialog for the showMessageDialog methods. Only used if
# the developer uses one of the variants that doesn't take a title.
# the developer uses one of the variants that doesn't take a title.
OptionPane.messageDialog
Title
=
Message
OptionPane.messageDialog
.titleAndMnemonic
=
Message
############ Printing Dialog Strings ############
############ Printing Dialog Strings ############
PrintingDialog.titleProgress
Text
=
Printing
PrintingDialog.titleProgress
.textAndMnemonic
=
Printing
PrintingDialog.titleAborting
Text
=
Printing (Aborting)
PrintingDialog.titleAborting
.textAndMnemonic
=
Printing (Aborting)
PrintingDialog.contentInitial
Text
=
Printing in progress...
PrintingDialog.contentInitial
.textAndMnemonic
=
Printing in progress...
# The following string will be formatted by a MessageFormat
# The following string will be formatted by a MessageFormat
# and {0} will be replaced by page number being printed
# and {0} will be replaced by page number being printed
PrintingDialog.contentProgress
Text
=
Printed page {0}...
PrintingDialog.contentProgress
.textAndMnemonic
=
Printed page {0}...
PrintingDialog.contentAborting
Text
=
Printing aborting...
PrintingDialog.contentAborting
.textAndMnemonic
=
Printing aborting...
PrintingDialog.abortButtonText
=
Abort
PrintingDialog.abortButton.textAndMnemonic
=
&Abort
PrintingDialog.abortButtonMnemonic
=
65
PrintingDialog.abortButtonToolTip.textAndMnemonic
=
Abort Printing
PrintingDialog.abortButtonDisplayedMnemonicIndex
=
0
PrintingDialog.abortButtonToolTipText
=
Abort Printing
############ Internal Frame Strings ############
############ Internal Frame Strings ############
InternalFrame.iconButtonToolTip
=
Minimize
InternalFrame.iconButtonToolTip
=
Minimize
...
@@ -160,42 +138,42 @@ InternalFrame.restoreButtonToolTip=Restore
...
@@ -160,42 +138,42 @@ InternalFrame.restoreButtonToolTip=Restore
InternalFrame.closeButtonToolTip
=
Close
InternalFrame.closeButtonToolTip
=
Close
############ Internal Frame Title Pane Strings ############
############ Internal Frame Title Pane Strings ############
InternalFrameTitlePane.restoreButton
Text
=
Restore
InternalFrameTitlePane.restoreButton
.textAndMnemonic
=
Restore
InternalFrameTitlePane.moveButton
Text
=
Move
InternalFrameTitlePane.moveButton
.textAndMnemonic
=
Move
InternalFrameTitlePane.sizeButton
Text
=
Size
InternalFrameTitlePane.sizeButton
.textAndMnemonic
=
Size
InternalFrameTitlePane.minimizeButton
Text
=
Minimize
InternalFrameTitlePane.minimizeButton
.textAndMnemonic
=
Minimize
InternalFrameTitlePane.maximizeButton
Text
=
Maximize
InternalFrameTitlePane.maximizeButton
.textAndMnemonic
=
Maximize
InternalFrameTitlePane.closeButton
Text
=
Close
InternalFrameTitlePane.closeButton
.textAndMnemonic
=
Close
############ Text strings #############
############ Text strings #############
# Used for html forms
# Used for html forms
FormView.submitButton
Text
=
Submit Query
FormView.submitButton
.textAndMnemonic
=
Submit Query
FormView.resetButton
Text
=
Reset
FormView.resetButton
.textAndMnemonic
=
Reset
FormView.browseFileButton
Text
=
Browse...
FormView.browseFileButton
.textAndMnemonic
=
Browse...
############ Abstract Document Strings ############
############ Abstract Document Strings ############
AbstractDocument.styleChange
Text
=
style change
AbstractDocument.styleChange
.textAndMnemonic
=
style change
AbstractDocument.addition
Text
=
addition
AbstractDocument.addition
.textAndMnemonic
=
addition
AbstractDocument.deletion
Text
=
deletion
AbstractDocument.deletion
.textAndMnemonic
=
deletion
AbstractDocument.undo
Text
=
Undo
AbstractDocument.undo
.textAndMnemonic
=
Undo
AbstractDocument.redo
Text
=
Redo
AbstractDocument.redo
.textAndMnemonic
=
Redo
############ Abstract Button Strings ############
############ Abstract Button Strings ############
AbstractButton.click
Text
=
click
AbstractButton.click
.textAndMnemonic
=
click
############ Abstract Undoable Edit Strings ############
############ Abstract Undoable Edit Strings ############
AbstractUndoableEdit.undo
Text
=
Undo
AbstractUndoableEdit.undo
.textAndMnemonic
=
Undo
AbstractUndoableEdit.redo
Text
=
Redo
AbstractUndoableEdit.redo
.textAndMnemonic
=
Redo
############ Combo Box Strings ############
############ Combo Box Strings ############
ComboBox.togglePopup
Text
=
togglePopup
ComboBox.togglePopup
.textAndMnemonic
=
togglePopup
############ Progress Monitor Strings ############
############ Progress Monitor Strings ############
ProgressMonitor.progress
Text
=
Progress...
ProgressMonitor.progress
.textAndMnemonic
=
Progress...
############ Split Pane Strings ############
############ Split Pane Strings ############
SplitPane.leftButton
Text
=
left button
SplitPane.leftButton
.textAndMnemonic
=
left button
SplitPane.rightButton
Text
=
right button
SplitPane.rightButton
.textAndMnemonic
=
right button
# Used for Isindex
# Used for Isindex
IsindexView.prompt
=
This is a searchable index. Enter search keywords:
IsindexView.prompt
=
This is a searchable index. Enter search keywords:
...
...
src/macosx/classes/sun/awt/CGraphicsDevice.java
浏览文件 @
f63cb0a6
...
@@ -40,7 +40,7 @@ public class CGraphicsDevice extends GraphicsDevice {
...
@@ -40,7 +40,7 @@ public class CGraphicsDevice extends GraphicsDevice {
private
final
int
displayID
;
private
final
int
displayID
;
// Array of all GraphicsConfig instances for this device
// Array of all GraphicsConfig instances for this device
private
final
CGraphicsConfig
[]
configs
;
private
final
GraphicsConfiguration
[]
configs
;
// Default config (temporarily hard coded)
// Default config (temporarily hard coded)
private
final
int
DEFAULT_CONFIG
=
0
;
private
final
int
DEFAULT_CONFIG
=
0
;
...
@@ -49,7 +49,7 @@ public class CGraphicsDevice extends GraphicsDevice {
...
@@ -49,7 +49,7 @@ public class CGraphicsDevice extends GraphicsDevice {
public
CGraphicsDevice
(
int
displayID
)
{
public
CGraphicsDevice
(
int
displayID
)
{
this
.
displayID
=
displayID
;
this
.
displayID
=
displayID
;
configs
=
new
CGraphicsConfig
[]
{
configs
=
new
GraphicsConfiguration
[]
{
CGLGraphicsConfig
.
getConfig
(
this
,
0
)
CGLGraphicsConfig
.
getConfig
(
this
,
0
)
};
};
}
}
...
@@ -66,7 +66,7 @@ public class CGraphicsDevice extends GraphicsDevice {
...
@@ -66,7 +66,7 @@ public class CGraphicsDevice extends GraphicsDevice {
*/
*/
@Override
@Override
public
GraphicsConfiguration
[]
getConfigurations
()
{
public
GraphicsConfiguration
[]
getConfigurations
()
{
return
configs
;
return
configs
.
clone
()
;
}
}
/**
/**
...
...
src/macosx/classes/sun/lwawt/LWComponentPeer.java
浏览文件 @
f63cb0a6
...
@@ -56,6 +56,8 @@ import sun.java2d.SunGraphics2D;
...
@@ -56,6 +56,8 @@ import sun.java2d.SunGraphics2D;
import
sun.java2d.opengl.OGLRenderQueue
;
import
sun.java2d.opengl.OGLRenderQueue
;
import
sun.java2d.pipe.Region
;
import
sun.java2d.pipe.Region
;
import
sun.util.logging.PlatformLogger
;
import
javax.swing.JComponent
;
import
javax.swing.JComponent
;
import
javax.swing.SwingUtilities
;
import
javax.swing.SwingUtilities
;
import
javax.swing.RepaintManager
;
import
javax.swing.RepaintManager
;
...
@@ -65,7 +67,10 @@ import sun.lwawt.macosx.CDropTarget;
...
@@ -65,7 +67,10 @@ import sun.lwawt.macosx.CDropTarget;
import
com.sun.java.swing.SwingUtilities3
;
import
com.sun.java.swing.SwingUtilities3
;
public
abstract
class
LWComponentPeer
<
T
extends
Component
,
D
extends
JComponent
>
public
abstract
class
LWComponentPeer
<
T
extends
Component
,
D
extends
JComponent
>
implements
ComponentPeer
,
DropTargetPeer
{
implements
ComponentPeer
,
DropTargetPeer
{
private
static
final
PlatformLogger
focusLog
=
PlatformLogger
.
getLogger
(
"sun.lwawt.focus.LWComponentPeer"
);
// State lock is to be used for modifications to this
// State lock is to be used for modifications to this
// peer's fields (e.g. bounds, background, font, etc.)
// peer's fields (e.g. bounds, background, font, etc.)
// It should be the last lock in the lock chain
// It should be the last lock in the lock chain
...
@@ -372,7 +377,7 @@ public abstract class LWComponentPeer<T extends Component, D extends JComponent>
...
@@ -372,7 +377,7 @@ public abstract class LWComponentPeer<T extends Component, D extends JComponent>
}
}
@Override
@Override
public
void
dispose
()
{
public
final
void
dispose
()
{
if
(
disposed
.
compareAndSet
(
false
,
true
))
{
if
(
disposed
.
compareAndSet
(
false
,
true
))
{
disposeImpl
();
disposeImpl
();
}
}
...
@@ -885,7 +890,13 @@ public abstract class LWComponentPeer<T extends Component, D extends JComponent>
...
@@ -885,7 +890,13 @@ public abstract class LWComponentPeer<T extends Component, D extends JComponent>
@Override
@Override
public
boolean
requestFocus
(
Component
lightweightChild
,
boolean
temporary
,
public
boolean
requestFocus
(
Component
lightweightChild
,
boolean
temporary
,
boolean
focusedWindowChangeAllowed
,
long
time
,
boolean
focusedWindowChangeAllowed
,
long
time
,
CausedFocusEvent
.
Cause
cause
)
{
CausedFocusEvent
.
Cause
cause
)
{
if
(
focusLog
.
isLoggable
(
PlatformLogger
.
FINEST
))
{
focusLog
.
finest
(
"lightweightChild="
+
lightweightChild
+
", temporary="
+
temporary
+
", focusedWindowChangeAllowed="
+
focusedWindowChangeAllowed
+
", time= "
+
time
+
", cause="
+
cause
);
}
if
(
LWKeyboardFocusManagerPeer
.
getInstance
(
getAppContext
()).
if
(
LWKeyboardFocusManagerPeer
.
getInstance
(
getAppContext
()).
processSynchronousLightweightTransfer
(
getTarget
(),
lightweightChild
,
temporary
,
processSynchronousLightweightTransfer
(
getTarget
(),
lightweightChild
,
temporary
,
focusedWindowChangeAllowed
,
time
))
{
focusedWindowChangeAllowed
,
time
))
{
...
@@ -901,19 +912,44 @@ public abstract class LWComponentPeer<T extends Component, D extends JComponent>
...
@@ -901,19 +912,44 @@ public abstract class LWComponentPeer<T extends Component, D extends JComponent>
case
LWKeyboardFocusManagerPeer
.
SNFH_SUCCESS_PROCEED
:
case
LWKeyboardFocusManagerPeer
.
SNFH_SUCCESS_PROCEED
:
Window
parentWindow
=
SunToolkit
.
getContainingWindow
(
getTarget
());
Window
parentWindow
=
SunToolkit
.
getContainingWindow
(
getTarget
());
if
(
parentWindow
==
null
)
{
if
(
parentWindow
==
null
)
{
focusLog
.
fine
(
"request rejected, parentWindow is null"
);
LWKeyboardFocusManagerPeer
.
removeLastFocusRequest
(
getTarget
());
LWKeyboardFocusManagerPeer
.
removeLastFocusRequest
(
getTarget
());
return
false
;
return
false
;
}
}
LWWindowPeer
parentPeer
=
(
LWWindowPeer
)
parentWindow
.
getPeer
();
LWWindowPeer
parentPeer
=
(
LWWindowPeer
)
parentWindow
.
getPeer
();
if
(
parentPeer
==
null
)
{
if
(
parentPeer
==
null
)
{
focusLog
.
fine
(
"request rejected, parentPeer is null"
);
LWKeyboardFocusManagerPeer
.
removeLastFocusRequest
(
getTarget
());
LWKeyboardFocusManagerPeer
.
removeLastFocusRequest
(
getTarget
());
return
false
;
return
false
;
}
}
// A fix for 7145768. Ensure the parent window is currently natively focused.
// The more evident place to perform this check is in KFM.shouldNativelyFocusHeavyweight,
// however that is the shared code and this particular problem's reproducibility has
// platform specifics. So, it was decided to narrow down the fix to lwawt (OSX) in
// current release. TODO: consider fixing it in the shared code.
if
(!
focusedWindowChangeAllowed
)
{
LWWindowPeer
decoratedPeer
=
parentPeer
.
isSimpleWindow
()
?
LWWindowPeer
.
getOwnerFrameDialog
(
parentPeer
)
:
parentPeer
;
if
(
decoratedPeer
==
null
||
!
decoratedPeer
.
getPlatformWindow
().
isActive
())
{
if
(
focusLog
.
isLoggable
(
PlatformLogger
.
FINE
))
{
focusLog
.
fine
(
"request rejected, focusedWindowChangeAllowed==false, "
+
"decoratedPeer is inactive: "
+
decoratedPeer
);
}
LWKeyboardFocusManagerPeer
.
removeLastFocusRequest
(
getTarget
());
return
false
;
}
}
boolean
res
=
parentPeer
.
requestWindowFocus
(
cause
);
boolean
res
=
parentPeer
.
requestWindowFocus
(
cause
);
// If parent window can be made focused and has been made focused (synchronously)
// If parent window can be made focused and has been made focused (synchronously)
// then we can proceed with children, otherwise we retreat
// then we can proceed with children, otherwise we retreat
if
(!
res
||
!
parentWindow
.
isFocused
())
{
if
(!
res
||
!
parentWindow
.
isFocused
())
{
if
(
focusLog
.
isLoggable
(
PlatformLogger
.
FINE
))
{
focusLog
.
fine
(
"request rejected, res= "
+
res
+
", parentWindow.isFocused()="
+
parentWindow
.
isFocused
());
}
LWKeyboardFocusManagerPeer
.
removeLastFocusRequest
(
getTarget
());
LWKeyboardFocusManagerPeer
.
removeLastFocusRequest
(
getTarget
());
return
false
;
return
false
;
}
}
...
@@ -940,8 +976,8 @@ public abstract class LWComponentPeer<T extends Component, D extends JComponent>
...
@@ -940,8 +976,8 @@ public abstract class LWComponentPeer<T extends Component, D extends JComponent>
@Override
@Override
public
Image
createImage
(
int
w
,
int
h
)
{
public
Image
createImage
(
int
w
,
int
h
)
{
// TODO: accelerated image
CGraphicsConfig
gc
=
(
CGraphicsConfig
)
getGraphicsConfiguration
();
return
g
etGraphicsConfiguration
().
createCompatibleImage
(
w
,
h
);
return
g
c
.
createAcceleratedImage
(
getTarget
(),
w
,
h
);
}
}
@Override
@Override
...
...
src/macosx/classes/sun/lwawt/LWCursorManager.java
浏览文件 @
f63cb0a6
...
@@ -88,20 +88,20 @@ public abstract class LWCursorManager {
...
@@ -88,20 +88,20 @@ public abstract class LWCursorManager {
}
else
{
}
else
{
cursor
=
(
c
!=
null
)
?
c
.
getCursor
()
:
null
;
cursor
=
(
c
!=
null
)
?
c
.
getCursor
()
:
null
;
}
}
// TODO: default cursor for modal blocked windows
setCursor
(
cursor
);
setCursor
(
cursor
);
}
}
/**
/**
* Returns the first visible, enabled and showing component under cursor.
* Returns the first visible, enabled and showing component under cursor.
* Returns null for modal blocked windows.
*
*
* @param cursorPos Current cursor position.
* @param cursorPos Current cursor position.
* @return Component
* @return Component
or null.
*/
*/
private
static
final
Component
findComponent
(
final
Point
cursorPos
)
{
private
static
final
Component
findComponent
(
final
Point
cursorPos
)
{
final
LWComponentPeer
<?,
?>
peer
=
LWWindowPeer
.
getPeerUnderCursor
();
final
LWComponentPeer
<?,
?>
peer
=
LWWindowPeer
.
getPeerUnderCursor
();
Component
c
=
null
;
Component
c
=
null
;
if
(
peer
!=
null
)
{
if
(
peer
!=
null
&&
peer
.
getWindowPeerOrSelf
().
getBlocker
()
==
null
)
{
c
=
peer
.
getTarget
();
c
=
peer
.
getTarget
();
if
(
c
instanceof
Container
)
{
if
(
c
instanceof
Container
)
{
final
Point
p
=
peer
.
getLocationOnScreen
();
final
Point
p
=
peer
.
getLocationOnScreen
();
...
...
src/macosx/classes/sun/lwawt/LWTextComponentPeer.java
浏览文件 @
f63cb0a6
...
@@ -81,6 +81,18 @@ abstract class LWTextComponentPeer<T extends TextComponent, D extends JComponent
...
@@ -81,6 +81,18 @@ abstract class LWTextComponentPeer<T extends TextComponent, D extends JComponent
firstChangeSkipped
=
true
;
firstChangeSkipped
=
true
;
}
}
@Override
protected
final
void
disposeImpl
()
{
synchronized
(
getDelegateLock
())
{
// visible caret has a timer thread which must be stopped
getTextComponent
().
getCaret
().
setVisible
(
false
);
}
super
.
disposeImpl
();
}
/**
* This method should be called under getDelegateLock().
*/
abstract
JTextComponent
getTextComponent
();
abstract
JTextComponent
getTextComponent
();
public
Dimension
getPreferredSize
(
final
int
rows
,
final
int
columns
)
{
public
Dimension
getPreferredSize
(
final
int
rows
,
final
int
columns
)
{
...
...
src/macosx/classes/sun/lwawt/LWWindowPeer.java
浏览文件 @
f63cb0a6
...
@@ -50,7 +50,7 @@ public class LWWindowPeer
...
@@ -50,7 +50,7 @@ public class LWWindowPeer
EMBEDDEDFRAME
EMBEDDEDFRAME
}
}
private
static
final
sun
.
util
.
logging
.
PlatformLogger
focusLog
=
PlatformLogger
.
getLogger
(
"sun.lwawt.focus.LWWindowPeer"
);
private
static
final
PlatformLogger
focusLog
=
PlatformLogger
.
getLogger
(
"sun.lwawt.focus.LWWindowPeer"
);
private
PlatformWindow
platformWindow
;
private
PlatformWindow
platformWindow
;
...
@@ -101,8 +101,6 @@ public class LWWindowPeer
...
@@ -101,8 +101,6 @@ public class LWWindowPeer
// events between MOUSE_PRESSED and MOUSE_RELEASED for particular button
// events between MOUSE_PRESSED and MOUSE_RELEASED for particular button
private
static
int
mouseClickButtons
=
0
;
private
static
int
mouseClickButtons
=
0
;
private
volatile
boolean
cachedFocusableWindow
;
private
volatile
boolean
isOpaque
=
true
;
private
volatile
boolean
isOpaque
=
true
;
private
static
final
Font
DEFAULT_FONT
=
new
Font
(
"Lucida Grande"
,
Font
.
PLAIN
,
13
);
private
static
final
Font
DEFAULT_FONT
=
new
Font
(
"Lucida Grande"
,
Font
.
PLAIN
,
13
);
...
@@ -172,8 +170,6 @@ public class LWWindowPeer
...
@@ -172,8 +170,6 @@ public class LWWindowPeer
setAlwaysOnTop
(
getTarget
().
isAlwaysOnTop
());
setAlwaysOnTop
(
getTarget
().
isAlwaysOnTop
());
updateMinimumSize
();
updateMinimumSize
();
cachedFocusableWindow
=
getTarget
().
isFocusableWindow
();
setOpacity
(
getTarget
().
getOpacity
());
setOpacity
(
getTarget
().
getOpacity
());
setOpaque
(
getTarget
().
isOpaque
());
setOpaque
(
getTarget
().
isOpaque
());
...
@@ -245,15 +241,17 @@ public class LWWindowPeer
...
@@ -245,15 +241,17 @@ public class LWWindowPeer
getInstance
(
getAppContext
());
getInstance
(
getAppContext
());
if
(
visible
)
{
if
(
visible
)
{
updateFocusableWindowState
();
if
(!
getTarget
().
isAutoRequestFocus
())
{
changeFocusedWindow
(
true
,
true
);
return
;
}
else
{
requestWindowFocus
(
CausedFocusEvent
.
Cause
.
ACTIVATION
);
}
// Focus the owner in case this window is focused.
// Focus the owner in case this window is focused.
}
else
if
(
manager
.
getCurrentFocusedWindow
()
==
getTarget
())
{
}
else
if
(
manager
.
getCurrentFocusedWindow
()
==
getTarget
())
{
// Transfer focus to the owner.
LWWindowPeer
owner
=
getOwnerFrameDialog
(
LWWindowPeer
.
this
);
LWWindowPeer
owner
=
getOwnerFrameDialog
(
LWWindowPeer
.
this
);
if
(
owner
!=
null
)
{
if
(
owner
!=
null
)
{
// KFM will do all the rest.
owner
.
requestWindowFocus
(
CausedFocusEvent
.
Cause
.
ACTIVATION
);
owner
.
changeFocusedWindow
(
true
,
false
);
}
}
}
}
}
}
...
@@ -400,7 +398,6 @@ public class LWWindowPeer
...
@@ -400,7 +398,6 @@ public class LWWindowPeer
@Override
@Override
public
void
updateFocusableWindowState
()
{
public
void
updateFocusableWindowState
()
{
cachedFocusableWindow
=
getTarget
().
isFocusableWindow
();
platformWindow
.
updateFocusableWindowState
();
platformWindow
.
updateFocusableWindowState
();
}
}
...
@@ -409,6 +406,8 @@ public class LWWindowPeer
...
@@ -409,6 +406,8 @@ public class LWWindowPeer
synchronized
(
getPeerTreeLock
())
{
synchronized
(
getPeerTreeLock
())
{
this
.
blocker
=
blocked
?
(
LWWindowPeer
)
blocker
.
getPeer
()
:
null
;
this
.
blocker
=
blocked
?
(
LWWindowPeer
)
blocker
.
getPeer
()
:
null
;
}
}
platformWindow
.
setModalBlocked
(
blocked
);
}
}
@Override
@Override
...
@@ -617,7 +616,7 @@ public class LWWindowPeer
...
@@ -617,7 +616,7 @@ public class LWWindowPeer
}
}
public
void
notifyActivation
(
boolean
activation
)
{
public
void
notifyActivation
(
boolean
activation
)
{
changeFocusedWindow
(
activation
,
false
);
changeFocusedWindow
(
activation
);
}
}
// MouseDown in non-client area
// MouseDown in non-client area
...
@@ -1063,6 +1062,10 @@ public class LWWindowPeer
...
@@ -1063,6 +1062,10 @@ public class LWWindowPeer
return
lastMouseEventPeer
;
return
lastMouseEventPeer
;
}
}
/*
* Requests platform to set native focus on a frame/dialog.
* In case of a simple window, triggers appropriate java focus change.
*/
public
boolean
requestWindowFocus
(
CausedFocusEvent
.
Cause
cause
)
{
public
boolean
requestWindowFocus
(
CausedFocusEvent
.
Cause
cause
)
{
if
(
focusLog
.
isLoggable
(
PlatformLogger
.
FINE
))
{
if
(
focusLog
.
isLoggable
(
PlatformLogger
.
FINE
))
{
focusLog
.
fine
(
"requesting native focus to "
+
this
);
focusLog
.
fine
(
"requesting native focus to "
+
this
);
...
@@ -1106,14 +1109,14 @@ public class LWWindowPeer
...
@@ -1106,14 +1109,14 @@ public class LWWindowPeer
}
}
// DKFM will synthesize all the focus/activation events correctly.
// DKFM will synthesize all the focus/activation events correctly.
changeFocusedWindow
(
true
,
false
);
changeFocusedWindow
(
true
);
return
true
;
return
true
;
// In case the toplevel is active but not focused, change focus directly,
// In case the toplevel is active but not focused, change focus directly,
// as requesting native focus on it will not have effect.
// as requesting native focus on it will not have effect.
}
else
if
(
getTarget
()
==
currentActive
&&
!
getTarget
().
hasFocus
())
{
}
else
if
(
getTarget
()
==
currentActive
&&
!
getTarget
().
hasFocus
())
{
changeFocusedWindow
(
true
,
false
);
changeFocusedWindow
(
true
);
return
true
;
return
true
;
}
}
return
platformWindow
.
requestWindowFocus
();
return
platformWindow
.
requestWindowFocus
();
...
@@ -1122,7 +1125,19 @@ public class LWWindowPeer
...
@@ -1122,7 +1125,19 @@ public class LWWindowPeer
private
boolean
focusAllowedFor
()
{
private
boolean
focusAllowedFor
()
{
Window
window
=
getTarget
();
Window
window
=
getTarget
();
// TODO: check if modal blocked
// TODO: check if modal blocked
return
window
.
isVisible
()
&&
window
.
isEnabled
()
&&
window
.
isFocusableWindow
();
return
window
.
isVisible
()
&&
window
.
isEnabled
()
&&
isFocusableWindow
();
}
private
boolean
isFocusableWindow
()
{
boolean
focusable
=
getTarget
().
isFocusableWindow
();
if
(
isSimpleWindow
())
{
LWWindowPeer
ownerPeer
=
getOwnerFrameDialog
(
this
);
if
(
ownerPeer
==
null
)
{
return
false
;
}
return
focusable
&&
ownerPeer
.
getTarget
().
isFocusableWindow
();
}
return
focusable
;
}
}
public
boolean
isSimpleWindow
()
{
public
boolean
isSimpleWindow
()
{
...
@@ -1131,19 +1146,19 @@ public class LWWindowPeer
...
@@ -1131,19 +1146,19 @@ public class LWWindowPeer
}
}
/*
/*
*
"Delegates" the responsibility of managing focus to keyboard focus manager
.
*
Changes focused window on java level
.
*/
*/
private
void
changeFocusedWindow
(
boolean
becomesFocused
,
boolean
isShowing
)
{
private
void
changeFocusedWindow
(
boolean
becomesFocused
)
{
if
(
focusLog
.
isLoggable
(
PlatformLogger
.
FINE
))
{
if
(
focusLog
.
isLoggable
(
PlatformLogger
.
FINE
))
{
focusLog
.
fine
((
becomesFocused
?
"gaining"
:
"loosing"
)
+
" focus window: "
+
this
);
focusLog
.
fine
((
becomesFocused
?
"gaining"
:
"loosing"
)
+
" focus window: "
+
this
);
}
}
if
(
isShowing
&&
!
getTarget
().
isAutoRequestFocus
()
||
skipNextFocusChange
)
{
if
(
skipNextFocusChange
)
{
focusLog
.
fine
(
"skipping focus change"
);
focusLog
.
fine
(
"skipping focus change"
);
skipNextFocusChange
=
false
;
skipNextFocusChange
=
false
;
return
;
return
;
}
}
if
(!
isFocusableWindow
()
&&
becomesFocused
)
{
if
(!
cachedFocusableWindow
)
{
focusLog
.
fine
(
"the window is not focusable"
);
return
;
return
;
}
}
if
(
becomesFocused
)
{
if
(
becomesFocused
)
{
...
@@ -1182,7 +1197,7 @@ public class LWWindowPeer
...
@@ -1182,7 +1197,7 @@ public class LWWindowPeer
postEvent
(
windowEvent
);
postEvent
(
windowEvent
);
}
}
private
static
LWWindowPeer
getOwnerFrameDialog
(
LWWindowPeer
peer
)
{
static
LWWindowPeer
getOwnerFrameDialog
(
LWWindowPeer
peer
)
{
Window
owner
=
(
peer
!=
null
?
peer
.
getTarget
().
getOwner
()
:
null
);
Window
owner
=
(
peer
!=
null
?
peer
.
getTarget
().
getOwner
()
:
null
);
while
(
owner
!=
null
&&
!(
owner
instanceof
Frame
||
owner
instanceof
Dialog
))
{
while
(
owner
!=
null
&&
!(
owner
instanceof
Frame
||
owner
instanceof
Dialog
))
{
owner
=
owner
.
getOwner
();
owner
=
owner
.
getOwner
();
...
...
src/macosx/classes/sun/lwawt/PlatformWindow.java
浏览文件 @
f63cb0a6
...
@@ -108,6 +108,8 @@ public interface PlatformWindow {
...
@@ -108,6 +108,8 @@ public interface PlatformWindow {
public
void
flip
(
int
x1
,
int
y1
,
int
x2
,
int
y2
,
public
void
flip
(
int
x1
,
int
y1
,
int
x2
,
int
y2
,
BufferCapabilities
.
FlipContents
flipAction
);
BufferCapabilities
.
FlipContents
flipAction
);
public
void
setModalBlocked
(
boolean
blocked
);
public
void
toFront
();
public
void
toFront
();
public
void
toBack
();
public
void
toBack
();
...
...
src/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java
浏览文件 @
f63cb0a6
...
@@ -112,28 +112,19 @@ public class CEmbeddedFrame extends EmbeddedFrame {
...
@@ -112,28 +112,19 @@ public class CEmbeddedFrame extends EmbeddedFrame {
public
void
handleFocusEvent
(
boolean
focused
)
{
public
void
handleFocusEvent
(
boolean
focused
)
{
this
.
focused
=
focused
;
this
.
focused
=
focused
;
updateOverlayWindowActiveState
();
if
(
parentWindowActive
)
{
responder
.
handleWindowFocusEvent
(
focused
);
}
}
}
public
void
handleWindowFocusEvent
(
boolean
parentWindowActive
)
{
public
void
handleWindowFocusEvent
(
boolean
parentWindowActive
)
{
this
.
parentWindowActive
=
parentWindowActive
;
this
.
parentWindowActive
=
parentWindowActive
;
updateOverlayWindowActiveState
();
if
(
focused
)
{
responder
.
handleWindowFocusEvent
(
parentWindowActive
);
}
}
}
public
boolean
isParentWindowActive
()
{
public
boolean
isParentWindowActive
()
{
return
parentWindowActive
;
return
parentWindowActive
;
}
}
/*
* May change appearance of contents of window, and generate a
* WINDOW_ACTIVATED event.
*/
private
void
updateOverlayWindowActiveState
()
{
final
boolean
showAsFocused
=
parentWindowActive
&&
focused
;
dispatchEvent
(
new
FocusEvent
(
this
,
showAsFocused
?
FocusEvent
.
FOCUS_GAINED
:
FocusEvent
.
FOCUS_LOST
));
}
}
}
src/macosx/classes/sun/lwawt/macosx/CFileDialog.java
浏览文件 @
f63cb0a6
...
@@ -34,6 +34,7 @@ import java.util.List;
...
@@ -34,6 +34,7 @@ import java.util.List;
import
java.io.*
;
import
java.io.*
;
import
sun.awt.CausedFocusEvent.Cause
;
import
sun.awt.CausedFocusEvent.Cause
;
import
sun.awt.AWTAccessor
;
import
sun.java2d.pipe.Region
;
import
sun.java2d.pipe.Region
;
class
CFileDialog
implements
FileDialogPeer
{
class
CFileDialog
implements
FileDialogPeer
{
...
@@ -53,33 +54,40 @@ class CFileDialog implements FileDialogPeer {
...
@@ -53,33 +54,40 @@ class CFileDialog implements FileDialogPeer {
title
=
" "
;
title
=
" "
;
}
}
String
userFileName
=
nativeRunFileDialog
(
title
,
String
[]
userFileNames
=
nativeRunFileDialog
(
title
,
dialogMode
,
navigateApps
,
dialogMode
,
target
.
isMultipleMode
(),
navigateApps
,
target
.
getFilenameFilter
()
!=
null
,
target
.
getFilenameFilter
()
!=
null
,
target
.
getDirectory
(),
target
.
getDirectory
(),
target
.
getFile
());
target
.
getFile
());
File
file
=
null
;
String
directory
=
null
;
if
(
userFileName
!=
null
)
{
String
file
=
null
;
File
[]
files
=
null
;
if
(
userFileNames
!=
null
)
{
// the dialog wasn't cancelled
// the dialog wasn't cancelled
file
=
new
File
(
userFileName
);
int
filesNumber
=
userFileNames
.
length
;
}
files
=
new
File
[
filesNumber
];
for
(
int
i
=
0
;
i
<
filesNumber
;
i
++)
{
files
[
i
]
=
new
File
(
userFileNames
[
i
]);
}
if
(
file
!=
null
)
{
directory
=
files
[
0
].
getParent
();
// make sure directory always ends in '/'
// make sure directory always ends in '/'
String
parent
=
file
.
getParent
();
if
(!
directory
.
endsWith
(
File
.
separator
))
{
if
(!
parent
.
endsWith
(
File
.
separator
))
{
directory
=
directory
+
File
.
separator
;
parent
=
parent
+
File
.
separator
;
}
}
// store results back in component
file
=
files
[
0
].
getName
();
// pick any file
target
.
setDirectory
(
parent
);
target
.
setFile
(
file
.
getName
());
}
else
{
// setting file name to null is how we tell
// java client that user hit the cancel button
target
.
setFile
(
null
);
}
}
// store results back in component
AWTAccessor
.
FileDialogAccessor
accessor
=
AWTAccessor
.
getFileDialogAccessor
();
accessor
.
setDirectory
(
target
,
directory
);
accessor
.
setFile
(
target
,
file
);
accessor
.
setFiles
(
target
,
files
);
}
finally
{
}
finally
{
// Java2 Dialog waits for hide to let show() return
// Java2 Dialog waits for hide to let show() return
target
.
dispose
();
target
.
dispose
();
...
@@ -133,8 +141,8 @@ class CFileDialog implements FileDialogPeer {
...
@@ -133,8 +141,8 @@ class CFileDialog implements FileDialogPeer {
return
ret
;
return
ret
;
}
}
private
native
String
nativeRunFileDialog
(
String
title
,
int
mode
,
private
native
String
[]
nativeRunFileDialog
(
String
title
,
int
mode
,
boolean
shouldNavigateApps
,
boolean
hasFilenameFilter
,
boolean
multipleMode
,
boolean
shouldNavigateApps
,
boolean
hasFilenameFilter
,
String
directory
,
String
file
);
String
directory
,
String
file
);
@Override
@Override
...
...
src/macosx/classes/sun/lwawt/macosx/CPlatformEmbeddedFrame.java
浏览文件 @
f63cb0a6
...
@@ -205,4 +205,7 @@ public class CPlatformEmbeddedFrame implements PlatformWindow {
...
@@ -205,4 +205,7 @@ public class CPlatformEmbeddedFrame implements PlatformWindow {
@Override
@Override
public
void
setWindowState
(
int
windowState
)
{}
public
void
setWindowState
(
int
windowState
)
{}
@Override
public
void
setModalBlocked
(
boolean
blocked
)
{}
}
}
src/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java
浏览文件 @
f63cb0a6
...
@@ -204,4 +204,8 @@ final class CPlatformResponder {
...
@@ -204,4 +204,8 @@ final class CPlatformResponder {
}
}
}
}
}
}
void
handleWindowFocusEvent
(
boolean
gained
)
{
peer
.
notifyActivation
(
gained
);
}
}
}
src/macosx/classes/sun/lwawt/macosx/CPlatformView.java
浏览文件 @
f63cb0a6
...
@@ -49,9 +49,9 @@ public class CPlatformView extends CFRetainedResource {
...
@@ -49,9 +49,9 @@ public class CPlatformView extends CFRetainedResource {
super
(
0
,
true
);
super
(
0
,
true
);
}
}
public
void
initialize
(
LWWindowPeer
peer
)
{
public
void
initialize
(
LWWindowPeer
peer
,
CPlatformResponder
responder
)
{
this
.
peer
=
peer
;
this
.
peer
=
peer
;
this
.
responder
=
new
CPlatformResponder
(
peer
,
false
)
;
this
.
responder
=
responder
;
if
(!
LWCToolkit
.
getSunAwtDisableCALayers
())
{
if
(!
LWCToolkit
.
getSunAwtDisableCALayers
())
{
this
.
windowLayer
=
new
CGLLayer
(
peer
);
this
.
windowLayer
=
new
CGLLayer
(
peer
);
...
...
src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java
浏览文件 @
f63cb0a6
...
@@ -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
nativeSetEnabled
(
long
nsWindowPtr
,
boolean
isEnabled
);
private
static
native
void
nativeSynthesizeMouseEnteredExitedEvents
(
long
nsWindowPtr
);
private
static
native
void
nativeSynthesizeMouseEnteredExitedEvents
(
long
nsWindowPtr
);
private
static
native
int
nativeGetScreenNSWindowIsOn_AppKitThread
(
long
nsWindowPtr
);
private
static
native
int
nativeGetScreenNSWindowIsOn_AppKitThread
(
long
nsWindowPtr
);
...
@@ -207,6 +208,7 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
...
@@ -207,6 +208,7 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
private
boolean
visible
=
false
;
// visibility status from native perspective
private
boolean
visible
=
false
;
// visibility status from native perspective
private
boolean
undecorated
;
// initialized in getInitialStyleBits()
private
boolean
undecorated
;
// initialized in getInitialStyleBits()
private
Rectangle
normalBounds
=
null
;
// not-null only for undecorated maximized windows
private
Rectangle
normalBounds
=
null
;
// not-null only for undecorated maximized windows
private
CPlatformResponder
responder
;
public
CPlatformWindow
(
final
PeerType
peerType
)
{
public
CPlatformWindow
(
final
PeerType
peerType
)
{
super
(
0
,
true
);
super
(
0
,
true
);
...
@@ -231,8 +233,9 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
...
@@ -231,8 +233,9 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
final
long
parentNSWindowPtr
=
(
owner
!=
null
?
owner
.
getNSWindowPtr
()
:
0
);
final
long
parentNSWindowPtr
=
(
owner
!=
null
?
owner
.
getNSWindowPtr
()
:
0
);
String
warningString
=
target
.
getWarningString
();
String
warningString
=
target
.
getWarningString
();
responder
=
new
CPlatformResponder
(
peer
,
false
);
contentView
=
new
CPlatformView
();
contentView
=
new
CPlatformView
();
contentView
.
initialize
(
peer
);
contentView
.
initialize
(
peer
,
responder
);
final
long
nativeWindowPtr
=
nativeCreateNSWindow
(
contentView
.
getAWTView
(),
styleBits
,
0
,
0
,
0
,
0
);
final
long
nativeWindowPtr
=
nativeCreateNSWindow
(
contentView
.
getAWTView
(),
styleBits
,
0
,
0
,
0
,
0
);
setPtr
(
nativeWindowPtr
);
setPtr
(
nativeWindowPtr
);
...
@@ -311,6 +314,10 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
...
@@ -311,6 +314,10 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
styleBits
=
SET
(
styleBits
,
NONACTIVATING
,
true
);
styleBits
=
SET
(
styleBits
,
NONACTIVATING
,
true
);
}
}
if
(
Window
.
Type
.
UTILITY
.
equals
(
target
.
getType
()))
{
styleBits
=
SET
(
styleBits
,
UTILITY
,
true
);
}
if
(
target
instanceof
javax
.
swing
.
RootPaneContainer
)
{
if
(
target
instanceof
javax
.
swing
.
RootPaneContainer
)
{
javax
.
swing
.
JRootPane
rootpane
=
((
javax
.
swing
.
RootPaneContainer
)
target
).
getRootPane
();
javax
.
swing
.
JRootPane
rootpane
=
((
javax
.
swing
.
RootPaneContainer
)
target
).
getRootPane
();
Object
prop
=
null
;
Object
prop
=
null
;
...
@@ -800,6 +807,15 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
...
@@ -800,6 +807,15 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
// value when the native notification comes to us
// value when the native notification comes to us
}
}
@Override
public
void
setModalBlocked
(
boolean
blocked
)
{
if
(
target
.
getModalExclusionType
()
==
Dialog
.
ModalExclusionType
.
APPLICATION_EXCLUDE
)
{
return
;
}
nativeSetEnabled
(
getNSWindowPtr
(),
!
blocked
);
}
// ----------------------------------------------------------------------
// ----------------------------------------------------------------------
// UTILITY METHODS
// UTILITY METHODS
// ----------------------------------------------------------------------
// ----------------------------------------------------------------------
...
@@ -851,7 +867,7 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
...
@@ -851,7 +867,7 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
focusLogger
.
fine
(
"the app is inactive, so the notification is ignored"
);
focusLogger
.
fine
(
"the app is inactive, so the notification is ignored"
);
return
;
return
;
}
}
peer
.
notifyActivation
(
gained
);
responder
.
handleWindowFocusEvent
(
gained
);
}
}
private
void
deliverMoveResizeEvent
(
int
x
,
int
y
,
int
width
,
int
height
)
{
private
void
deliverMoveResizeEvent
(
int
x
,
int
y
,
int
width
,
int
height
)
{
...
...
src/macosx/classes/sun/lwawt/macosx/CToolkitThreadBlockedHandler.java
浏览文件 @
f63cb0a6
...
@@ -27,9 +27,9 @@ package sun.lwawt.macosx;
...
@@ -27,9 +27,9 @@ package sun.lwawt.macosx;
import
sun.awt.datatransfer.ToolkitThreadBlockedHandler
;
import
sun.awt.datatransfer.ToolkitThreadBlockedHandler
;
// TODO:BG this class is really a NOOP right now, but should be filled in if needed.
final
class
CToolkitThreadBlockedHandler
implements
ToolkitThreadBlockedHandler
{
final
class
CToolkitThreadBlockedHandler
implements
ToolkitThreadBlockedHandler
{
private
final
LWCToolkit
toolkit
=
(
LWCToolkit
)
java
.
awt
.
Toolkit
.
getDefaultToolkit
();
public
void
lock
()
{
public
void
lock
()
{
}
}
...
@@ -41,9 +41,10 @@ final class CToolkitThreadBlockedHandler implements ToolkitThreadBlockedHandler
...
@@ -41,9 +41,10 @@ final class CToolkitThreadBlockedHandler implements ToolkitThreadBlockedHandler
}
}
public
void
enter
()
{
public
void
enter
()
{
toolkit
.
startNativeNestedEventLoop
();
}
}
public
void
exit
()
{
public
void
exit
()
{
toolkit
.
stopNativeNestedEventLoop
();
}
}
}
}
src/macosx/classes/sun/lwawt/macosx/LWCToolkit.java
浏览文件 @
f63cb0a6
...
@@ -63,6 +63,10 @@ public class LWCToolkit extends LWToolkit {
...
@@ -63,6 +63,10 @@ public class LWCToolkit extends LWToolkit {
private
static
native
void
initIDs
();
private
static
native
void
initIDs
();
static
native
void
startNativeNestedEventLoop
();
static
native
void
stopNativeNestedEventLoop
();
private
static
CInputMethodDescriptor
sInputMethodDescriptor
;
private
static
CInputMethodDescriptor
sInputMethodDescriptor
;
static
{
static
{
...
...
src/macosx/native/sun/awt/AWTView.m
浏览文件 @
f63cb0a6
...
@@ -48,7 +48,6 @@
...
@@ -48,7 +48,6 @@
//#define IM_DEBUG TRUE
//#define IM_DEBUG TRUE
//#define EXTRA_DEBUG
//#define EXTRA_DEBUG
static
BOOL
shouldUsePressAndHold
()
{
static
BOOL
shouldUsePressAndHold
()
{
static
int
shouldUsePressAndHold
=
-
1
;
static
int
shouldUsePressAndHold
=
-
1
;
if
(
shouldUsePressAndHold
!=
-
1
)
return
shouldUsePressAndHold
;
if
(
shouldUsePressAndHold
!=
-
1
)
return
shouldUsePressAndHold
;
...
@@ -81,7 +80,7 @@ AWT_ASSERT_APPKIT_THREAD;
...
@@ -81,7 +80,7 @@ AWT_ASSERT_APPKIT_THREAD;
fEnablePressAndHold
=
shouldUsePressAndHold
();
fEnablePressAndHold
=
shouldUsePressAndHold
();
fInPressAndHold
=
NO
;
fInPressAndHold
=
NO
;
fPAHNeedsToSelect
=
NO
;
fPAHNeedsToSelect
=
NO
;
mouseIsOver
=
NO
;
mouseIsOver
=
NO
;
if
(
windowLayer
!=
nil
)
{
if
(
windowLayer
!=
nil
)
{
...
@@ -302,16 +301,25 @@ AWT_ASSERT_APPKIT_THREAD;
...
@@ -302,16 +301,25 @@ AWT_ASSERT_APPKIT_THREAD;
*/
*/
-
(
void
)
deliverJavaMouseEvent
:
(
NSEvent
*
)
event
{
-
(
void
)
deliverJavaMouseEvent
:
(
NSEvent
*
)
event
{
BOOL
isEnabled
=
YES
;
NSEventType
type
=
[
event
type
];
NSWindow
*
window
=
[
self
window
];
if
([
window
isKindOfClass
:
[
AWTWindow_Panel
class
]]
||
[
window
isKindOfClass
:
[
AWTWindow_Normal
class
]])
{
isEnabled
=
[(
AWTWindow
*
)[
window
delegate
]
isEnabled
];
}
if
(
!
isEnabled
)
{
return
;
}
NSEventType
type
=
[
event
type
];
// check synthesized mouse entered/exited events
// check synthesized mouse entered/exited events
if
((
type
==
NSMouseEntered
&&
mouseIsOver
)
||
(
type
==
NSMouseExited
&&
!
mouseIsOver
))
{
if
((
type
==
NSMouseEntered
&&
mouseIsOver
)
||
(
type
==
NSMouseExited
&&
!
mouseIsOver
))
{
return
;
return
;
}
else
if
((
type
==
NSMouseEntered
&&
!
mouseIsOver
)
||
(
type
==
NSMouseExited
&&
mouseIsOver
))
{
}
else
if
((
type
==
NSMouseEntered
&&
!
mouseIsOver
)
||
(
type
==
NSMouseExited
&&
mouseIsOver
))
{
mouseIsOver
=
!
mouseIsOver
;
mouseIsOver
=
!
mouseIsOver
;
}
}
[
AWTToolkit
eventCountPlusPlus
];
[
AWTToolkit
eventCountPlusPlus
];
JNIEnv
*
env
=
[
ThreadUtilities
getJNIEnv
];
JNIEnv
*
env
=
[
ThreadUtilities
getJNIEnv
];
...
@@ -385,6 +393,14 @@ AWT_ASSERT_APPKIT_THREAD;
...
@@ -385,6 +393,14 @@ AWT_ASSERT_APPKIT_THREAD;
}
}
-
(
void
)
deliverJavaKeyEventHelper
:
(
NSEvent
*
)
event
{
-
(
void
)
deliverJavaKeyEventHelper
:
(
NSEvent
*
)
event
{
static
NSEvent
*
sLastKeyEvent
=
nil
;
if
(
event
==
sLastKeyEvent
)
{
// The event is repeatedly delivered by keyDown: after performKeyEquivalent:
return
;
}
[
sLastKeyEvent
release
];
sLastKeyEvent
=
[
event
retain
];
[
AWTToolkit
eventCountPlusPlus
];
[
AWTToolkit
eventCountPlusPlus
];
JNIEnv
*
env
=
[
ThreadUtilities
getJNIEnv
];
JNIEnv
*
env
=
[
ThreadUtilities
getJNIEnv
];
...
...
src/macosx/native/sun/awt/AWTWindow.h
浏览文件 @
f63cb0a6
...
@@ -35,28 +35,53 @@
...
@@ -35,28 +35,53 @@
@class
AWTView
;
@class
AWTView
;
@interface
AWTWindow
:
NS
Panel
<
NSWindowDelegate
>
{
@interface
AWTWindow
:
NS
Object
<
NSWindowDelegate
>
{
@private
@private
JNFWeakJObjectWrapper
*
javaPlatformWindow
;
JNFWeakJObjectWrapper
*
javaPlatformWindow
;
CMenuBar
*
javaMenuBar
;
CMenuBar
*
javaMenuBar
;
NSSize
javaMinSize
;
NSSize
javaMinSize
;
NSSize
javaMaxSize
;
NSSize
javaMaxSize
;
jint
styleBits
;
jint
styleBits
;
BOOL
isEnabled
;
}
}
// An instance of either AWTWindow_Normal or AWTWindow_Panel
@property
(
nonatomic
,
retain
)
NSWindow
*
nsWindow
;
@property
(
nonatomic
,
retain
)
JNFWeakJObjectWrapper
*
javaPlatformWindow
;
@property
(
nonatomic
,
retain
)
JNFWeakJObjectWrapper
*
javaPlatformWindow
;
@property
(
nonatomic
,
retain
)
CMenuBar
*
javaMenuBar
;
@property
(
nonatomic
,
retain
)
CMenuBar
*
javaMenuBar
;
@property
(
nonatomic
)
NSSize
javaMinSize
;
@property
(
nonatomic
)
NSSize
javaMinSize
;
@property
(
nonatomic
)
NSSize
javaMaxSize
;
@property
(
nonatomic
)
NSSize
javaMaxSize
;
@property
(
nonatomic
)
jint
styleBits
;
@property
(
nonatomic
)
jint
styleBits
;
@property
(
nonatomic
)
BOOL
isEnabled
;
-
(
id
)
initWithPlatformWindow
:(
JNFWeakJObjectWrapper
*
)
javaPlatformWindow
-
(
id
)
initWithPlatformWindow
:(
JNFWeakJObjectWrapper
*
)
javaPlatformWindow
styleBits
:(
jint
)
styleBits
styleBits
:(
jint
)
styleBits
frameRect
:(
NSRect
)
frameRect
frameRect
:(
NSRect
)
frameRect
contentView
:(
NSView
*
)
contentView
;
contentView
:(
NSView
*
)
contentView
;
-
(
void
)
adjustGrowBoxWindow
;
-
(
BOOL
)
isTopmostWindowUnderMouse
;
-
(
BOOL
)
isTopmostWindowUnderMouse
;
// NSWindow overrides delegate methods
-
(
BOOL
)
canBecomeKeyWindow
;
-
(
BOOL
)
canBecomeMainWindow
;
-
(
BOOL
)
worksWhenModal
;
-
(
void
)
sendEvent
:(
NSEvent
*
)
event
;
@end
@interface
AWTWindow_Normal
:
NSWindow
-
(
id
)
initWithDelegate
:(
AWTWindow
*
)
delegate
frameRect
:(
NSRect
)
rect
styleMask
:(
NSUInteger
)
styleMask
contentView
:(
NSView
*
)
view
;
@end
@interface
AWTWindow_Panel
:
NSPanel
-
(
id
)
initWithDelegate
:(
AWTWindow
*
)
delegate
frameRect
:(
NSRect
)
rect
styleMask
:(
NSUInteger
)
styleMask
contentView
:(
NSView
*
)
view
;
@end
@end
#endif _AWTWINDOW_H
#endif _AWTWINDOW_H
src/macosx/native/sun/awt/AWTWindow.m
浏览文件 @
f63cb0a6
...
@@ -51,22 +51,76 @@
...
@@ -51,22 +51,76 @@
static
JNF_CLASS_CACHE
(
jc_CPlatformWindow
,
"sun/lwawt/macosx/CPlatformWindow"
);
static
JNF_CLASS_CACHE
(
jc_CPlatformWindow
,
"sun/lwawt/macosx/CPlatformWindow"
);
// --------------------------------------------------------------
// NSWindow/NSPanel descendants implementation
#define AWT_NS_WINDOW_IMPLEMENTATION \
- (id) initWithDelegate:(AWTWindow *)delegate \
frameRect:(NSRect)contectRect \
styleMask:(NSUInteger)styleMask \
contentView:(NSView *)view \
{ \
self = [super initWithContentRect:contectRect \
styleMask:styleMask \
backing:NSBackingStoreBuffered \
defer:NO]; \
\
if (self == nil) return nil; \
\
[self setDelegate:delegate]; \
[self setContentView:view]; \
[self setInitialFirstResponder:view]; \
[self setReleasedWhenClosed:NO]; \
[self setPreservesContentDuringLiveResize:YES]; \
\
return self; \
} \
\
/* NSWindow overrides */
\
- (BOOL) canBecomeKeyWindow { \
return [(AWTWindow*)[self delegate] canBecomeKeyWindow]; \
} \
\
- (BOOL) canBecomeMainWindow { \
return [(AWTWindow*)[self delegate] canBecomeMainWindow]; \
} \
\
- (BOOL) worksWhenModal { \
return [(AWTWindow*)[self delegate] worksWhenModal]; \
} \
\
- (void)sendEvent:(NSEvent *)event { \
[(AWTWindow*)[self delegate] sendEvent:event]; \
[super sendEvent:event]; \
}
@implementation
AWTWindow_Normal
AWT_NS_WINDOW_IMPLEMENTATION
@end
@implementation
AWTWindow_Panel
AWT_NS_WINDOW_IMPLEMENTATION
@end
// END of NSWindow/NSPanel descendants implementation
// --------------------------------------------------------------
@implementation
AWTWindow
@implementation
AWTWindow
@synthesize
nsWindow
;
@synthesize
javaPlatformWindow
;
@synthesize
javaPlatformWindow
;
@synthesize
javaMenuBar
;
@synthesize
javaMenuBar
;
@synthesize
javaMinSize
;
@synthesize
javaMinSize
;
@synthesize
javaMaxSize
;
@synthesize
javaMaxSize
;
@synthesize
styleBits
;
@synthesize
styleBits
;
@synthesize
isEnabled
;
-
(
void
)
updateMinMaxSize
:(
BOOL
)
resizable
{
-
(
void
)
updateMinMaxSize
:(
BOOL
)
resizable
{
if
(
resizable
)
{
if
(
resizable
)
{
[
self
setMinSize
:
self
.
javaMinSize
];
[
self
.
nsWindow
setMinSize
:
self
.
javaMinSize
];
[
self
setMaxSize
:
self
.
javaMaxSize
];
[
self
.
nsWindow
setMaxSize
:
self
.
javaMaxSize
];
}
else
{
}
else
{
NSRect
currentFrame
=
[
self
frame
];
NSRect
currentFrame
=
[
self
.
nsWindow
frame
];
[
self
setMinSize
:
currentFrame
.
size
];
[
self
.
nsWindow
setMinSize
:
currentFrame
.
size
];
[
self
setMaxSize
:
currentFrame
.
size
];
[
self
.
nsWindow
setMaxSize
:
currentFrame
.
size
];
}
}
}
}
...
@@ -97,38 +151,38 @@ static JNF_CLASS_CACHE(jc_CPlatformWindow, "sun/lwawt/macosx/CPlatformWindow");
...
@@ -97,38 +151,38 @@ static JNF_CLASS_CACHE(jc_CPlatformWindow, "sun/lwawt/macosx/CPlatformWindow");
if
(
IS
(
mask
,
RESIZABLE
))
{
if
(
IS
(
mask
,
RESIZABLE
))
{
BOOL
resizable
=
IS
(
bits
,
RESIZABLE
);
BOOL
resizable
=
IS
(
bits
,
RESIZABLE
);
[
self
updateMinMaxSize
:
resizable
];
[
self
updateMinMaxSize
:
resizable
];
[
self
setShowsResizeIndicator
:
resizable
];
[
self
.
nsWindow
setShowsResizeIndicator
:
resizable
];
}
}
if
(
IS
(
mask
,
HAS_SHADOW
))
{
if
(
IS
(
mask
,
HAS_SHADOW
))
{
[
self
setHasShadow
:
IS
(
bits
,
HAS_SHADOW
)];
[
self
.
nsWindow
setHasShadow
:
IS
(
bits
,
HAS_SHADOW
)];
}
}
if
(
IS
(
mask
,
ZOOMABLE
))
{
if
(
IS
(
mask
,
ZOOMABLE
))
{
[[
self
standardWindowButton
:
NSWindowZoomButton
]
setEnabled
:
IS
(
bits
,
ZOOMABLE
)];
[[
self
.
nsWindow
standardWindowButton
:
NSWindowZoomButton
]
setEnabled
:
IS
(
bits
,
ZOOMABLE
)];
}
}
if
(
IS
(
mask
,
ALWAYS_ON_TOP
))
{
if
(
IS
(
mask
,
ALWAYS_ON_TOP
))
{
[
self
setLevel
:
IS
(
bits
,
ALWAYS_ON_TOP
)
?
NSFloatingWindowLevel
:
NSNormalWindowLevel
];
[
self
.
nsWindow
setLevel
:
IS
(
bits
,
ALWAYS_ON_TOP
)
?
NSFloatingWindowLevel
:
NSNormalWindowLevel
];
}
}
if
(
IS
(
mask
,
HIDES_ON_DEACTIVATE
))
{
if
(
IS
(
mask
,
HIDES_ON_DEACTIVATE
))
{
[
self
setHidesOnDeactivate
:
IS
(
bits
,
HIDES_ON_DEACTIVATE
)];
[
self
.
nsWindow
setHidesOnDeactivate
:
IS
(
bits
,
HIDES_ON_DEACTIVATE
)];
}
}
if
(
IS
(
mask
,
DRAGGABLE_BACKGROUND
))
{
if
(
IS
(
mask
,
DRAGGABLE_BACKGROUND
))
{
[
self
setMovableByWindowBackground
:
IS
(
bits
,
DRAGGABLE_BACKGROUND
)];
[
self
.
nsWindow
setMovableByWindowBackground
:
IS
(
bits
,
DRAGGABLE_BACKGROUND
)];
}
}
if
(
IS
(
mask
,
DOCUMENT_MODIFIED
))
{
if
(
IS
(
mask
,
DOCUMENT_MODIFIED
))
{
[
self
setDocumentEdited
:
IS
(
bits
,
DOCUMENT_MODIFIED
)];
[
self
.
nsWindow
setDocumentEdited
:
IS
(
bits
,
DOCUMENT_MODIFIED
)];
}
}
if
([
self
respondsToSelector
:
@selector
(
toggleFullScreen
:)])
{
if
([
self
.
nsWindow
respondsToSelector
:
@selector
(
toggleFullScreen
:)])
{
if
(
IS
(
mask
,
FULLSCREENABLE
))
{
if
(
IS
(
mask
,
FULLSCREENABLE
))
{
[
self
setCollectionBehavior
:(
1
<<
7
)
/*NSWindowCollectionBehaviorFullScreenPrimary*/
];
[
self
.
nsWindow
setCollectionBehavior
:(
1
<<
7
)
/*NSWindowCollectionBehaviorFullScreenPrimary*/
];
}
else
{
}
else
{
[
self
setCollectionBehavior
:
NSWindowCollectionBehaviorDefault
];
[
self
.
nsWindow
setCollectionBehavior
:
NSWindowCollectionBehaviorDefault
];
}
}
}
}
...
@@ -150,42 +204,55 @@ AWT_ASSERT_APPKIT_THREAD;
...
@@ -150,42 +204,55 @@ AWT_ASSERT_APPKIT_THREAD;
contentRect
.
size
.
height
=
1
.
0
;
contentRect
.
size
.
height
=
1
.
0
;
}
}
self
=
[
super
initWithContentRect
:
contentRect
self
=
[
super
init
];
styleMask:
styleMask
backing:
NSBackingStoreBuffered
defer:
NO
];
if
(
self
==
nil
)
return
nil
;
// no hope
if
(
self
==
nil
)
return
nil
;
// no hope
if
(
IS
(
bits
,
UTILITY
)
||
IS
(
bits
,
NONACTIVATING
)
||
IS
(
bits
,
HUD
)
||
IS
(
bits
,
HIDES_ON_DEACTIVATE
))
{
self
.
nsWindow
=
[[
AWTWindow_Panel
alloc
]
initWithDelegate
:
self
frameRect:
contentRect
styleMask:
styleMask
contentView:
view
];
}
else
{
// These windows will appear in the window list in the dock icon menu
self
.
nsWindow
=
[[
AWTWindow_Normal
alloc
]
initWithDelegate
:
self
frameRect:
contentRect
styleMask:
styleMask
contentView:
view
];
}
if
(
self
.
nsWindow
==
nil
)
return
nil
;
// no hope either
self
.
isEnabled
=
YES
;
self
.
javaPlatformWindow
=
platformWindow
;
self
.
javaPlatformWindow
=
platformWindow
;
self
.
styleBits
=
bits
;
self
.
styleBits
=
bits
;
[
self
setPropertiesForStyleBits
:
styleBits
mask
:
MASK
(
_METHOD_PROP_BITMASK
)];
[
self
setPropertiesForStyleBits
:
styleBits
mask
:
MASK
(
_METHOD_PROP_BITMASK
)];
[
self
setDelegate
:
self
];
[
self
setContentView
:
view
];
[
self
setInitialFirstResponder
:
view
];
[
self
setReleasedWhenClosed
:
NO
];
[
self
setPreservesContentDuringLiveResize
:
YES
];
return
self
;
return
self
;
}
}
// checks that this window is under the mouse cursor and this point is not overlapped by others windows
// checks that this window is under the mouse cursor and this point is not overlapped by others windows
-
(
BOOL
)
isTopmostWindowUnderMouse
{
-
(
BOOL
)
isTopmostWindowUnderMouse
{
int
currentWinID
=
[
self
windowNumber
];
int
currentWinID
=
[
self
.
nsWindow
windowNumber
];
NSRect
screenRect
=
[[
NSScreen
mainScreen
]
frame
];
NSRect
screenRect
=
[[
NSScreen
mainScreen
]
frame
];
NSPoint
nsMouseLocation
=
[
NSEvent
mouseLocation
];
NSPoint
nsMouseLocation
=
[
NSEvent
mouseLocation
];
CGPoint
cgMouseLocation
=
CGPointMake
(
nsMouseLocation
.
x
,
screenRect
.
size
.
height
-
nsMouseLocation
.
y
);
CGPoint
cgMouseLocation
=
CGPointMake
(
nsMouseLocation
.
x
,
screenRect
.
size
.
height
-
nsMouseLocation
.
y
);
NSMutableArray
*
windows
=
(
NSMutableArray
*
)
CGWindowListCopyWindowInfo
(
kCGWindowListOptionOnScreenOnly
|
kCGWindowListExcludeDesktopElements
,
kCGNullWindowID
);
NSMutableArray
*
windows
=
(
NSMutableArray
*
)
CGWindowListCopyWindowInfo
(
kCGWindowListOptionOnScreenOnly
|
kCGWindowListExcludeDesktopElements
,
kCGNullWindowID
);
for
(
NSDictionary
*
window
in
windows
)
{
for
(
NSDictionary
*
window
in
windows
)
{
int
layer
=
[[
window
objectForKey
:(
id
)
kCGWindowLayer
]
intValue
];
int
layer
=
[[
window
objectForKey
:(
id
)
kCGWindowLayer
]
intValue
];
if
(
layer
==
0
)
{
if
(
layer
==
0
)
{
int
winID
=
[[
window
objectForKey
:(
id
)
kCGWindowNumber
]
intValue
];
int
winID
=
[[
window
objectForKey
:(
id
)
kCGWindowNumber
]
intValue
];
CGRect
rect
;
CGRect
rect
;
CGRectMakeWithDictionaryRepresentation
((
CFDictionaryRef
)[
window
objectForKey
:(
id
)
kCGWindowBounds
],
&
rect
);
CGRectMakeWithDictionaryRepresentation
((
CFDictionaryRef
)[
window
objectForKey
:(
id
)
kCGWindowBounds
],
&
rect
);
if
(
CGRectContainsPoint
(
rect
,
cgMouseLocation
))
{
if
(
CGRectContainsPoint
(
rect
,
cgMouseLocation
))
{
...
@@ -199,35 +266,35 @@ AWT_ASSERT_APPKIT_THREAD;
...
@@ -199,35 +266,35 @@ AWT_ASSERT_APPKIT_THREAD;
}
}
-
(
void
)
synthesizeMouseEnteredExitedEvents
{
-
(
void
)
synthesizeMouseEnteredExitedEvents
{
int
eventType
=
0
;
int
eventType
=
0
;
BOOL
isUnderMouse
=
[
self
isTopmostWindowUnderMouse
];
BOOL
isUnderMouse
=
[
self
isTopmostWindowUnderMouse
];
BOOL
mouseIsOver
=
[[
self
contentView
]
mouseIsOver
];
BOOL
mouseIsOver
=
[[
self
.
nsWindow
contentView
]
mouseIsOver
];
if
(
isUnderMouse
&&
!
mouseIsOver
)
{
if
(
isUnderMouse
&&
!
mouseIsOver
)
{
eventType
=
NSMouseEntered
;
eventType
=
NSMouseEntered
;
}
else
if
(
!
isUnderMouse
&&
mouseIsOver
)
{
}
else
if
(
!
isUnderMouse
&&
mouseIsOver
)
{
eventType
=
NSMouseExited
;
eventType
=
NSMouseExited
;
}
else
{
}
else
{
return
;
return
;
}
}
NSPoint
screenLocation
=
[
NSEvent
mouseLocation
];
NSPoint
screenLocation
=
[
NSEvent
mouseLocation
];
NSPoint
windowLocation
=
[
self
convertScreenToBase
:
screenLocation
];
NSPoint
windowLocation
=
[
self
.
nsWindow
convertScreenToBase
:
screenLocation
];
int
modifierFlags
=
(
eventType
==
NSMouseEntered
)
?
NSMouseEnteredMask
:
NSMouseExitedMask
;
int
modifierFlags
=
(
eventType
==
NSMouseEntered
)
?
NSMouseEnteredMask
:
NSMouseExitedMask
;
NSEvent
*
mouseEvent
=
[
NSEvent
enterExitEventWithType
:
eventType
NSEvent
*
mouseEvent
=
[
NSEvent
enterExitEventWithType
:
eventType
location:
windowLocation
location:
windowLocation
modifierFlags:
modifierFlags
modifierFlags:
modifierFlags
timestamp:
0
timestamp:
0
windowNumber:
[
self
windowNumber
]
windowNumber:
[
self
.
nsWindow
windowNumber
]
context:
nil
context:
nil
eventNumber:
0
eventNumber:
0
trackingNumber:
0
trackingNumber:
0
userData:
nil
userData:
nil
];
];
[[
self
contentView
]
deliverJavaMouseEvent
:
mouseEvent
];
[[
self
.
nsWindow
contentView
]
deliverJavaMouseEvent
:
mouseEvent
];
}
}
-
(
void
)
dealloc
{
-
(
void
)
dealloc
{
...
@@ -236,19 +303,20 @@ AWT_ASSERT_APPKIT_THREAD;
...
@@ -236,19 +303,20 @@ AWT_ASSERT_APPKIT_THREAD;
JNIEnv
*
env
=
[
ThreadUtilities
getJNIEnv
];
JNIEnv
*
env
=
[
ThreadUtilities
getJNIEnv
];
[
self
.
javaPlatformWindow
setJObject
:
nil
withEnv
:
env
];
[
self
.
javaPlatformWindow
setJObject
:
nil
withEnv
:
env
];
self
.
nsWindow
=
nil
;
[
super
dealloc
];
[
super
dealloc
];
}
}
// NSWindow overrides
// NSWindow overrides
-
(
BOOL
)
canBecomeKeyWindow
{
-
(
BOOL
)
canBecomeKeyWindow
{
AWT_ASSERT_APPKIT_THREAD
;
AWT_ASSERT_APPKIT_THREAD
;
return
IS
(
self
.
styleBits
,
SHOULD_BECOME_KEY
);
return
self
.
isEnabled
&&
IS
(
self
.
styleBits
,
SHOULD_BECOME_KEY
);
}
}
-
(
BOOL
)
canBecomeMainWindow
{
-
(
BOOL
)
canBecomeMainWindow
{
AWT_ASSERT_APPKIT_THREAD
;
AWT_ASSERT_APPKIT_THREAD
;
return
IS
(
self
.
styleBits
,
SHOULD_BECOME_MAIN
);
return
self
.
isEnabled
&&
IS
(
self
.
styleBits
,
SHOULD_BECOME_MAIN
);
}
}
-
(
BOOL
)
worksWhenModal
{
-
(
BOOL
)
worksWhenModal
{
...
@@ -270,7 +338,7 @@ AWT_ASSERT_APPKIT_THREAD;
...
@@ -270,7 +338,7 @@ AWT_ASSERT_APPKIT_THREAD;
if
(
awtWindow
!=
NULL
)
{
if
(
awtWindow
!=
NULL
)
{
// translate the point into Java coordinates
// translate the point into Java coordinates
NSPoint
loc
=
[
event
locationInWindow
];
NSPoint
loc
=
[
event
locationInWindow
];
loc
.
y
=
[
self
frame
].
size
.
height
-
loc
.
y
;
loc
.
y
=
[
self
.
nsWindow
frame
].
size
.
height
-
loc
.
y
;
// send up to the GestureHandler to recursively dispatch on the AWT event thread
// send up to the GestureHandler to recursively dispatch on the AWT event thread
static
JNF_CLASS_CACHE
(
jc_GestureHandler
,
"com/apple/eawt/event/GestureHandler"
);
static
JNF_CLASS_CACHE
(
jc_GestureHandler
,
"com/apple/eawt/event/GestureHandler"
);
...
@@ -333,7 +401,7 @@ AWT_ASSERT_APPKIT_THREAD;
...
@@ -333,7 +401,7 @@ AWT_ASSERT_APPKIT_THREAD;
// TODO: create generic AWT assert
// TODO: create generic AWT assert
}
}
NSRect
frame
=
ConvertNSScreenRect
(
env
,
[
self
frame
]);
NSRect
frame
=
ConvertNSScreenRect
(
env
,
[
self
.
nsWindow
frame
]);
static
JNF_MEMBER_CACHE
(
jm_deliverMoveResizeEvent
,
jc_CPlatformWindow
,
"deliverMoveResizeEvent"
,
"(IIII)V"
);
static
JNF_MEMBER_CACHE
(
jm_deliverMoveResizeEvent
,
jc_CPlatformWindow
,
"deliverMoveResizeEvent"
,
"(IIII)V"
);
JNFCallVoidMethod
(
env
,
platformWindow
,
jm_deliverMoveResizeEvent
,
JNFCallVoidMethod
(
env
,
platformWindow
,
jm_deliverMoveResizeEvent
,
...
@@ -523,8 +591,8 @@ AWT_ASSERT_APPKIT_THREAD;
...
@@ -523,8 +591,8 @@ AWT_ASSERT_APPKIT_THREAD;
if
([
event
type
]
==
NSLeftMouseDown
||
[
event
type
]
==
NSRightMouseDown
||
[
event
type
]
==
NSOtherMouseDown
)
{
if
([
event
type
]
==
NSLeftMouseDown
||
[
event
type
]
==
NSRightMouseDown
||
[
event
type
]
==
NSOtherMouseDown
)
{
NSPoint
p
=
[
NSEvent
mouseLocation
];
NSPoint
p
=
[
NSEvent
mouseLocation
];
NSRect
frame
=
[
self
frame
];
NSRect
frame
=
[
self
.
nsWindow
frame
];
NSRect
contentRect
=
[
self
contentRectForFrameRect
:
frame
];
NSRect
contentRect
=
[
self
.
nsWindow
contentRectForFrameRect
:
frame
];
// Check if the click happened in the non-client area (title bar)
// Check if the click happened in the non-client area (title bar)
if
(
p
.
y
>=
(
frame
.
origin
.
y
+
contentRect
.
size
.
height
))
{
if
(
p
.
y
>=
(
frame
.
origin
.
y
+
contentRect
.
size
.
height
))
{
...
@@ -535,15 +603,14 @@ AWT_ASSERT_APPKIT_THREAD;
...
@@ -535,15 +603,14 @@ AWT_ASSERT_APPKIT_THREAD;
JNFCallVoidMethod
(
env
,
platformWindow
,
jm_deliverNCMouseDown
);
JNFCallVoidMethod
(
env
,
platformWindow
,
jm_deliverNCMouseDown
);
}
}
}
}
[
super
sendEvent
:
event
];
}
}
-
(
void
)
constrainSize
:(
NSSize
*
)
size
{
-
(
void
)
constrainSize
:(
NSSize
*
)
size
{
float
minWidth
=
0
.
f
,
minHeight
=
0
.
f
;
float
minWidth
=
0
.
f
,
minHeight
=
0
.
f
;
if
(
IS
(
self
.
styleBits
,
DECORATED
))
{
if
(
IS
(
self
.
styleBits
,
DECORATED
))
{
NSRect
frame
=
[
self
frame
];
NSRect
frame
=
[
self
.
nsWindow
frame
];
NSRect
contentRect
=
[
NSWindow
contentRectForFrameRect
:
frame
styleMask
:[
self
styleMask
]];
NSRect
contentRect
=
[
NSWindow
contentRectForFrameRect
:
frame
styleMask
:[
self
.
nsWindow
styleMask
]];
float
top
=
frame
.
size
.
height
-
contentRect
.
size
.
height
;
float
top
=
frame
.
size
.
height
-
contentRect
.
size
.
height
;
float
left
=
contentRect
.
origin
.
x
-
frame
.
origin
.
x
;
float
left
=
contentRect
.
origin
.
x
-
frame
.
origin
.
x
;
...
@@ -562,6 +629,27 @@ AWT_ASSERT_APPKIT_THREAD;
...
@@ -562,6 +629,27 @@ AWT_ASSERT_APPKIT_THREAD;
size
->
height
=
MAX
(
size
->
height
,
minHeight
);
size
->
height
=
MAX
(
size
->
height
,
minHeight
);
}
}
-
(
void
)
setEnabled
:
(
BOOL
)
flag
{
self
.
isEnabled
=
flag
;
if
(
IS
(
self
.
styleBits
,
CLOSEABLE
))
{
[[
self
.
nsWindow
standardWindowButton
:
NSWindowCloseButton
]
setEnabled
:
flag
];
}
if
(
IS
(
self
.
styleBits
,
MINIMIZABLE
))
{
[[
self
.
nsWindow
standardWindowButton
:
NSWindowMiniaturizeButton
]
setEnabled
:
flag
];
}
if
(
IS
(
self
.
styleBits
,
ZOOMABLE
))
{
[[
self
.
nsWindow
standardWindowButton
:
NSWindowZoomButton
]
setEnabled
:
flag
];
}
if
(
IS
(
self
.
styleBits
,
RESIZABLE
))
{
[
self
updateMinMaxSize
:
flag
];
[
self
.
nsWindow
setShowsResizeIndicator
:
flag
];
}
}
@end
// AWTWindow
@end
// AWTWindow
...
@@ -596,7 +684,7 @@ AWT_ASSERT_NOT_APPKIT_THREAD;
...
@@ -596,7 +684,7 @@ AWT_ASSERT_NOT_APPKIT_THREAD;
JNF_COCOA_EXIT
(
env
);
JNF_COCOA_EXIT
(
env
);
return
ptr_to_jlong
(
window
);
return
ptr_to_jlong
(
window
?
window
.
nsWindow
:
nil
);
}
}
/*
/*
...
@@ -610,17 +698,19 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowSt
...
@@ -610,17 +698,19 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowSt
JNF_COCOA_ENTER
(
env
);
JNF_COCOA_ENTER
(
env
);
AWT_ASSERT_NOT_APPKIT_THREAD
;
AWT_ASSERT_NOT_APPKIT_THREAD
;
AWTWindow
*
w
indow
=
OBJC
(
windowPtr
);
NSWindow
*
nsW
indow
=
OBJC
(
windowPtr
);
[
JNFRunLoop
performOnMainThreadWaiting
:
NO
withBlock
:
^
(){
[
JNFRunLoop
performOnMainThreadWaiting
:
NO
withBlock
:
^
(){
AWT_ASSERT_APPKIT_THREAD
;
AWT_ASSERT_APPKIT_THREAD
;
AWTWindow
*
window
=
(
AWTWindow
*
)[
nsWindow
delegate
];
// scans the bit field, and only updates the values requested by the mask
// scans the bit field, and only updates the values requested by the mask
// (this implicity handles the _CALLBACK_PROP_BITMASK case, since those are passive reads)
// (this implicity handles the _CALLBACK_PROP_BITMASK case, since those are passive reads)
jint
newBits
=
window
.
styleBits
&
~
mask
|
bits
&
mask
;
jint
newBits
=
window
.
styleBits
&
~
mask
|
bits
&
mask
;
// resets the NSWindow's style mask if the mask intersects any of those bits
// resets the NSWindow's style mask if the mask intersects any of those bits
if
(
mask
&
MASK
(
_STYLE_PROP_BITMASK
))
{
if
(
mask
&
MASK
(
_STYLE_PROP_BITMASK
))
{
[
w
indow
setStyleMask
:[
AWTWindow
styleMaskForStyleBits
:
newBits
]];
[
nsW
indow
setStyleMask
:[
AWTWindow
styleMaskForStyleBits
:
newBits
]];
}
}
// calls methods on NSWindow to change other properties, based on the mask
// calls methods on NSWindow to change other properties, based on the mask
...
@@ -645,12 +735,14 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowMe
...
@@ -645,12 +735,14 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowMe
JNF_COCOA_ENTER
(
env
);
JNF_COCOA_ENTER
(
env
);
AWT_ASSERT_NOT_APPKIT_THREAD
;
AWT_ASSERT_NOT_APPKIT_THREAD
;
AWTWindow
*
w
indow
=
OBJC
(
windowPtr
);
NSWindow
*
nsW
indow
=
OBJC
(
windowPtr
);
CMenuBar
*
menuBar
=
OBJC
(
menuBarPtr
);
CMenuBar
*
menuBar
=
OBJC
(
menuBarPtr
);
[
JNFRunLoop
performOnMainThreadWaiting
:
NO
withBlock
:
^
(){
[
JNFRunLoop
performOnMainThreadWaiting
:
NO
withBlock
:
^
(){
AWT_ASSERT_APPKIT_THREAD
;
AWT_ASSERT_APPKIT_THREAD
;
if
([
window
isKeyWindow
])
[
window
.
javaMenuBar
deactivate
];
AWTWindow
*
window
=
(
AWTWindow
*
)[
nsWindow
delegate
];
if
([
nsWindow
isKeyWindow
])
[
window
.
javaMenuBar
deactivate
];
window
.
javaMenuBar
=
menuBar
;
window
.
javaMenuBar
=
menuBar
;
// if ([self isKeyWindow]) {
// if ([self isKeyWindow]) {
...
@@ -674,15 +766,15 @@ JNIEXPORT jobject JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeGetNSWindo
...
@@ -674,15 +766,15 @@ JNIEXPORT jobject JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeGetNSWindo
JNF_COCOA_ENTER
(
env
);
JNF_COCOA_ENTER
(
env
);
AWT_ASSERT_NOT_APPKIT_THREAD
;
AWT_ASSERT_NOT_APPKIT_THREAD
;
AWTWindow
*
w
indow
=
OBJC
(
windowPtr
);
NSWindow
*
nsW
indow
=
OBJC
(
windowPtr
);
__block
NSRect
contentRect
=
NSZeroRect
;
__block
NSRect
contentRect
=
NSZeroRect
;
__block
NSRect
frame
=
NSZeroRect
;
__block
NSRect
frame
=
NSZeroRect
;
[
JNFRunLoop
performOnMainThreadWaiting
:
YES
withBlock
:
^
(){
[
JNFRunLoop
performOnMainThreadWaiting
:
YES
withBlock
:
^
(){
AWT_ASSERT_APPKIT_THREAD
;
AWT_ASSERT_APPKIT_THREAD
;
frame
=
[
w
indow
frame
];
frame
=
[
nsW
indow
frame
];
contentRect
=
[
NSWindow
contentRectForFrameRect
:
frame
styleMask
:[
w
indow
styleMask
]];
contentRect
=
[
NSWindow
contentRectForFrameRect
:
frame
styleMask
:[
nsW
indow
styleMask
]];
}];
}];
jint
top
=
(
jint
)(
frame
.
size
.
height
-
contentRect
.
size
.
height
);
jint
top
=
(
jint
)(
frame
.
size
.
height
-
contentRect
.
size
.
height
);
...
@@ -712,24 +804,26 @@ AWT_ASSERT_NOT_APPKIT_THREAD;
...
@@ -712,24 +804,26 @@ AWT_ASSERT_NOT_APPKIT_THREAD;
NSRect
jrect
=
NSMakeRect
(
originX
,
originY
,
width
,
height
);
NSRect
jrect
=
NSMakeRect
(
originX
,
originY
,
width
,
height
);
// TODO: not sure we need displayIfNeeded message in our view
// TODO: not sure we need displayIfNeeded message in our view
AWTWindow
*
w
indow
=
OBJC
(
windowPtr
);
NSWindow
*
nsW
indow
=
OBJC
(
windowPtr
);
[
JNFRunLoop
performOnMainThreadWaiting
:
NO
withBlock
:
^
(){
[
JNFRunLoop
performOnMainThreadWaiting
:
NO
withBlock
:
^
(){
AWT_ASSERT_APPKIT_THREAD
;
AWT_ASSERT_APPKIT_THREAD
;
AWTWindow
*
window
=
(
AWTWindow
*
)[
nsWindow
delegate
];
NSRect
rect
=
ConvertNSScreenRect
(
NULL
,
jrect
);
NSRect
rect
=
ConvertNSScreenRect
(
NULL
,
jrect
);
[
window
constrainSize
:
&
rect
.
size
];
[
window
constrainSize
:
&
rect
.
size
];
[
w
indow
setFrame
:
rect
display
:
YES
];
[
nsW
indow
setFrame
:
rect
display
:
YES
];
// only start tracking events if pointer is above the toplevel
// only start tracking events if pointer is above the toplevel
// TODO: should post an Entered event if YES.
// TODO: should post an Entered event if YES.
NSPoint
mLocation
=
[
NSEvent
mouseLocation
];
NSPoint
mLocation
=
[
NSEvent
mouseLocation
];
[
w
indow
setAcceptsMouseMovedEvents
:
NSPointInRect
(
mLocation
,
rect
)];
[
nsW
indow
setAcceptsMouseMovedEvents
:
NSPointInRect
(
mLocation
,
rect
)];
// 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
];
[
window
synthesizeMouseEnteredExitedEvents
];
}];
}];
...
@@ -752,10 +846,12 @@ AWT_ASSERT_NOT_APPKIT_THREAD;
...
@@ -752,10 +846,12 @@ AWT_ASSERT_NOT_APPKIT_THREAD;
if
(
maxW
<
1
)
maxW
=
1
;
if
(
maxW
<
1
)
maxW
=
1
;
if
(
maxH
<
1
)
maxH
=
1
;
if
(
maxH
<
1
)
maxH
=
1
;
AWTWindow
*
w
indow
=
OBJC
(
windowPtr
);
NSWindow
*
nsW
indow
=
OBJC
(
windowPtr
);
[
JNFRunLoop
performOnMainThreadWaiting
:
NO
withBlock
:
^
(){
[
JNFRunLoop
performOnMainThreadWaiting
:
NO
withBlock
:
^
(){
AWT_ASSERT_APPKIT_THREAD
;
AWT_ASSERT_APPKIT_THREAD
;
AWTWindow
*
window
=
(
AWTWindow
*
)[
nsWindow
delegate
];
NSSize
min
=
{
minW
,
minH
};
NSSize
min
=
{
minW
,
minH
};
NSSize
max
=
{
maxW
,
maxH
};
NSSize
max
=
{
maxW
,
maxH
};
...
@@ -781,11 +877,11 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativePushNSWindowT
...
@@ -781,11 +877,11 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativePushNSWindowT
JNF_COCOA_ENTER
(
env
);
JNF_COCOA_ENTER
(
env
);
AWT_ASSERT_NOT_APPKIT_THREAD
;
AWT_ASSERT_NOT_APPKIT_THREAD
;
AWTWindow
*
w
indow
=
OBJC
(
windowPtr
);
NSWindow
*
nsW
indow
=
OBJC
(
windowPtr
);
[
JNFRunLoop
performOnMainThreadWaiting
:
NO
withBlock
:
^
(){
[
JNFRunLoop
performOnMainThreadWaiting
:
NO
withBlock
:
^
(){
AWT_ASSERT_APPKIT_THREAD
;
AWT_ASSERT_APPKIT_THREAD
;
[
w
indow
orderBack
:
nil
];
[
nsW
indow
orderBack
:
nil
];
}];
}];
JNF_COCOA_EXIT
(
env
);
JNF_COCOA_EXIT
(
env
);
...
@@ -802,14 +898,14 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativePushNSWindowT
...
@@ -802,14 +898,14 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativePushNSWindowT
JNF_COCOA_ENTER
(
env
);
JNF_COCOA_ENTER
(
env
);
AWT_ASSERT_NOT_APPKIT_THREAD
;
AWT_ASSERT_NOT_APPKIT_THREAD
;
AWTWindow
*
w
indow
=
OBJC
(
windowPtr
);
NSWindow
*
nsW
indow
=
OBJC
(
windowPtr
);
[
JNFRunLoop
performOnMainThreadWaiting
:
NO
withBlock
:
^
(){
[
JNFRunLoop
performOnMainThreadWaiting
:
NO
withBlock
:
^
(){
AWT_ASSERT_APPKIT_THREAD
;
AWT_ASSERT_APPKIT_THREAD
;
if
(
!
[
w
indow
isKeyWindow
])
{
if
(
!
[
nsW
indow
isKeyWindow
])
{
[
window
makeKeyAndOrderFront
:
w
indow
];
[
nsWindow
makeKeyAndOrderFront
:
nsW
indow
];
}
else
{
}
else
{
[
window
orderFront
:
w
indow
];
[
nsWindow
orderFront
:
nsW
indow
];
}
}
}];
}];
...
@@ -827,8 +923,8 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowTi
...
@@ -827,8 +923,8 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowTi
JNF_COCOA_ENTER
(
env
);
JNF_COCOA_ENTER
(
env
);
AWT_ASSERT_NOT_APPKIT_THREAD
;
AWT_ASSERT_NOT_APPKIT_THREAD
;
AWTWindow
*
w
indow
=
OBJC
(
windowPtr
);
NSWindow
*
nsW
indow
=
OBJC
(
windowPtr
);
[
w
indow
performSelectorOnMainThread
:
@selector
(
setTitle
:)
[
nsW
indow
performSelectorOnMainThread
:
@selector
(
setTitle
:)
withObject:
JNFJavaToNSString
(
env
,
jtitle
)
withObject:
JNFJavaToNSString
(
env
,
jtitle
)
waitUntilDone:
NO
];
waitUntilDone:
NO
];
...
@@ -846,11 +942,11 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowAl
...
@@ -846,11 +942,11 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowAl
JNF_COCOA_ENTER
(
env
);
JNF_COCOA_ENTER
(
env
);
AWT_ASSERT_NOT_APPKIT_THREAD
;
AWT_ASSERT_NOT_APPKIT_THREAD
;
AWTWindow
*
w
indow
=
OBJC
(
windowPtr
);
NSWindow
*
nsW
indow
=
OBJC
(
windowPtr
);
[
JNFRunLoop
performOnMainThreadWaiting
:
NO
withBlock
:
^
(){
[
JNFRunLoop
performOnMainThreadWaiting
:
NO
withBlock
:
^
(){
AWT_ASSERT_APPKIT_THREAD
;
AWT_ASSERT_APPKIT_THREAD
;
[
w
indow
setAlphaValue
:
alpha
];
[
nsW
indow
setAlphaValue
:
alpha
];
}];
}];
JNF_COCOA_EXIT
(
env
);
JNF_COCOA_EXIT
(
env
);
...
@@ -867,11 +963,11 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeRevalidateNSW
...
@@ -867,11 +963,11 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeRevalidateNSW
JNF_COCOA_ENTER
(
env
);
JNF_COCOA_ENTER
(
env
);
AWT_ASSERT_NOT_APPKIT_THREAD
;
AWT_ASSERT_NOT_APPKIT_THREAD
;
AWTWindow
*
w
indow
=
OBJC
(
windowPtr
);
NSWindow
*
nsW
indow
=
OBJC
(
windowPtr
);
[
JNFRunLoop
performOnMainThreadWaiting
:
NO
withBlock
:
^
(){
[
JNFRunLoop
performOnMainThreadWaiting
:
NO
withBlock
:
^
(){
AWT_ASSERT_APPKIT_THREAD
;
AWT_ASSERT_APPKIT_THREAD
;
[
w
indow
invalidateShadow
];
[
nsW
indow
invalidateShadow
];
}];
}];
JNF_COCOA_EXIT
(
env
);
JNF_COCOA_EXIT
(
env
);
...
@@ -890,8 +986,8 @@ JNIEXPORT jint JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeScreenOn_1App
...
@@ -890,8 +986,8 @@ JNIEXPORT jint JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeScreenOn_1App
JNF_COCOA_ENTER
(
env
);
JNF_COCOA_ENTER
(
env
);
AWT_ASSERT_APPKIT_THREAD
;
AWT_ASSERT_APPKIT_THREAD
;
AWTWindow
*
w
indow
=
OBJC
(
windowPtr
);
NSWindow
*
nsW
indow
=
OBJC
(
windowPtr
);
NSDictionary
*
props
=
[[
w
indow
screen
]
deviceDescription
];
NSDictionary
*
props
=
[[
nsW
indow
screen
]
deviceDescription
];
ret
=
[[
props
objectForKey
:
@"NSScreenNumber"
]
intValue
];
ret
=
[[
props
objectForKey
:
@"NSScreenNumber"
]
intValue
];
JNF_COCOA_EXIT
(
env
);
JNF_COCOA_EXIT
(
env
);
...
@@ -910,12 +1006,12 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowMi
...
@@ -910,12 +1006,12 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowMi
JNF_COCOA_ENTER
(
env
);
JNF_COCOA_ENTER
(
env
);
AWT_ASSERT_NOT_APPKIT_THREAD
;
AWT_ASSERT_NOT_APPKIT_THREAD
;
AWTWindow
*
w
indow
=
OBJC
(
windowPtr
);
NSWindow
*
nsW
indow
=
OBJC
(
windowPtr
);
NSImage
*
image
=
OBJC
(
nsImagePtr
);
NSImage
*
image
=
OBJC
(
nsImagePtr
);
[
JNFRunLoop
performOnMainThreadWaiting
:
NO
withBlock
:
^
(){
[
JNFRunLoop
performOnMainThreadWaiting
:
NO
withBlock
:
^
(){
AWT_ASSERT_APPKIT_THREAD
;
AWT_ASSERT_APPKIT_THREAD
;
[
w
indow
setMiniwindowImage
:
image
];
[
nsW
indow
setMiniwindowImage
:
image
];
}];
}];
JNF_COCOA_EXIT
(
env
);
JNF_COCOA_EXIT
(
env
);
...
@@ -932,12 +1028,12 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowRe
...
@@ -932,12 +1028,12 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowRe
JNF_COCOA_ENTER
(
env
);
JNF_COCOA_ENTER
(
env
);
AWT_ASSERT_NOT_APPKIT_THREAD
;
AWT_ASSERT_NOT_APPKIT_THREAD
;
AWTWindow
*
w
indow
=
OBJC
(
windowPtr
);
NSWindow
*
nsW
indow
=
OBJC
(
windowPtr
);
NSURL
*
url
=
(
filename
==
NULL
)
?
nil
:
[
NSURL
fileURLWithPath
:
JNFNormalizedNSStringForPath
(
env
,
filename
)];
NSURL
*
url
=
(
filename
==
NULL
)
?
nil
:
[
NSURL
fileURLWithPath
:
JNFNormalizedNSStringForPath
(
env
,
filename
)];
[
JNFRunLoop
performOnMainThreadWaiting
:
NO
withBlock
:
^
(){
[
JNFRunLoop
performOnMainThreadWaiting
:
NO
withBlock
:
^
(){
AWT_ASSERT_APPKIT_THREAD
;
AWT_ASSERT_APPKIT_THREAD
;
[
w
indow
setRepresentedURL
:
url
];
[
nsW
indow
setRepresentedURL
:
url
];
}];
}];
JNF_COCOA_EXIT
(
env
);
JNF_COCOA_EXIT
(
env
);
...
@@ -969,14 +1065,16 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSynthesizeMou
...
@@ -969,14 +1065,16 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSynthesizeMou
{
{
JNF_COCOA_ENTER
(
env
);
JNF_COCOA_ENTER
(
env
);
AWT_ASSERT_NOT_APPKIT_THREAD
;
AWT_ASSERT_NOT_APPKIT_THREAD
;
AWTWindow
*
w
indow
=
OBJC
(
windowPtr
);
NSWindow
*
nsW
indow
=
OBJC
(
windowPtr
);
[
JNFRunLoop
performOnMainThreadWaiting
:
NO
withBlock
:
^
(){
[
JNFRunLoop
performOnMainThreadWaiting
:
NO
withBlock
:
^
(){
AWT_ASSERT_APPKIT_THREAD
;
AWT_ASSERT_APPKIT_THREAD
;
AWTWindow
*
window
=
(
AWTWindow
*
)[
nsWindow
delegate
];
[
window
synthesizeMouseEnteredExitedEvents
];
[
window
synthesizeMouseEnteredExitedEvents
];
}];
}];
JNF_COCOA_EXIT
(
env
);
JNF_COCOA_EXIT
(
env
);
}
}
...
@@ -993,8 +1091,8 @@ JNIEXPORT jint JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeGetScreenNSWi
...
@@ -993,8 +1091,8 @@ JNIEXPORT jint JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeGetScreenNSWi
JNF_COCOA_ENTER
(
env
);
JNF_COCOA_ENTER
(
env
);
AWT_ASSERT_APPKIT_THREAD
;
AWT_ASSERT_APPKIT_THREAD
;
AWTWindow
*
w
indow
=
OBJC
(
windowPtr
);
NSWindow
*
nsW
indow
=
OBJC
(
windowPtr
);
NSScreen
*
screen
=
[
w
indow
screen
];
NSScreen
*
screen
=
[
nsW
indow
screen
];
//+++gdb NOTE: This is using a linear search of the screens. If it should
//+++gdb NOTE: This is using a linear search of the screens. If it should
// prove to be a bottleneck, this can definitely be improved. However,
// prove to be a bottleneck, this can definitely be improved. However,
...
@@ -1025,12 +1123,12 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow__1toggleFullScreenM
...
@@ -1025,12 +1123,12 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow__1toggleFullScreenM
{
{
JNF_COCOA_ENTER
(
env
);
JNF_COCOA_ENTER
(
env
);
AWTWindow
*
w
indow
=
OBJC
(
windowPtr
);
NSWindow
*
nsW
indow
=
OBJC
(
windowPtr
);
SEL
toggleFullScreenSelector
=
@selector
(
toggleFullScreen
:
);
SEL
toggleFullScreenSelector
=
@selector
(
toggleFullScreen
:
);
if
(
!
[
w
indow
respondsToSelector
:
toggleFullScreenSelector
])
return
;
if
(
!
[
nsW
indow
respondsToSelector
:
toggleFullScreenSelector
])
return
;
[
JNFRunLoop
performOnMainThreadWaiting
:
NO
withBlock
:
^
(){
[
JNFRunLoop
performOnMainThreadWaiting
:
NO
withBlock
:
^
(){
[
w
indow
performSelector
:
toggleFullScreenSelector
withObject
:
nil
];
[
nsW
indow
performSelector
:
toggleFullScreenSelector
withObject
:
nil
];
}];
}];
JNF_COCOA_EXIT
(
env
);
JNF_COCOA_EXIT
(
env
);
...
@@ -1044,15 +1142,31 @@ JNIEXPORT jboolean JNICALL Java_sun_lwawt_macosx_CMouseInfoPeer_nativeIsWindowUn
...
@@ -1044,15 +1142,31 @@ JNIEXPORT jboolean JNICALL Java_sun_lwawt_macosx_CMouseInfoPeer_nativeIsWindowUn
JNF_COCOA_ENTER
(
env
);
JNF_COCOA_ENTER
(
env
);
AWT_ASSERT_NOT_APPKIT_THREAD
;
AWT_ASSERT_NOT_APPKIT_THREAD
;
AWTWindow
*
a
Window
=
OBJC
(
windowPtr
);
NSWindow
*
ns
Window
=
OBJC
(
windowPtr
);
[
JNFRunLoop
performOnMainThreadWaiting
:
YES
withBlock
:
^
()
{
[
JNFRunLoop
performOnMainThreadWaiting
:
YES
withBlock
:
^
()
{
AWT_ASSERT_APPKIT_THREAD
;
AWT_ASSERT_APPKIT_THREAD
;
NSPoint
pt
=
[
a
Window
mouseLocationOutsideOfEventStream
];
NSPoint
pt
=
[
ns
Window
mouseLocationOutsideOfEventStream
];
underMouse
=
[[
a
Window
contentView
]
hitTest
:
pt
]
!=
nil
;
underMouse
=
[[
ns
Window
contentView
]
hitTest
:
pt
]
!=
nil
;
}];
}];
JNF_COCOA_EXIT
(
env
);
JNF_COCOA_EXIT
(
env
);
return
underMouse
;
return
underMouse
;
}
}
JNIEXPORT
void
JNICALL
Java_sun_lwawt_macosx_CPlatformWindow_nativeSetEnabled
(
JNIEnv
*
env
,
jclass
clazz
,
jlong
windowPtr
,
jboolean
isEnabled
)
{
JNF_COCOA_ENTER
(
env
);
NSWindow
*
nsWindow
=
OBJC
(
windowPtr
);
[
JNFRunLoop
performOnMainThreadWaiting
:
NO
withBlock
:
^
(){
AWTWindow
*
window
=
(
AWTWindow
*
)[
nsWindow
delegate
];
[
window
setEnabled
:
isEnabled
];
}];
JNF_COCOA_EXIT
(
env
);
}
src/macosx/native/sun/awt/CFileDialog.h
浏览文件 @
f63cb0a6
...
@@ -46,11 +46,14 @@
...
@@ -46,11 +46,14 @@
// File dialog's mode
// File dialog's mode
jint
fMode
;
jint
fMode
;
// Indicates whether the user can select multiple files
BOOL
fMultipleMode
;
// Should we navigate into apps?
// Should we navigate into apps?
BOOL
fNavigateApps
;
BOOL
fNavigateApps
;
//
panel's filename
//
Contains the absolute paths of the selected files as URLs
NS
String
*
fReturnedFilename
;
NS
Array
*
fURLs
;
}
}
// Allocator
// Allocator
...
@@ -60,6 +63,7 @@
...
@@ -60,6 +63,7 @@
directory
:(
NSString
*
)
inPath
directory
:(
NSString
*
)
inPath
file
:(
NSString
*
)
inFile
file
:(
NSString
*
)
inFile
mode
:(
jint
)
inMode
mode
:(
jint
)
inMode
multipleMode
:(
BOOL
)
inMultipleMode
shouldNavigate
:(
BOOL
)
inNavigateApps
shouldNavigate
:(
BOOL
)
inNavigateApps
withEnv
:(
JNIEnv
*
)
env
;
withEnv
:(
JNIEnv
*
)
env
;
...
@@ -69,7 +73,7 @@
...
@@ -69,7 +73,7 @@
// Get dialog return value
// Get dialog return value
-
(
BOOL
)
userClickedOK
;
-
(
BOOL
)
userClickedOK
;
//
Filename user chose
//
Returns the absolute paths of the selected files as URLs
-
(
NS
String
*
)
filename
;
-
(
NS
Array
*
)
URLs
;
@end
@end
src/macosx/native/sun/awt/CFileDialog.m
浏览文件 @
f63cb0a6
...
@@ -41,6 +41,7 @@
...
@@ -41,6 +41,7 @@
directory
:(
NSString
*
)
inPath
directory
:(
NSString
*
)
inPath
file
:(
NSString
*
)
inFile
file
:(
NSString
*
)
inFile
mode
:(
jint
)
inMode
mode
:(
jint
)
inMode
multipleMode
:(
BOOL
)
inMultipleMode
shouldNavigate
:(
BOOL
)
inNavigateApps
shouldNavigate
:(
BOOL
)
inNavigateApps
withEnv
:(
JNIEnv
*
)
env
;
withEnv
:(
JNIEnv
*
)
env
;
{
{
...
@@ -54,6 +55,7 @@
...
@@ -54,6 +55,7 @@
fTitle
=
inTitle
;
fTitle
=
inTitle
;
[
fTitle
retain
];
[
fTitle
retain
];
fMode
=
inMode
;
fMode
=
inMode
;
fMultipleMode
=
inMultipleMode
;
fNavigateApps
=
inNavigateApps
;
fNavigateApps
=
inNavigateApps
;
fPanelResult
=
NSCancelButton
;
fPanelResult
=
NSCancelButton
;
}
}
...
@@ -79,8 +81,8 @@
...
@@ -79,8 +81,8 @@
[
fTitle
release
];
[
fTitle
release
];
fTitle
=
nil
;
fTitle
=
nil
;
[
f
ReturnedFilename
release
];
[
f
URLs
release
];
f
ReturnedFilename
=
nil
;
f
URLs
=
nil
;
[
super
dealloc
];
[
super
dealloc
];
}
}
...
@@ -105,7 +107,7 @@
...
@@ -105,7 +107,7 @@
if
(
fMode
==
java_awt_FileDialog_LOAD
)
{
if
(
fMode
==
java_awt_FileDialog_LOAD
)
{
NSOpenPanel
*
openPanel
=
(
NSOpenPanel
*
)
thePanel
;
NSOpenPanel
*
openPanel
=
(
NSOpenPanel
*
)
thePanel
;
[
openPanel
setAllowsMultipleSelection
:
NO
];
[
openPanel
setAllowsMultipleSelection
:
fMultipleMode
];
[
openPanel
setCanChooseFiles
:
YES
];
[
openPanel
setCanChooseFiles
:
YES
];
[
openPanel
setCanChooseDirectories
:
NO
];
[
openPanel
setCanChooseDirectories
:
NO
];
[
openPanel
setCanCreateDirectories
:
YES
];
[
openPanel
setCanCreateDirectories
:
YES
];
...
@@ -114,8 +116,16 @@
...
@@ -114,8 +116,16 @@
[
thePanel
setDelegate
:
self
];
[
thePanel
setDelegate
:
self
];
fPanelResult
=
[
thePanel
runModalForDirectory
:
fDirectory
file
:
fFile
];
fPanelResult
=
[
thePanel
runModalForDirectory
:
fDirectory
file
:
fFile
];
[
thePanel
setDelegate
:
nil
];
[
thePanel
setDelegate
:
nil
];
fReturnedFilename
=
[
thePanel
filename
];
[
fReturnedFilename
retain
];
if
([
self
userClickedOK
])
{
if
(
fMode
==
java_awt_FileDialog_LOAD
)
{
NSOpenPanel
*
openPanel
=
(
NSOpenPanel
*
)
thePanel
;
fURLs
=
[
openPanel
URLs
];
}
else
{
fURLs
=
[
NSArray
arrayWithObject
:[
thePanel
URL
]];
}
[
fURLs
retain
];
}
}
}
[
self
disposer
];
[
self
disposer
];
...
@@ -158,8 +168,8 @@
...
@@ -158,8 +168,8 @@
return
fPanelResult
==
NSOKButton
;
return
fPanelResult
==
NSOKButton
;
}
}
-
(
NS
String
*
)
filename
{
-
(
NS
Array
*
)
URLs
{
return
[[
f
ReturnedFilename
retain
]
autorelease
];
return
[[
f
URLs
retain
]
autorelease
];
}
}
@end
@end
...
@@ -167,13 +177,14 @@
...
@@ -167,13 +177,14 @@
* Class: sun_lwawt_macosx_CFileDialog
* Class: sun_lwawt_macosx_CFileDialog
* Method: nativeRunFileDialog
* Method: nativeRunFileDialog
* Signature: (Ljava/lang/String;ILjava/io/FilenameFilter;
* Signature: (Ljava/lang/String;ILjava/io/FilenameFilter;
* Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
* Ljava/lang/String;Ljava/lang/String;)
[
Ljava/lang/String;
*/
*/
JNIEXPORT
j
string
JNICALL
JNIEXPORT
j
objectArray
JNICALL
Java_sun_lwawt_macosx_CFileDialog_nativeRunFileDialog
Java_sun_lwawt_macosx_CFileDialog_nativeRunFileDialog
(
JNIEnv
*
env
,
jobject
peer
,
jstring
title
,
jint
mode
,
jboolean
navigateApps
,
jboolean
hasFilter
,
jstring
directory
,
jstring
file
)
(
JNIEnv
*
env
,
jobject
peer
,
jstring
title
,
jint
mode
,
jboolean
multipleMode
,
jboolean
navigateApps
,
jboolean
hasFilter
,
jstring
directory
,
jstring
file
)
{
{
j
string
returnValue
=
NULL
;
j
objectArray
returnValue
=
NULL
;
JNF_COCOA_ENTER
(
env
);
JNF_COCOA_ENTER
(
env
);
NSString
*
dialogTitle
=
JNFJavaToNSString
(
env
,
title
);
NSString
*
dialogTitle
=
JNFJavaToNSString
(
env
,
title
);
...
@@ -187,6 +198,7 @@ JNF_COCOA_ENTER(env);
...
@@ -187,6 +198,7 @@ JNF_COCOA_ENTER(env);
directory:
JNFJavaToNSString
(
env
,
directory
)
directory:
JNFJavaToNSString
(
env
,
directory
)
file:
JNFJavaToNSString
(
env
,
file
)
file:
JNFJavaToNSString
(
env
,
file
)
mode:
mode
mode:
mode
multipleMode:
multipleMode
shouldNavigate:
navigateApps
shouldNavigate:
navigateApps
withEnv:
env
];
withEnv:
env
];
...
@@ -196,8 +208,18 @@ JNF_COCOA_ENTER(env);
...
@@ -196,8 +208,18 @@ JNF_COCOA_ENTER(env);
waitUntilDone:
YES
];
waitUntilDone:
YES
];
if
([
dialogDelegate
userClickedOK
])
{
if
([
dialogDelegate
userClickedOK
])
{
NSString
*
filename
=
[
dialogDelegate
filename
];
NSArray
*
urls
=
[
dialogDelegate
URLs
];
returnValue
=
JNFNSToJavaString
(
env
,
filename
);
jsize
count
=
[
urls
count
];
jclass
stringClass
=
(
*
env
)
->
FindClass
(
env
,
"java/lang/String"
);
returnValue
=
(
*
env
)
->
NewObjectArray
(
env
,
count
,
stringClass
,
NULL
);
(
*
env
)
->
DeleteLocalRef
(
env
,
stringClass
);
[
urls
enumerateObjectsUsingBlock
:
^
(
id
url
,
NSUInteger
index
,
BOOL
*
stop
)
{
jstring
filename
=
JNFNormalizedJavaStringForPath
(
env
,
[
url
path
]);
(
*
env
)
->
SetObjectArrayElement
(
env
,
returnValue
,
index
,
filename
);
(
*
env
)
->
DeleteLocalRef
(
env
,
filename
);
}];
}
}
[
dialogDelegate
release
];
[
dialogDelegate
release
];
...
...
src/macosx/native/sun/awt/CImage.m
浏览文件 @
f63cb0a6
...
@@ -163,7 +163,6 @@ AWT_ASSERT_ANY_THREAD;
...
@@ -163,7 +163,6 @@ AWT_ASSERT_ANY_THREAD;
if ([reps count]) {
if ([reps count]) {
NSImage *nsImage = [[NSImage alloc] initWithSize:NSMakeSize(0, 0)];
NSImage *nsImage = [[NSImage alloc] initWithSize:NSMakeSize(0, 0)];
[nsImage addRepresentations: reps];
[nsImage addRepresentations: reps];
[reps release];
if (nsImage != nil) {
if (nsImage != nil) {
CFRetain(nsImage); // GC
CFRetain(nsImage); // GC
...
...
src/macosx/native/sun/awt/LWCToolkit.m
浏览文件 @
f63cb0a6
...
@@ -42,6 +42,7 @@ jint* gButtonDownMasks;
...
@@ -42,6 +42,7 @@ jint* gButtonDownMasks;
@implementation
AWTToolkit
@implementation
AWTToolkit
static
long
eventCount
;
static
long
eventCount
;
static
bool
shouldKeepRunningNestedLoop
=
NO
;
+
(
long
)
getEventCount
{
+
(
long
)
getEventCount
{
return
eventCount
;
return
eventCount
;
...
@@ -456,3 +457,36 @@ Java_sun_font_FontManager_populateFontFileNameMap
...
@@ -456,3 +457,36 @@ Java_sun_font_FontManager_populateFontFileNameMap
{
{
}
}
/*
* Class: sun_lwawt_macosx_LWCToolkit
* Method: startNativeNestedEventLoop
* Signature: ()V
*/
JNIEXPORT
void
JNICALL
Java_sun_lwawt_macosx_LWCToolkit_startNativeNestedEventLoop
(
JNIEnv
*
env
,
jclass
cls
)
{
if
(
!
shouldKeepRunningNestedLoop
)
{
NSRunLoop
*
theRL
=
[
NSRunLoop
currentRunLoop
];
NSApplication
*
app
=
[
NSApplication
sharedApplication
];
shouldKeepRunningNestedLoop
=
YES
;
while
(
shouldKeepRunningNestedLoop
&&
[
theRL
runMode
:
NSDefaultRunLoopMode
beforeDate
:[
NSDate
distantFuture
]])
{
NSEvent
*
event
=
[
app
nextEventMatchingMask
:
0xFFFFFFFF
untilDate
:
nil
inMode
:
NSDefaultRunLoopMode
dequeue
:
YES
];
if
(
event
!=
nil
)
{
[
app
sendEvent
:
event
];
}
}
}
}
/*
* Class: sun_lwawt_macosx_LWCToolkit
* Method: stopNativeNestedEventLoop
* Signature: ()V
*/
JNIEXPORT
void
JNICALL
Java_sun_lwawt_macosx_LWCToolkit_stopNativeNestedEventLoop
(
JNIEnv
*
env
,
jclass
cls
)
{
shouldKeepRunningNestedLoop
=
NO
;
}
src/macosx/native/sun/java2d/opengl/CGLSurfaceData.m
浏览文件 @
f63cb0a6
...
@@ -204,7 +204,8 @@ JNF_COCOA_ENTER(env);
...
@@ -204,7 +204,8 @@ JNF_COCOA_ENTER(env);
if (!CGLSD_MakeCurrentToScratch(env, oglc)) {
if (!CGLSD_MakeCurrentToScratch(env, oglc)) {
return NULL;
return NULL;
}
}
} else if ([NSOpenGLContext currentContext] == nil) {
// make sure our context is current
} else if ([NSOpenGLContext currentContext] != ctxinfo->context) {
[ctxinfo->context makeCurrentContext];
[ctxinfo->context makeCurrentContext];
}
}
...
...
src/share/classes/com/sun/java/swing/plaf/motif/resources/motif.properties
浏览文件 @
f63cb0a6
...
@@ -18,28 +18,23 @@
...
@@ -18,28 +18,23 @@
############ FILE CHOOSER STRINGS #############
############ FILE CHOOSER STRINGS #############
FileChooser.acceptAllFileFilterText
=
*
FileChooser.acceptAllFileFilter.textAndMnemonic
=
*
FileChooser.cancelButtonText
=
Cancel
FileChooser.cancelButton.textAndMnemonic
=
Cancel
FileChooser.saveButtonText
=
Save
FileChooser.saveButton.textAndMnemonic
=
Save
FileChooser.openButtonText
=
OK
FileChooser.openButton.textAndMnemonic
=
OK
FileChooser.saveDialogTitleText
=
Save
FileChooser.saveDialogTitle.textAndMnemonic
=
Save
FileChooser.openDialogTitleText
=
Open
FileChooser.openDialogTitle.textAndMnemonic
=
Open
FileChooser.updateButtonText
=
Update
FileChooser.updateButton.textAndMnemonic
=
Update
FileChooser.helpButtonText
=
Help
FileChooser.helpButton.textAndMnemonic
=
Help
FileChooser.pathLabelText
=
Enter path or folder name:
FileChooser.pathLabel.textAndMnemonic
=
Enter &path or folder name:
FileChooser.pathLabelMnemonic
=
80
FileChooser.filterLabel.textAndMnemonic
=
Filte&r
FileChooser.filterLabelText
=
Filter
FileChooser.foldersLabel.textAndMnemonic
=
Fo&lders
FileChooser.filterLabelMnemonic
=
82
FileChooser.filesLabel.textAndMnemonic
=
F&iles
FileChooser.foldersLabelText
=
Folders
FileChooser.enterFileNameLabel.textAndMnemonic
=
E&nter file name:
FileChooser.foldersLabelMnemonic
=
76
FileChooser.enterFolderNameLabel.textAndMnemonic
=
Enter folder name:
FileChooser.filesLabelText
=
Files
FileChooser.filesLabelMnemonic
=
73
FileChooser.enterFileNameLabelText
=
Enter file name:
FileChooser.enterFileNameLabelMnemonic
=
78
FileChooser.enterFolderNameLabelText
=
Enter folder name:
FileChooser.cancelButtonToolTip
Text
=
Abort file chooser dialog.
FileChooser.cancelButtonToolTip
.textAndMnemonic
=
Abort file chooser dialog.
FileChooser.saveButtonToolTip
Text
=
Save selected file.
FileChooser.saveButtonToolTip
.textAndMnemonic
=
Save selected file.
FileChooser.openButtonToolTip
Text
=
Open selected file.
FileChooser.openButtonToolTip
.textAndMnemonic
=
Open selected file.
FileChooser.updateButtonToolTip
Text
=
Update directory listing.
FileChooser.updateButtonToolTip
.textAndMnemonic
=
Update directory listing.
FileChooser.helpButtonToolTip
Text
=
FileChooser help.
FileChooser.helpButtonToolTip
.textAndMnemonic
=
FileChooser help.
src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_de.properties
浏览文件 @
f63cb0a6
...
@@ -18,28 +18,23 @@
...
@@ -18,28 +18,23 @@
############ FILE CHOOSER STRINGS #############
############ FILE CHOOSER STRINGS #############
FileChooser.acceptAllFileFilterText
=
*
FileChooser.acceptAllFileFilter.textAndMnemonic
=
*
FileChooser.cancelButtonText
=
Abbrechen
FileChooser.cancelButton.textAndMnemonic
=
Abbrechen
FileChooser.saveButtonText
=
Speichern
FileChooser.saveButton.textAndMnemonic
=
Speichern
FileChooser.openButtonText
=
OK
FileChooser.openButton.textAndMnemonic
=
OK
FileChooser.saveDialogTitleText
=
Speichern
FileChooser.saveDialogTitle.textAndMnemonic
=
Speichern
FileChooser.openDialogTitleText
=
\u
00D6ffnen
FileChooser.openDialogTitle.textAndMnemonic
=
\u
00D6ffnen
FileChooser.updateButtonText
=
Aktualisieren
FileChooser.updateButton.textAndMnemonic
=
Aktualisieren
FileChooser.helpButtonText
=
Hilfe
FileChooser.helpButton.textAndMnemonic
=
Hilfe
FileChooser.pathLabelText
=
Pfad- oder Ordnernamen eingeben:
FileChooser.pathLabel.textAndMnemonic
=
&Pfad- oder Ordnernamen eingeben:
FileChooser.pathLabelMnemonic
=
80
FileChooser.filterLabel.textAndMnemonic
=
Filte&r
FileChooser.filterLabelText
=
Filter
FileChooser.foldersLabel.textAndMnemonic
=
Ordner(&L)
FileChooser.filterLabelMnemonic
=
82
FileChooser.filesLabel.textAndMnemonic
=
Date&ien
FileChooser.foldersLabelText
=
Ordner
FileChooser.enterFileNameLabel.textAndMnemonic
=
Datei&namen eingeben:
FileChooser.foldersLabelMnemonic
=
76
FileChooser.enterFolderNameLabel.textAndMnemonic
=
Ordnernamen eingeben:
FileChooser.filesLabelText
=
Dateien
FileChooser.filesLabelMnemonic
=
73
FileChooser.enterFileNameLabelText
=
Dateinamen eingeben:
FileChooser.enterFileNameLabelMnemonic
=
78
FileChooser.enterFolderNameLabelText
=
Ordnernamen eingeben:
FileChooser.cancelButtonToolTip
Text
=
Dialogfeld f
\u
00FCr Dateiauswahl schlie
\u
00DFen.
FileChooser.cancelButtonToolTip
.textAndMnemonic
=
Dialogfeld f
\u
00FCr Dateiauswahl schlie
\u
00DFen.
FileChooser.saveButtonToolTip
Text
=
Ausgew
\u
00E4hlte Datei speichern.
FileChooser.saveButtonToolTip
.textAndMnemonic
=
Ausgew
\u
00E4hlte Datei speichern.
FileChooser.openButtonToolTip
Text
=
Ausgew
\u
00E4hlte Datei
\u
00F6ffnen.
FileChooser.openButtonToolTip
.textAndMnemonic
=
Ausgew
\u
00E4hlte Datei
\u
00F6ffnen.
FileChooser.updateButtonToolTip
Text
=
Verzeichnisliste aktualisieren.
FileChooser.updateButtonToolTip
.textAndMnemonic
=
Verzeichnisliste aktualisieren.
FileChooser.helpButtonToolTip
Text
=
FileChooser-Hilfe.
FileChooser.helpButtonToolTip
.textAndMnemonic
=
FileChooser-Hilfe.
src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_es.properties
浏览文件 @
f63cb0a6
...
@@ -18,28 +18,23 @@
...
@@ -18,28 +18,23 @@
############ FILE CHOOSER STRINGS #############
############ FILE CHOOSER STRINGS #############
FileChooser.acceptAllFileFilterText
=
*
FileChooser.acceptAllFileFilter.textAndMnemonic
=
*
FileChooser.cancelButtonText
=
Cancelar
FileChooser.cancelButton.textAndMnemonic
=
Cancelar
FileChooser.saveButtonText
=
Guardar
FileChooser.saveButton.textAndMnemonic
=
Guardar
FileChooser.openButtonText
=
Aceptar
FileChooser.openButton.textAndMnemonic
=
Aceptar
FileChooser.saveDialogTitleText
=
Guardar
FileChooser.saveDialogTitle.textAndMnemonic
=
Guardar
FileChooser.openDialogTitleText
=
Abrir
FileChooser.openDialogTitle.textAndMnemonic
=
Abrir
FileChooser.updateButtonText
=
Actualizar
FileChooser.updateButton.textAndMnemonic
=
Actualizar
FileChooser.helpButtonText
=
Ayuda
FileChooser.helpButton.textAndMnemonic
=
Ayuda
FileChooser.pathLabelText
=
Introducir nombre de la ruta de acceso o carpeta:
FileChooser.pathLabel.textAndMnemonic
=
Introducir nombre de la ruta de acceso o car&peta:
FileChooser.pathLabelMnemonic
=
80
FileChooser.filterLabel.textAndMnemonic
=
Filt&ro
FileChooser.filterLabelText
=
Filtro
FileChooser.foldersLabel.textAndMnemonic
=
Carpetas(&L)
FileChooser.filterLabelMnemonic
=
82
FileChooser.filesLabel.textAndMnemonic
=
Arch&ivos
FileChooser.foldersLabelText
=
Carpetas
FileChooser.enterFileNameLabel.textAndMnemonic
=
I&ntroducir nombre de archivo:
FileChooser.foldersLabelMnemonic
=
76
FileChooser.enterFolderNameLabel.textAndMnemonic
=
Introducir nombre de carpeta:
FileChooser.filesLabelText
=
Archivos
FileChooser.filesLabelMnemonic
=
73
FileChooser.enterFileNameLabelText
=
Introducir nombre de archivo:
FileChooser.enterFileNameLabelMnemonic
=
78
FileChooser.enterFolderNameLabelText
=
Introducir nombre de carpeta:
FileChooser.cancelButtonToolTip
Text
=
Abortar cuadro de di
\u
00E1logo del selector de archivos.
FileChooser.cancelButtonToolTip
.textAndMnemonic
=
Abortar cuadro de di
\u
00E1logo del selector de archivos.
FileChooser.saveButtonToolTip
Text
=
Guardar archivo seleccionado.
FileChooser.saveButtonToolTip
.textAndMnemonic
=
Guardar archivo seleccionado.
FileChooser.openButtonToolTip
Text
=
Abrir archivo seleccionado.
FileChooser.openButtonToolTip
.textAndMnemonic
=
Abrir archivo seleccionado.
FileChooser.updateButtonToolTip
Text
=
Actualizar lista de directorios.
FileChooser.updateButtonToolTip
.textAndMnemonic
=
Actualizar lista de directorios.
FileChooser.helpButtonToolTip
Text
=
Ayuda del selector de archivos.
FileChooser.helpButtonToolTip
.textAndMnemonic
=
Ayuda del selector de archivos.
src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_fr.properties
浏览文件 @
f63cb0a6
...
@@ -18,28 +18,23 @@
...
@@ -18,28 +18,23 @@
############ FILE CHOOSER STRINGS #############
############ FILE CHOOSER STRINGS #############
FileChooser.acceptAllFileFilterText
=
*
FileChooser.acceptAllFileFilter.textAndMnemonic
=
*
FileChooser.cancelButtonText
=
Annuler
FileChooser.cancelButton.textAndMnemonic
=
Annuler
FileChooser.saveButtonText
=
Enregistrer
FileChooser.saveButton.textAndMnemonic
=
Enregistrer
FileChooser.openButtonText
=
OK
FileChooser.openButton.textAndMnemonic
=
OK
FileChooser.saveDialogTitleText
=
Enregistrer
FileChooser.saveDialogTitle.textAndMnemonic
=
Enregistrer
FileChooser.openDialogTitleText
=
Ouvrir
FileChooser.openDialogTitle.textAndMnemonic
=
Ouvrir
FileChooser.updateButtonText
=
Mettre
\u
00E0 jour
FileChooser.updateButton.textAndMnemonic
=
Mettre
\u
00E0 jour
FileChooser.helpButtonText
=
Aide
FileChooser.helpButton.textAndMnemonic
=
Aide
FileChooser.pathLabelText
=
Entrez le chemin ou le nom du dossier :
FileChooser.pathLabel.textAndMnemonic
=
Entrez le chemin ou le nom du dossier (&P):
FileChooser.pathLabelMnemonic
=
80
FileChooser.filterLabel.textAndMnemonic
=
Filt&re
FileChooser.filterLabelText
=
Filtre
FileChooser.foldersLabel.textAndMnemonic
=
Dossiers(&L)
FileChooser.filterLabelMnemonic
=
82
FileChooser.filesLabel.textAndMnemonic
=
F&ichiers
FileChooser.foldersLabelText
=
Dossiers
FileChooser.enterFileNameLabel.textAndMnemonic
=
E&ntrez le nom du fichier :
FileChooser.foldersLabelMnemonic
=
76
FileChooser.enterFolderNameLabel.textAndMnemonic
=
Entrez le nom du dossier :
FileChooser.filesLabelText
=
Fichiers
FileChooser.filesLabelMnemonic
=
73
FileChooser.enterFileNameLabelText
=
Entrez le nom du fichier :
FileChooser.enterFileNameLabelMnemonic
=
78
FileChooser.enterFolderNameLabelText
=
Entrez le nom du dossier :
FileChooser.cancelButtonToolTip
Text
=
Ferme la bo
\u
00EEte de dialogue du s
\u
00E9lecteur de fichiers.
FileChooser.cancelButtonToolTip
.textAndMnemonic
=
Ferme la bo
\u
00EEte de dialogue du s
\u
00E9lecteur de fichiers.
FileChooser.saveButtonToolTip
Text
=
Enregistre le fichier s
\u
00E9lectionn
\u
00E9.
FileChooser.saveButtonToolTip
.textAndMnemonic
=
Enregistre le fichier s
\u
00E9lectionn
\u
00E9.
FileChooser.openButtonToolTip
Text
=
Ouvre le fichier s
\u
00E9lectionn
\u
00E9.
FileChooser.openButtonToolTip
.textAndMnemonic
=
Ouvre le fichier s
\u
00E9lectionn
\u
00E9.
FileChooser.updateButtonToolTip
Text
=
Met
\u
00E0 jour la liste des r
\u
00E9pertoires.
FileChooser.updateButtonToolTip
.textAndMnemonic
=
Met
\u
00E0 jour la liste des r
\u
00E9pertoires.
FileChooser.helpButtonToolTip
Text
=
Aide du s
\u
00E9lecteur de fichiers
FileChooser.helpButtonToolTip
.textAndMnemonic
=
Aide du s
\u
00E9lecteur de fichiers
src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_it.properties
浏览文件 @
f63cb0a6
...
@@ -18,28 +18,23 @@
...
@@ -18,28 +18,23 @@
############ FILE CHOOSER STRINGS #############
############ FILE CHOOSER STRINGS #############
FileChooser.acceptAllFileFilterText
=
*
FileChooser.acceptAllFileFilter.textAndMnemonic
=
*
FileChooser.cancelButtonText
=
Annulla
FileChooser.cancelButton.textAndMnemonic
=
Annulla
FileChooser.saveButtonText
=
Salva
FileChooser.saveButton.textAndMnemonic
=
Salva
FileChooser.openButtonText
=
OK
FileChooser.openButton.textAndMnemonic
=
OK
FileChooser.saveDialogTitleText
=
Salva
FileChooser.saveDialogTitle.textAndMnemonic
=
Salva
FileChooser.openDialogTitleText
=
Apri
FileChooser.openDialogTitle.textAndMnemonic
=
Apri
FileChooser.updateButtonText
=
Aggiorna
FileChooser.updateButton.textAndMnemonic
=
Aggiorna
FileChooser.helpButtonText
=
?
FileChooser.helpButton.textAndMnemonic
=
?
FileChooser.pathLabelText
=
Percorso o nome cartella:
FileChooser.pathLabel.textAndMnemonic
=
&Percorso o nome cartella:
FileChooser.pathLabelMnemonic
=
80
FileChooser.filterLabel.textAndMnemonic
=
Filt&ro
FileChooser.filterLabelText
=
Filtro
FileChooser.foldersLabel.textAndMnemonic
=
Carte&lle
FileChooser.filterLabelMnemonic
=
82
FileChooser.filesLabel.textAndMnemonic
=
F&ile
FileChooser.foldersLabelText
=
Cartelle
FileChooser.enterFileNameLabel.textAndMnemonic
=
&Nome file:
FileChooser.foldersLabelMnemonic
=
76
FileChooser.enterFolderNameLabel.textAndMnemonic
=
Nome cartella:
FileChooser.filesLabelText
=
File
FileChooser.filesLabelMnemonic
=
73
FileChooser.enterFileNameLabelText
=
Nome file:
FileChooser.enterFileNameLabelMnemonic
=
78
FileChooser.enterFolderNameLabelText
=
Nome cartella:
FileChooser.cancelButtonToolTip
Text
=
Chiude la finestra di dialogo di selezione file.
FileChooser.cancelButtonToolTip
.textAndMnemonic
=
Chiude la finestra di dialogo di selezione file.
FileChooser.saveButtonToolTip
Text
=
Salva il file selezionato.
FileChooser.saveButtonToolTip
.textAndMnemonic
=
Salva il file selezionato.
FileChooser.openButtonToolTip
Text
=
Apre il file selezionato.
FileChooser.openButtonToolTip
.textAndMnemonic
=
Apre il file selezionato.
FileChooser.updateButtonToolTip
Text
=
Aggiorna lista directory.
FileChooser.updateButtonToolTip
.textAndMnemonic
=
Aggiorna lista directory.
FileChooser.helpButtonToolTip
Text
=
Guida FileChooser.
FileChooser.helpButtonToolTip
.textAndMnemonic
=
Guida FileChooser.
src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_ja.properties
浏览文件 @
f63cb0a6
...
@@ -18,28 +18,23 @@
...
@@ -18,28 +18,23 @@
############ FILE CHOOSER STRINGS #############
############ FILE CHOOSER STRINGS #############
FileChooser.acceptAllFileFilterText
=
*
FileChooser.acceptAllFileFilter.textAndMnemonic
=
*
FileChooser.cancelButtonText
=
\u
53D6
\u
6D88
FileChooser.cancelButton.textAndMnemonic
=
\u
53D6
\u
6D88
FileChooser.saveButtonText
=
\u
4FDD
\u
5B58
FileChooser.saveButton.textAndMnemonic
=
\u
4FDD
\u
5B58
FileChooser.openButtonText
=
OK
FileChooser.openButton.textAndMnemonic
=
OK
FileChooser.saveDialogTitleText
=
\u
4FDD
\u
5B58
FileChooser.saveDialogTitle.textAndMnemonic
=
\u
4FDD
\u
5B58
FileChooser.openDialogTitleText
=
\u
958B
\u
304F
FileChooser.openDialogTitle.textAndMnemonic
=
\u
958B
\u
304F
FileChooser.updateButtonText
=
\u
66F4
\u
65B0
FileChooser.updateButton.textAndMnemonic
=
\u
66F4
\u
65B0
FileChooser.helpButtonText
=
\u
30D8
\u
30EB
\u
30D7
FileChooser.helpButton.textAndMnemonic
=
\u
30D8
\u
30EB
\u
30D7
FileChooser.pathLabelText
=
\u
30D1
\u
30B9
\u
307E
\u
305F
\u
306F
\u
30D5
\u
30A9
\u
30EB
\u
30C0
\u
540D
\u3092\u5165\u
529B:
FileChooser.pathLabel.textAndMnemonic
=
\u
30D1
\u
30B9
\u
307E
\u
305F
\u
306F
\u
30D5
\u
30A9
\u
30EB
\u
30C0
\u
540D
\u3092\u5165\u
529B(&P):
FileChooser.pathLabelMnemonic
=
80
FileChooser.filterLabel.textAndMnemonic
=
\u
30D5
\u
30A3
\u
30EB
\u
30BF(&R)
FileChooser.filterLabelText
=
\u
30D5
\u
30A3
\u
30EB
\u
30BF
FileChooser.foldersLabel.textAndMnemonic
=
\u
30D5
\u
30A9
\u
30EB
\u
30C0(&L)
FileChooser.filterLabelMnemonic
=
82
FileChooser.filesLabel.textAndMnemonic
=
\u
30D5
\u
30A1
\u
30A4
\u
30EB(&I)
FileChooser.foldersLabelText
=
\u
30D5
\u
30A9
\u
30EB
\u
30C0
FileChooser.enterFileNameLabel.textAndMnemonic
=
\u
30D5
\u
30A1
\u
30A4
\u
30EB
\u
540D
\u3092\u5165\u
529B(&N):
FileChooser.foldersLabelMnemonic
=
76
FileChooser.enterFolderNameLabel.textAndMnemonic
=
\u
30D5
\u
30A9
\u
30EB
\u
30C0
\u
540D
\u3092\u5165\u
529B:
FileChooser.filesLabelText
=
\u
30D5
\u
30A1
\u
30A4
\u
30EB
FileChooser.filesLabelMnemonic
=
73
FileChooser.enterFileNameLabelText
=
\u
30D5
\u
30A1
\u
30A4
\u
30EB
\u
540D
\u3092\u5165\u
529B:
FileChooser.enterFileNameLabelMnemonic
=
78
FileChooser.enterFolderNameLabelText
=
\u
30D5
\u
30A9
\u
30EB
\u
30C0
\u
540D
\u3092\u5165\u
529B:
FileChooser.cancelButtonToolTip
Text
=
\u
30D5
\u
30A1
\u
30A4
\u
30EB
\u
30FB
\u
30C1
\u
30E5
\u
30FC
\u
30B6
\u
30FB
\u
30C0
\u
30A4
\u
30A2
\u
30ED
\u
30B0
\u3092\u
7D42
\u
4E86
\u3057\u
307E
\u3059\u3002
FileChooser.cancelButtonToolTip
.textAndMnemonic
=
\u
30D5
\u
30A1
\u
30A4
\u
30EB
\u
30FB
\u
30C1
\u
30E5
\u
30FC
\u
30B6
\u
30FB
\u
30C0
\u
30A4
\u
30A2
\u
30ED
\u
30B0
\u3092\u
7D42
\u
4E86
\u3057\u
307E
\u3059\u3002
FileChooser.saveButtonToolTip
Text
=
\u9078\u
629E
\u3057\u
305F
\u
30D5
\u
30A1
\u
30A4
\u
30EB
\u3092\u
4FDD
\u
5B58
\u3057\u
307E
\u3059\u3002
FileChooser.saveButtonToolTip
.textAndMnemonic
=
\u9078\u
629E
\u3057\u
305F
\u
30D5
\u
30A1
\u
30A4
\u
30EB
\u3092\u
4FDD
\u
5B58
\u3057\u
307E
\u3059\u3002
FileChooser.openButtonToolTip
Text
=
\u9078\u
629E
\u3057\u
305F
\u
30D5
\u
30A1
\u
30A4
\u
30EB
\u3092\u
958B
\u
304D
\u
307E
\u3059\u3002
FileChooser.openButtonToolTip
.textAndMnemonic
=
\u9078\u
629E
\u3057\u
305F
\u
30D5
\u
30A1
\u
30A4
\u
30EB
\u3092\u
958B
\u
304D
\u
307E
\u3059\u3002
FileChooser.updateButtonToolTip
Text
=
\u
30C7
\u
30A3
\u
30EC
\u
30AF
\u
30C8
\u
30EA
\u
306E
\u
30EA
\u
30B9
\u
30C8
\u3092\u
66F4
\u
65B0
\u3057\u
307E
\u3059\u3002
FileChooser.updateButtonToolTip
.textAndMnemonic
=
\u
30C7
\u
30A3
\u
30EC
\u
30AF
\u
30C8
\u
30EA
\u
306E
\u
30EA
\u
30B9
\u
30C8
\u3092\u
66F4
\u
65B0
\u3057\u
307E
\u3059\u3002
FileChooser.helpButtonToolTip
Text
=
FileChooser
\u
306E
\u
30D8
\u
30EB
\u
30D7
\u3067\u3059\u3002
FileChooser.helpButtonToolTip
.textAndMnemonic
=
FileChooser
\u
306E
\u
30D8
\u
30EB
\u
30D7
\u3067\u3059\u3002
src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_ko.properties
浏览文件 @
f63cb0a6
...
@@ -18,28 +18,23 @@
...
@@ -18,28 +18,23 @@
############ FILE CHOOSER STRINGS #############
############ FILE CHOOSER STRINGS #############
FileChooser.acceptAllFileFilterText
=
*
FileChooser.acceptAllFileFilter.textAndMnemonic
=
*
FileChooser.cancelButtonText
=
\u
CDE8
\u
C18C
FileChooser.cancelButton.textAndMnemonic
=
\u
CDE8
\u
C18C
FileChooser.saveButtonText
=
\u
C800
\u
C7A5
FileChooser.saveButton.textAndMnemonic
=
\u
C800
\u
C7A5
FileChooser.openButtonText
=
\u
D655
\u
C778
FileChooser.openButton.textAndMnemonic
=
\u
D655
\u
C778
FileChooser.saveDialogTitleText
=
\u
C800
\u
C7A5
FileChooser.saveDialogTitle.textAndMnemonic
=
\u
C800
\u
C7A5
FileChooser.openDialogTitleText
=
\u
C5F4
\u
AE30
FileChooser.openDialogTitle.textAndMnemonic
=
\u
C5F4
\u
AE30
FileChooser.updateButtonText
=
\u
AC31
\u
C2E0
FileChooser.updateButton.textAndMnemonic
=
\u
AC31
\u
C2E0
FileChooser.helpButtonText
=
\u
B3C4
\u
C6C0
\u
B9D0
FileChooser.helpButton.textAndMnemonic
=
\u
B3C4
\u
C6C0
\u
B9D0
FileChooser.pathLabelText
=
\u
ACBD
\u
B85C
\u
B610
\u
B294
\u
D3F4
\u
B354
\u
C774
\u
B984
\u
C785
\u
B825:
FileChooser.pathLabel.textAndMnemonic
=
\u
ACBD
\u
B85C
\u
B610
\u
B294
\u
D3F4
\u
B354
\u
C774
\u
B984
\u
C785
\u
B825(&P):
FileChooser.pathLabelMnemonic
=
80
FileChooser.filterLabel.textAndMnemonic
=
\u
D544
\u
D130(&R)
FileChooser.filterLabelText
=
\u
D544
\u
D130
FileChooser.foldersLabel.textAndMnemonic
=
\u
D3F4
\u
B354(&L)
FileChooser.filterLabelMnemonic
=
82
FileChooser.filesLabel.textAndMnemonic
=
\u
D30C
\u
C77C(&I)
FileChooser.foldersLabelText
=
\u
D3F4
\u
B354
FileChooser.enterFileNameLabel.textAndMnemonic
=
\u
D30C
\u
C77C
\u
C774
\u
B984
\u
C785
\u
B825(&N):
FileChooser.foldersLabelMnemonic
=
76
FileChooser.enterFolderNameLabel.textAndMnemonic
=
\u
D3F4
\u
B354
\u
C774
\u
B984
\u
C785
\u
B825:
FileChooser.filesLabelText
=
\u
D30C
\u
C77C
FileChooser.filesLabelMnemonic
=
73
FileChooser.enterFileNameLabelText
=
\u
D30C
\u
C77C
\u
C774
\u
B984
\u
C785
\u
B825:
FileChooser.enterFileNameLabelMnemonic
=
78
FileChooser.enterFolderNameLabelText
=
\u
D3F4
\u
B354
\u
C774
\u
B984
\u
C785
\u
B825:
FileChooser.cancelButtonToolTip
Text
=
\u
D30C
\u
C77C
\u
C120
\u
D0DD
\u
AE30
\u
B300
\u
D654
\u
C0C1
\u
C790
\u
B97C
\u
C911
\u
B2E8
\u
D569
\u
B2C8
\u
B2E4.
FileChooser.cancelButtonToolTip
.textAndMnemonic
=
\u
D30C
\u
C77C
\u
C120
\u
D0DD
\u
AE30
\u
B300
\u
D654
\u
C0C1
\u
C790
\u
B97C
\u
C911
\u
B2E8
\u
D569
\u
B2C8
\u
B2E4.
FileChooser.saveButtonToolTip
Text
=
\u
C120
\u
D0DD
\u
B41C
\u
D30C
\u
C77C
\u
C744
\u
C800
\u
C7A5
\u
D569
\u
B2C8
\u
B2E4.
FileChooser.saveButtonToolTip
.textAndMnemonic
=
\u
C120
\u
D0DD
\u
B41C
\u
D30C
\u
C77C
\u
C744
\u
C800
\u
C7A5
\u
D569
\u
B2C8
\u
B2E4.
FileChooser.openButtonToolTip
Text
=
\u
C120
\u
D0DD
\u
B41C
\u
D30C
\u
C77C
\u
C744
\u
C5FD
\u
B2C8
\u
B2E4.
FileChooser.openButtonToolTip
.textAndMnemonic
=
\u
C120
\u
D0DD
\u
B41C
\u
D30C
\u
C77C
\u
C744
\u
C5FD
\u
B2C8
\u
B2E4.
FileChooser.updateButtonToolTip
Text
=
\u
B514
\u
B809
\u
D1A0
\u
B9AC
\u
BAA9
\u
B85D
\u
C744
\u
AC31
\u
C2E0
\u
D569
\u
B2C8
\u
B2E4.
FileChooser.updateButtonToolTip
.textAndMnemonic
=
\u
B514
\u
B809
\u
D1A0
\u
B9AC
\u
BAA9
\u
B85D
\u
C744
\u
AC31
\u
C2E0
\u
D569
\u
B2C8
\u
B2E4.
FileChooser.helpButtonToolTip
Text
=
FileChooser
\u
B3C4
\u
C6C0
\u
B9D0
\u
C785
\u
B2C8
\u
B2E4.
FileChooser.helpButtonToolTip
.textAndMnemonic
=
FileChooser
\u
B3C4
\u
C6C0
\u
B9D0
\u
C785
\u
B2C8
\u
B2E4.
src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_pt_BR.properties
浏览文件 @
f63cb0a6
...
@@ -18,28 +18,23 @@
...
@@ -18,28 +18,23 @@
############ FILE CHOOSER STRINGS #############
############ FILE CHOOSER STRINGS #############
FileChooser.acceptAllFileFilterText
=
*
FileChooser.acceptAllFileFilter.textAndMnemonic
=
*
FileChooser.cancelButtonText
=
Cancelar
FileChooser.cancelButton.textAndMnemonic
=
Cancelar
FileChooser.saveButtonText
=
Salvar
FileChooser.saveButton.textAndMnemonic
=
Salvar
FileChooser.openButtonText
=
OK
FileChooser.openButton.textAndMnemonic
=
OK
FileChooser.saveDialogTitleText
=
Salvar
FileChooser.saveDialogTitle.textAndMnemonic
=
Salvar
FileChooser.openDialogTitleText
=
Abrir
FileChooser.openDialogTitle.textAndMnemonic
=
Abrir
FileChooser.updateButtonText
=
Atualizar
FileChooser.updateButton.textAndMnemonic
=
Atualizar
FileChooser.helpButtonText
=
Ajuda
FileChooser.helpButton.textAndMnemonic
=
Ajuda
FileChooser.pathLabelText
=
Informar caminho ou nome da pasta:
FileChooser.pathLabel.textAndMnemonic
=
Informar caminho ou nome da &pasta:
FileChooser.pathLabelMnemonic
=
80
FileChooser.filterLabel.textAndMnemonic
=
Filt&ro
FileChooser.filterLabelText
=
Filtro
FileChooser.foldersLabel.textAndMnemonic
=
Pastas(&L)
FileChooser.filterLabelMnemonic
=
82
FileChooser.filesLabel.textAndMnemonic
=
Arqu&ivos
FileChooser.foldersLabelText
=
Pastas
FileChooser.enterFileNameLabel.textAndMnemonic
=
I&nformar nome do arquivo:
FileChooser.foldersLabelMnemonic
=
76
FileChooser.enterFolderNameLabel.textAndMnemonic
=
Informar nome da pasta:
FileChooser.filesLabelText
=
Arquivos
FileChooser.filesLabelMnemonic
=
73
FileChooser.enterFileNameLabelText
=
Informar nome do arquivo:
FileChooser.enterFileNameLabelMnemonic
=
78
FileChooser.enterFolderNameLabelText
=
Informar nome da pasta:
FileChooser.cancelButtonToolTip
Text
=
Abortar caixa de di
\u
00E1logo do seletor de arquivos.
FileChooser.cancelButtonToolTip
.textAndMnemonic
=
Abortar caixa de di
\u
00E1logo do seletor de arquivos.
FileChooser.saveButtonToolTip
Text
=
Salvar arquivo selecionado.
FileChooser.saveButtonToolTip
.textAndMnemonic
=
Salvar arquivo selecionado.
FileChooser.openButtonToolTip
Text
=
Abrir arquivo selecionado.
FileChooser.openButtonToolTip
.textAndMnemonic
=
Abrir arquivo selecionado.
FileChooser.updateButtonToolTip
Text
=
Atualizar lista de diret
\u
00F3rios.
FileChooser.updateButtonToolTip
.textAndMnemonic
=
Atualizar lista de diret
\u
00F3rios.
FileChooser.helpButtonToolTip
Text
=
Ajuda do FileChooser.
FileChooser.helpButtonToolTip
.textAndMnemonic
=
Ajuda do FileChooser.
src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_sv.properties
浏览文件 @
f63cb0a6
...
@@ -18,28 +18,23 @@
...
@@ -18,28 +18,23 @@
############ FILE CHOOSER STRINGS #############
############ FILE CHOOSER STRINGS #############
FileChooser.acceptAllFileFilterText
=
*
FileChooser.acceptAllFileFilter.textAndMnemonic
=
*
FileChooser.cancelButtonText
=
Avbryt
FileChooser.cancelButton.textAndMnemonic
=
Avbryt
FileChooser.saveButtonText
=
Spara
FileChooser.saveButton.textAndMnemonic
=
Spara
FileChooser.openButtonText
=
OK
FileChooser.openButton.textAndMnemonic
=
OK
FileChooser.saveDialogTitleText
=
Spara
FileChooser.saveDialogTitle.textAndMnemonic
=
Spara
FileChooser.openDialogTitleText
=
\u
00D6ppna
FileChooser.openDialogTitle.textAndMnemonic
=
\u
00D6ppna
FileChooser.updateButtonText
=
Uppdatera
FileChooser.updateButton.textAndMnemonic
=
Uppdatera
FileChooser.helpButtonText
=
Hj
\u
00E4lp
FileChooser.helpButton.textAndMnemonic
=
Hj
\u
00E4lp
FileChooser.pathLabelText
=
Ange s
\u
00F6kv
\u
00E4g eller mappnamn:
FileChooser.pathLabel.textAndMnemonic
=
Ange s
\u
00F6kv
\u
00E4g eller mappnamn(&P):
FileChooser.pathLabelMnemonic
=
80
FileChooser.filterLabel.textAndMnemonic
=
Filte&r
FileChooser.filterLabelText
=
Filter
FileChooser.foldersLabel.textAndMnemonic
=
Mappar(&L)
FileChooser.filterLabelMnemonic
=
82
FileChooser.filesLabel.textAndMnemonic
=
F&iler
FileChooser.foldersLabelText
=
Mappar
FileChooser.enterFileNameLabel.textAndMnemonic
=
A&nge filnamn:
FileChooser.foldersLabelMnemonic
=
76
FileChooser.enterFolderNameLabel.textAndMnemonic
=
Ange ett mappnamn:
FileChooser.filesLabelText
=
Filer
FileChooser.filesLabelMnemonic
=
73
FileChooser.enterFileNameLabelText
=
Ange filnamn:
FileChooser.enterFileNameLabelMnemonic
=
78
FileChooser.enterFolderNameLabelText
=
Ange ett mappnamn:
FileChooser.cancelButtonToolTip
Text
=
Avbryt dialogrutan Filv
\u
00E4ljare.
FileChooser.cancelButtonToolTip
.textAndMnemonic
=
Avbryt dialogrutan Filv
\u
00E4ljare.
FileChooser.saveButtonToolTip
Text
=
Spara vald fil.
FileChooser.saveButtonToolTip
.textAndMnemonic
=
Spara vald fil.
FileChooser.openButtonToolTip
Text
=
\u
00D6ppna vald fil.
FileChooser.openButtonToolTip
.textAndMnemonic
=
\u
00D6ppna vald fil.
FileChooser.updateButtonToolTip
Text
=
Uppdatera kataloglistan.
FileChooser.updateButtonToolTip
.textAndMnemonic
=
Uppdatera kataloglistan.
FileChooser.helpButtonToolTip
Text
=
Hj
\u
00E4lp - Filv
\u
00E4ljare.
FileChooser.helpButtonToolTip
.textAndMnemonic
=
Hj
\u
00E4lp - Filv
\u
00E4ljare.
src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_zh_CN.properties
浏览文件 @
f63cb0a6
...
@@ -18,28 +18,23 @@
...
@@ -18,28 +18,23 @@
############ FILE CHOOSER STRINGS #############
############ FILE CHOOSER STRINGS #############
FileChooser.acceptAllFileFilterText
=
*
FileChooser.acceptAllFileFilter.textAndMnemonic
=
*
FileChooser.cancelButtonText
=
\u
53D6
\u
6D88
FileChooser.cancelButton.textAndMnemonic
=
\u
53D6
\u
6D88
FileChooser.saveButtonText
=
\u
4FDD
\u
5B58
FileChooser.saveButton.textAndMnemonic
=
\u
4FDD
\u
5B58
FileChooser.openButtonText
=
\u
786E
\u
5B9A
FileChooser.openButton.textAndMnemonic
=
\u
786E
\u
5B9A
FileChooser.saveDialogTitleText
=
\u
4FDD
\u
5B58
FileChooser.saveDialogTitle.textAndMnemonic
=
\u
4FDD
\u
5B58
FileChooser.openDialogTitleText
=
\u6253\u
5F00
FileChooser.openDialogTitle.textAndMnemonic
=
\u6253\u
5F00
FileChooser.updateButtonText
=
\u
66F4
\u
65B0
FileChooser.updateButton.textAndMnemonic
=
\u
66F4
\u
65B0
FileChooser.helpButtonText
=
\u
5E2E
\u
52A9
FileChooser.helpButton.textAndMnemonic
=
\u
5E2E
\u
52A9
FileChooser.pathLabelText
=
\u
952E
\u5165\u
8DEF
\u
5F84
\u6216\u6587\u
4EF6
\u5939\u
540D:
FileChooser.pathLabel.textAndMnemonic
=
\u
952E
\u5165\u
8DEF
\u
5F84
\u6216\u6587\u
4EF6
\u5939\u
540D: (&P)
FileChooser.pathLabelMnemonic
=
80
FileChooser.filterLabel.textAndMnemonic
=
\u
7B5B
\u9009\u5668
(&R)
FileChooser.filterLabelText
=
\u
7B5B
\u9009\u5668
FileChooser.foldersLabel.textAndMnemonic
=
\u6587\u
4EF6
\u5939
(&L)
FileChooser.filterLabelMnemonic
=
82
FileChooser.filesLabel.textAndMnemonic
=
\u6587\u
4EF6(&I)
FileChooser.foldersLabelText
=
\u6587\u
4EF6
\u5939
FileChooser.enterFileNameLabel.textAndMnemonic
=
\u
952E
\u5165\u6587\u
4EF6
\u
540D: (&N)
FileChooser.foldersLabelMnemonic
=
76
FileChooser.enterFolderNameLabel.textAndMnemonic
=
\u
8F93
\u5165\u6587\u
4EF6
\u5939\u
540D:
FileChooser.filesLabelText
=
\u6587\u
4EF6
FileChooser.filesLabelMnemonic
=
73
FileChooser.enterFileNameLabelText
=
\u
952E
\u5165\u6587\u
4EF6
\u
540D:
FileChooser.enterFileNameLabelMnemonic
=
78
FileChooser.enterFolderNameLabelText
=
\u
8F93
\u5165\u6587\u
4EF6
\u5939\u
540D:
FileChooser.cancelButtonToolTip
Text
=
\u
4E2D
\u
6B62
\u6587\u
4EF6
\u9009\u
62E9
\u5668\u
5BF9
\u
8BDD
\u6846\u3002
FileChooser.cancelButtonToolTip
.textAndMnemonic
=
\u
4E2D
\u
6B62
\u6587\u
4EF6
\u9009\u
62E9
\u5668\u
5BF9
\u
8BDD
\u6846\u3002
FileChooser.saveButtonToolTip
Text
=
\u
4FDD
\u
5B58
\u6240\u9009\u6587\u
4EF6
\u3002
FileChooser.saveButtonToolTip
.textAndMnemonic
=
\u
4FDD
\u
5B58
\u6240\u9009\u6587\u
4EF6
\u3002
FileChooser.openButtonToolTip
Text
=
\u6253\u
5F00
\u6240\u9009\u6587\u
4EF6
\u3002
FileChooser.openButtonToolTip
.textAndMnemonic
=
\u6253\u
5F00
\u6240\u9009\u6587\u
4EF6
\u3002
FileChooser.updateButtonToolTip
Text
=
\u
66F4
\u
65B0
\u
76EE
\u
5F55
\u5217\u8868\u3002
FileChooser.updateButtonToolTip
.textAndMnemonic
=
\u
66F4
\u
65B0
\u
76EE
\u
5F55
\u5217\u8868\u3002
FileChooser.helpButtonToolTip
Text
=
FileChooser
\u
5E2E
\u
52A9
\u3002
FileChooser.helpButtonToolTip
.textAndMnemonic
=
FileChooser
\u
5E2E
\u
52A9
\u3002
src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_zh_TW.properties
浏览文件 @
f63cb0a6
...
@@ -18,28 +18,23 @@
...
@@ -18,28 +18,23 @@
############ FILE CHOOSER STRINGS #############
############ FILE CHOOSER STRINGS #############
FileChooser.acceptAllFileFilterText
=
*
FileChooser.acceptAllFileFilter.textAndMnemonic
=
*
FileChooser.cancelButtonText
=
\u
53D6
\u
6D88
FileChooser.cancelButton.textAndMnemonic
=
\u
53D6
\u
6D88
FileChooser.saveButtonText
=
\u5132\u
5B58
FileChooser.saveButton.textAndMnemonic
=
\u5132\u
5B58
FileChooser.openButtonText
=
\u
78BA
\u
5B9A
FileChooser.openButton.textAndMnemonic
=
\u
78BA
\u
5B9A
FileChooser.saveDialogTitleText
=
\u5132\u
5B58
FileChooser.saveDialogTitle.textAndMnemonic
=
\u5132\u
5B58
FileChooser.openDialogTitleText
=
\u
958B
\u
555F
FileChooser.openDialogTitle.textAndMnemonic
=
\u
958B
\u
555F
FileChooser.updateButtonText
=
\u
66F4
\u
65B0
FileChooser.updateButton.textAndMnemonic
=
\u
66F4
\u
65B0
FileChooser.helpButtonText
=
\u
8AAA
\u
660E
FileChooser.helpButton.textAndMnemonic
=
\u
8AAA
\u
660E
FileChooser.pathLabelText
=
\u
8F38
\u5165\u
8DEF
\u
5F91
\u6216\u
8CC7
\u6599\u
593E
\u
540D
\u
7A31:
FileChooser.pathLabel.textAndMnemonic
=
\u
8F38
\u5165\u
8DEF
\u
5F91
\u6216\u
8CC7
\u6599\u
593E
\u
540D
\u
7A31(&P):
FileChooser.pathLabelMnemonic
=
80
FileChooser.filterLabel.textAndMnemonic
=
\u
7BE9
\u9078
(&R)
FileChooser.filterLabelText
=
\u
7BE9
\u9078
FileChooser.foldersLabel.textAndMnemonic
=
\u
8CC7
\u6599\u
593E(&L)
FileChooser.filterLabelMnemonic
=
82
FileChooser.filesLabel.textAndMnemonic
=
\u
6A94
\u6848
(&I)
FileChooser.foldersLabelText
=
\u
8CC7
\u6599\u
593E
FileChooser.enterFileNameLabel.textAndMnemonic
=
\u
8F38
\u5165\u
6A94
\u6848\u
540D
\u
7A31(&N):
FileChooser.foldersLabelMnemonic
=
76
FileChooser.enterFolderNameLabel.textAndMnemonic
=
\u
8F38
\u5165\u
8CC7
\u6599\u
593E
\u
540D
\u
7A31:
FileChooser.filesLabelText
=
\u
6A94
\u6848
FileChooser.filesLabelMnemonic
=
73
FileChooser.enterFileNameLabelText
=
\u
8F38
\u5165\u
6A94
\u6848\u
540D
\u
7A31:
FileChooser.enterFileNameLabelMnemonic
=
78
FileChooser.enterFolderNameLabelText
=
\u
8F38
\u5165\u
8CC7
\u6599\u
593E
\u
540D
\u
7A31:
FileChooser.cancelButtonToolTip
Text
=
\u
4E2D
\u
6B62
\u
6A94
\u6848\u9078\u
64C7
\u5668\u
5C0D
\u
8A71
\u
65B9
\u
584A
\u3002
FileChooser.cancelButtonToolTip
.textAndMnemonic
=
\u
4E2D
\u
6B62
\u
6A94
\u6848\u9078\u
64C7
\u5668\u
5C0D
\u
8A71
\u
65B9
\u
584A
\u3002
FileChooser.saveButtonToolTip
Text
=
\u5132\u
5B58
\u9078\u
53D6
\u7684\u
6A94
\u6848\u3002
FileChooser.saveButtonToolTip
.textAndMnemonic
=
\u5132\u
5B58
\u9078\u
53D6
\u7684\u
6A94
\u6848\u3002
FileChooser.openButtonToolTip
Text
=
\u
958B
\u
555F
\u9078\u
53D6
\u7684\u
6A94
\u6848\u3002
FileChooser.openButtonToolTip
.textAndMnemonic
=
\u
958B
\u
555F
\u9078\u
53D6
\u7684\u
6A94
\u6848\u3002
FileChooser.updateButtonToolTip
Text
=
\u
66F4
\u
65B0
\u
76EE
\u9304\u
6E05
\u
55AE
\u3002
FileChooser.updateButtonToolTip
.textAndMnemonic
=
\u
66F4
\u
65B0
\u
76EE
\u9304\u
6E05
\u
55AE
\u3002
FileChooser.helpButtonToolTip
Text
=
\u
300C
\u
6A94
\u6848\u9078\u
64C7
\u5668\u
300D
\u
8AAA
\u
660E
\u3002
FileChooser.helpButtonToolTip
.textAndMnemonic
=
\u
300C
\u
6A94
\u6848\u9078\u
64C7
\u5668\u
300D
\u
8AAA
\u
660E
\u3002
src/share/classes/com/sun/java/swing/plaf/windows/resources/windows.properties
浏览文件 @
f63cb0a6
...
@@ -18,34 +18,30 @@
...
@@ -18,34 +18,30 @@
############ FILE CHOOSER STRINGS #############
############ FILE CHOOSER STRINGS #############
FileChooser.lookInLabelText
=
Look in:
FileChooser.lookInLabel.textAndMnemonic
=
Look &in:
FileChooser.lookInLabelMnemonic
=
73
FileChooser.saveInLabel.textAndMnemonic
=
Save in:
FileChooser.saveInLabelText
=
Save in:
FileChooser.fileNameLabel.textAndMnemonic
=
File &name:
FileChooser.fileNameLabelText
=
File name:
FileChooser.folderNameLabel.textAndMnemonic
=
Folder &name:
FileChooser.fileNameLabelMnemonic
=
78
FileChooser.filesOfTypeLabel.textAndMnemonic
=
Files of &type:
FileChooser.folderNameLabelText
=
Folder name:
FileChooser.upFolderToolTip.textAndMnemonic
=
Up One Level
FileChooser.folderNameLabelMnemonic
=
78
FileChooser.filesOfTypeLabelText
=
Files of type:
FileChooser.filesOfTypeLabelMnemonic
=
84
FileChooser.upFolderToolTipText
=
Up One Level
FileChooser.upFolderAccessibleName
=
Up
FileChooser.upFolderAccessibleName
=
Up
FileChooser.homeFolderToolTip
Text
=
Home
FileChooser.homeFolderToolTip
.textAndMnemonic
=
Home
FileChooser.homeFolderAccessibleName
=
Home
FileChooser.homeFolderAccessibleName
=
Home
FileChooser.newFolderToolTip
Text
=
Create New Folder
FileChooser.newFolderToolTip
.textAndMnemonic
=
Create New Folder
FileChooser.newFolderAccessibleName
=
New Folder
FileChooser.newFolderAccessibleName
=
New Folder
FileChooser.newFolderActionLabel
Text
=
New Folder
FileChooser.newFolderActionLabel
.textAndMnemonic
=
New Folder
FileChooser.listViewButtonToolTip
Text
=
List
FileChooser.listViewButtonToolTip
.textAndMnemonic
=
List
FileChooser.listViewButtonAccessibleName
=
List
FileChooser.listViewButtonAccessibleName
=
List
FileChooser.listViewActionLabel
Text
=
List
FileChooser.listViewActionLabel
.textAndMnemonic
=
List
FileChooser.detailsViewButtonToolTip
Text
=
Details
FileChooser.detailsViewButtonToolTip
.textAndMnemonic
=
Details
FileChooser.detailsViewButtonAccessibleName
=
Details
FileChooser.detailsViewButtonAccessibleName
=
Details
FileChooser.viewMenuButtonToolTipText
=
View Menu
FileChooser.viewMenuButtonToolTipText
=
View Menu
FileChooser.viewMenuButtonAccessibleName
=
View Menu
FileChooser.viewMenuButtonAccessibleName
=
View Menu
FileChooser.detailsViewActionLabel
Text
=
Details
FileChooser.detailsViewActionLabel
.textAndMnemonic
=
Details
FileChooser.refreshActionLabel
Text
=
Refresh
FileChooser.refreshActionLabel
.textAndMnemonic
=
Refresh
FileChooser.viewMenuLabel
Text
=
View
FileChooser.viewMenuLabel
.textAndMnemonic
=
View
FileChooser.fileNameHeader
Text
=
Name
FileChooser.fileNameHeader
.textAndMnemonic
=
Name
FileChooser.fileSizeHeader
Text
=
Size
FileChooser.fileSizeHeader
.textAndMnemonic
=
Size
FileChooser.fileTypeHeader
Text
=
Type
FileChooser.fileTypeHeader
.textAndMnemonic
=
Type
FileChooser.fileDateHeader
Text
=
Modified
FileChooser.fileDateHeader
.textAndMnemonic
=
Modified
FileChooser.fileAttrHeader
Text
=
Attributes
FileChooser.fileAttrHeader
.textAndMnemonic
=
Attributes
src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_de.properties
浏览文件 @
f63cb0a6
...
@@ -18,34 +18,30 @@
...
@@ -18,34 +18,30 @@
############ FILE CHOOSER STRINGS #############
############ FILE CHOOSER STRINGS #############
FileChooser.lookInLabelText
=
Suchen in:
FileChooser.lookInLabel.textAndMnemonic
=
Suchen &in:
FileChooser.lookInLabelMnemonic
=
73
FileChooser.saveInLabel.textAndMnemonic
=
Speichern in:
FileChooser.saveInLabelText
=
Speichern in:
FileChooser.fileNameLabel.textAndMnemonic
=
Datei&name:
FileChooser.fileNameLabelText
=
Dateiname:
FileChooser.folderNameLabel.textAndMnemonic
=
Ord&nername:
FileChooser.fileNameLabelMnemonic
=
78
FileChooser.filesOfTypeLabel.textAndMnemonic
=
Da&teityp:
FileChooser.folderNameLabelText
=
Ordnername:
FileChooser.upFolderToolTip.textAndMnemonic
=
Eine Ebene h
\u
00F6her
FileChooser.folderNameLabelMnemonic
=
78
FileChooser.filesOfTypeLabelText
=
Dateityp:
FileChooser.filesOfTypeLabelMnemonic
=
84
FileChooser.upFolderToolTipText
=
Eine Ebene h
\u
00F6her
FileChooser.upFolderAccessibleName
=
Nach oben
FileChooser.upFolderAccessibleName
=
Nach oben
FileChooser.homeFolderToolTip
Text
=
Home
FileChooser.homeFolderToolTip
.textAndMnemonic
=
Home
FileChooser.homeFolderAccessibleName
=
Home
FileChooser.homeFolderAccessibleName
=
Home
FileChooser.newFolderToolTip
Text
=
Neuen Ordner erstellen
FileChooser.newFolderToolTip
.textAndMnemonic
=
Neuen Ordner erstellen
FileChooser.newFolderAccessibleName
=
Neuer Ordner
FileChooser.newFolderAccessibleName
=
Neuer Ordner
FileChooser.newFolderActionLabel
Text
=
Neuer Ordner
FileChooser.newFolderActionLabel
.textAndMnemonic
=
Neuer Ordner
FileChooser.listViewButtonToolTip
Text
=
Liste
FileChooser.listViewButtonToolTip
.textAndMnemonic
=
Liste
FileChooser.listViewButtonAccessibleName
=
Liste
FileChooser.listViewButtonAccessibleName
=
Liste
FileChooser.listViewActionLabel
Text
=
Liste
FileChooser.listViewActionLabel
.textAndMnemonic
=
Liste
FileChooser.detailsViewButtonToolTip
Text
=
Details
FileChooser.detailsViewButtonToolTip
.textAndMnemonic
=
Details
FileChooser.detailsViewButtonAccessibleName
=
Details
FileChooser.detailsViewButtonAccessibleName
=
Details
FileChooser.viewMenuButtonToolTipText
=
Ansichtsmen
\u
00FC
FileChooser.viewMenuButtonToolTipText
=
Ansichtsmen
\u
00FC
FileChooser.viewMenuButtonAccessibleName
=
Ansichtsmen
\u
00FC
FileChooser.viewMenuButtonAccessibleName
=
Ansichtsmen
\u
00FC
FileChooser.detailsViewActionLabel
Text
=
Details
FileChooser.detailsViewActionLabel
.textAndMnemonic
=
Details
FileChooser.refreshActionLabel
Text
=
Aktualisieren
FileChooser.refreshActionLabel
.textAndMnemonic
=
Aktualisieren
FileChooser.viewMenuLabel
Text
=
Ansicht
FileChooser.viewMenuLabel
.textAndMnemonic
=
Ansicht
FileChooser.fileNameHeader
Text
=
Name
FileChooser.fileNameHeader
.textAndMnemonic
=
Name
FileChooser.fileSizeHeader
Text
=
Gr
\u
00F6
\u
00DFe
FileChooser.fileSizeHeader
.textAndMnemonic
=
Gr
\u
00F6
\u
00DFe
FileChooser.fileTypeHeader
Text
=
Typ
FileChooser.fileTypeHeader
.textAndMnemonic
=
Typ
FileChooser.fileDateHeader
Text
=
Ge
\u
00E4ndert
FileChooser.fileDateHeader
.textAndMnemonic
=
Ge
\u
00E4ndert
FileChooser.fileAttrHeader
Text
=
Attribute
FileChooser.fileAttrHeader
.textAndMnemonic
=
Attribute
src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_es.properties
浏览文件 @
f63cb0a6
...
@@ -18,34 +18,30 @@
...
@@ -18,34 +18,30 @@
############ FILE CHOOSER STRINGS #############
############ FILE CHOOSER STRINGS #############
FileChooser.lookInLabelText
=
Buscar en:
FileChooser.lookInLabel.textAndMnemonic
=
Buscar en(&I):
FileChooser.lookInLabelMnemonic
=
73
FileChooser.saveInLabel.textAndMnemonic
=
Guardar en:
FileChooser.saveInLabelText
=
Guardar en:
FileChooser.fileNameLabel.textAndMnemonic
=
&Nombre de Archivo:
FileChooser.fileNameLabelText
=
Nombre de Archivo:
FileChooser.folderNameLabel.textAndMnemonic
=
&Nombre de la Carpeta:
FileChooser.fileNameLabelMnemonic
=
78
FileChooser.filesOfTypeLabel.textAndMnemonic
=
Archivos de &Tipo:
FileChooser.folderNameLabelText
=
Nombre de la Carpeta:
FileChooser.upFolderToolTip.textAndMnemonic
=
Subir un Nivel
FileChooser.folderNameLabelMnemonic
=
78
FileChooser.filesOfTypeLabelText
=
Archivos de Tipo:
FileChooser.filesOfTypeLabelMnemonic
=
84
FileChooser.upFolderToolTipText
=
Subir un Nivel
FileChooser.upFolderAccessibleName
=
Arriba
FileChooser.upFolderAccessibleName
=
Arriba
FileChooser.homeFolderToolTip
Text
=
Inicio
FileChooser.homeFolderToolTip
.textAndMnemonic
=
Inicio
FileChooser.homeFolderAccessibleName
=
Inicio
FileChooser.homeFolderAccessibleName
=
Inicio
FileChooser.newFolderToolTip
Text
=
Crear Nueva Carpeta
FileChooser.newFolderToolTip
.textAndMnemonic
=
Crear Nueva Carpeta
FileChooser.newFolderAccessibleName
=
Nueva Carpeta
FileChooser.newFolderAccessibleName
=
Nueva Carpeta
FileChooser.newFolderActionLabel
Text
=
Nueva Carpeta
FileChooser.newFolderActionLabel
.textAndMnemonic
=
Nueva Carpeta
FileChooser.listViewButtonToolTip
Text
=
Lista
FileChooser.listViewButtonToolTip
.textAndMnemonic
=
Lista
FileChooser.listViewButtonAccessibleName
=
Lista
FileChooser.listViewButtonAccessibleName
=
Lista
FileChooser.listViewActionLabel
Text
=
Lista
FileChooser.listViewActionLabel
.textAndMnemonic
=
Lista
FileChooser.detailsViewButtonToolTip
Text
=
Detalles
FileChooser.detailsViewButtonToolTip
.textAndMnemonic
=
Detalles
FileChooser.detailsViewButtonAccessibleName
=
Detalles
FileChooser.detailsViewButtonAccessibleName
=
Detalles
FileChooser.viewMenuButtonToolTipText
=
Men
\u
00FA Ver
FileChooser.viewMenuButtonToolTipText
=
Men
\u
00FA Ver
FileChooser.viewMenuButtonAccessibleName
=
Men
\u
00FA Ver
FileChooser.viewMenuButtonAccessibleName
=
Men
\u
00FA Ver
FileChooser.detailsViewActionLabel
Text
=
Detalles
FileChooser.detailsViewActionLabel
.textAndMnemonic
=
Detalles
FileChooser.refreshActionLabel
Text
=
Refrescar
FileChooser.refreshActionLabel
.textAndMnemonic
=
Refrescar
FileChooser.viewMenuLabel
Text
=
Ver
FileChooser.viewMenuLabel
.textAndMnemonic
=
Ver
FileChooser.fileNameHeader
Text
=
Nombre
FileChooser.fileNameHeader
.textAndMnemonic
=
Nombre
FileChooser.fileSizeHeader
Text
=
Tama
\u
00F1o
FileChooser.fileSizeHeader
.textAndMnemonic
=
Tama
\u
00F1o
FileChooser.fileTypeHeader
Text
=
Tipo
FileChooser.fileTypeHeader
.textAndMnemonic
=
Tipo
FileChooser.fileDateHeader
Text
=
Modificado
FileChooser.fileDateHeader
.textAndMnemonic
=
Modificado
FileChooser.fileAttrHeader
Text
=
Atributos
FileChooser.fileAttrHeader
.textAndMnemonic
=
Atributos
src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_fr.properties
浏览文件 @
f63cb0a6
...
@@ -18,34 +18,30 @@
...
@@ -18,34 +18,30 @@
############ FILE CHOOSER STRINGS #############
############ FILE CHOOSER STRINGS #############
FileChooser.lookInLabelText
=
Rechercher dans :
FileChooser.lookInLabel.textAndMnemonic
=
Rechercher dans (&I):
FileChooser.lookInLabelMnemonic
=
73
FileChooser.saveInLabel.textAndMnemonic
=
Enregistrer dans :
FileChooser.saveInLabelText
=
Enregistrer dans :
FileChooser.fileNameLabel.textAndMnemonic
=
&Nom du fichier :
FileChooser.fileNameLabelText
=
Nom du fichier :
FileChooser.folderNameLabel.textAndMnemonic
=
&Nom du dossier :
FileChooser.fileNameLabelMnemonic
=
78
FileChooser.filesOfTypeLabel.textAndMnemonic
=
Fichiers de &type :
FileChooser.folderNameLabelText
=
Nom du dossier :
FileChooser.upFolderToolTip.textAndMnemonic
=
Remonte d'un niveau.
FileChooser.folderNameLabelMnemonic
=
78
FileChooser.filesOfTypeLabelText
=
Fichiers de type :
FileChooser.filesOfTypeLabelMnemonic
=
84
FileChooser.upFolderToolTipText
=
Remonte d'un niveau.
FileChooser.upFolderAccessibleName
=
Monter
FileChooser.upFolderAccessibleName
=
Monter
FileChooser.homeFolderToolTip
Text
=
R
\u
00E9pertoire d'origine
FileChooser.homeFolderToolTip
.textAndMnemonic
=
R
\u
00E9pertoire d'origine
FileChooser.homeFolderAccessibleName
=
R
\u
00E9pertoire d'origine
FileChooser.homeFolderAccessibleName
=
R
\u
00E9pertoire d'origine
FileChooser.newFolderToolTip
Text
=
Cr
\u
00E9e un dossier.
FileChooser.newFolderToolTip
.textAndMnemonic
=
Cr
\u
00E9e un dossier.
FileChooser.newFolderAccessibleName
=
Nouveau dossier
FileChooser.newFolderAccessibleName
=
Nouveau dossier
FileChooser.newFolderActionLabel
Text
=
Nouveau dossier
FileChooser.newFolderActionLabel
.textAndMnemonic
=
Nouveau dossier
FileChooser.listViewButtonToolTip
Text
=
Liste
FileChooser.listViewButtonToolTip
.textAndMnemonic
=
Liste
FileChooser.listViewButtonAccessibleName
=
Liste
FileChooser.listViewButtonAccessibleName
=
Liste
FileChooser.listViewActionLabel
Text
=
Liste
FileChooser.listViewActionLabel
.textAndMnemonic
=
Liste
FileChooser.detailsViewButtonToolTip
Text
=
D
\u
00E9tails
FileChooser.detailsViewButtonToolTip
.textAndMnemonic
=
D
\u
00E9tails
FileChooser.detailsViewButtonAccessibleName
=
D
\u
00E9tails
FileChooser.detailsViewButtonAccessibleName
=
D
\u
00E9tails
FileChooser.viewMenuButtonToolTipText
=
Menu Affichage
FileChooser.viewMenuButtonToolTipText
=
Menu Affichage
FileChooser.viewMenuButtonAccessibleName
=
Menu Affichage
FileChooser.viewMenuButtonAccessibleName
=
Menu Affichage
FileChooser.detailsViewActionLabel
Text
=
D
\u
00E9tails
FileChooser.detailsViewActionLabel
.textAndMnemonic
=
D
\u
00E9tails
FileChooser.refreshActionLabel
Text
=
Actualiser
FileChooser.refreshActionLabel
.textAndMnemonic
=
Actualiser
FileChooser.viewMenuLabel
Text
=
Affichage
FileChooser.viewMenuLabel
.textAndMnemonic
=
Affichage
FileChooser.fileNameHeader
Text
=
Nom
FileChooser.fileNameHeader
.textAndMnemonic
=
Nom
FileChooser.fileSizeHeader
Text
=
Taille
FileChooser.fileSizeHeader
.textAndMnemonic
=
Taille
FileChooser.fileTypeHeader
Text
=
Type
FileChooser.fileTypeHeader
.textAndMnemonic
=
Type
FileChooser.fileDateHeader
Text
=
Modifi
\u
00E9
FileChooser.fileDateHeader
.textAndMnemonic
=
Modifi
\u
00E9
FileChooser.fileAttrHeader
Text
=
Attributs
FileChooser.fileAttrHeader
.textAndMnemonic
=
Attributs
src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_it.properties
浏览文件 @
f63cb0a6
...
@@ -18,34 +18,30 @@
...
@@ -18,34 +18,30 @@
############ FILE CHOOSER STRINGS #############
############ FILE CHOOSER STRINGS #############
FileChooser.lookInLabelText
=
Cerca in:
FileChooser.lookInLabel.textAndMnemonic
=
Cerca &in:
FileChooser.lookInLabelMnemonic
=
73
FileChooser.saveInLabel.textAndMnemonic
=
Salva in:
FileChooser.saveInLabelText
=
Salva in:
FileChooser.fileNameLabel.textAndMnemonic
=
&Nome file:
FileChooser.fileNameLabelText
=
Nome file:
FileChooser.folderNameLabel.textAndMnemonic
=
&Nome della cartella:
FileChooser.fileNameLabelMnemonic
=
78
FileChooser.filesOfTypeLabel.textAndMnemonic
=
&Tipo file:
FileChooser.folderNameLabelText
=
Nome della cartella:
FileChooser.upFolderToolTip.textAndMnemonic
=
Cartella superiore
FileChooser.folderNameLabelMnemonic
=
78
FileChooser.filesOfTypeLabelText
=
Tipo file:
FileChooser.filesOfTypeLabelMnemonic
=
84
FileChooser.upFolderToolTipText
=
Cartella superiore
FileChooser.upFolderAccessibleName
=
Superiore
FileChooser.upFolderAccessibleName
=
Superiore
FileChooser.homeFolderToolTip
Text
=
Home
FileChooser.homeFolderToolTip
.textAndMnemonic
=
Home
FileChooser.homeFolderAccessibleName
=
Home
FileChooser.homeFolderAccessibleName
=
Home
FileChooser.newFolderToolTip
Text
=
Crea nuova cartella
FileChooser.newFolderToolTip
.textAndMnemonic
=
Crea nuova cartella
FileChooser.newFolderAccessibleName
=
Nuova cartella
FileChooser.newFolderAccessibleName
=
Nuova cartella
FileChooser.newFolderActionLabel
Text
=
Nuova cartella
FileChooser.newFolderActionLabel
.textAndMnemonic
=
Nuova cartella
FileChooser.listViewButtonToolTip
Text
=
Lista
FileChooser.listViewButtonToolTip
.textAndMnemonic
=
Lista
FileChooser.listViewButtonAccessibleName
=
Lista
FileChooser.listViewButtonAccessibleName
=
Lista
FileChooser.listViewActionLabel
Text
=
Lista
FileChooser.listViewActionLabel
.textAndMnemonic
=
Lista
FileChooser.detailsViewButtonToolTip
Text
=
Dettagli
FileChooser.detailsViewButtonToolTip
.textAndMnemonic
=
Dettagli
FileChooser.detailsViewButtonAccessibleName
=
Dettagli
FileChooser.detailsViewButtonAccessibleName
=
Dettagli
FileChooser.viewMenuButtonToolTipText
=
Visualizza menu
FileChooser.viewMenuButtonToolTipText
=
Visualizza menu
FileChooser.viewMenuButtonAccessibleName
=
Visualizza menu
FileChooser.viewMenuButtonAccessibleName
=
Visualizza menu
FileChooser.detailsViewActionLabel
Text
=
Dettagli
FileChooser.detailsViewActionLabel
.textAndMnemonic
=
Dettagli
FileChooser.refreshActionLabel
Text
=
Aggiorna
FileChooser.refreshActionLabel
.textAndMnemonic
=
Aggiorna
FileChooser.viewMenuLabel
Text
=
Visualizza
FileChooser.viewMenuLabel
.textAndMnemonic
=
Visualizza
FileChooser.fileNameHeader
Text
=
Nome
FileChooser.fileNameHeader
.textAndMnemonic
=
Nome
FileChooser.fileSizeHeader
Text
=
Dimensioni
FileChooser.fileSizeHeader
.textAndMnemonic
=
Dimensioni
FileChooser.fileTypeHeader
Text
=
Tipo
FileChooser.fileTypeHeader
.textAndMnemonic
=
Tipo
FileChooser.fileDateHeader
Text
=
Modificato
FileChooser.fileDateHeader
.textAndMnemonic
=
Modificato
FileChooser.fileAttrHeader
Text
=
Attributi
FileChooser.fileAttrHeader
.textAndMnemonic
=
Attributi
src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_ja.properties
浏览文件 @
f63cb0a6
...
@@ -18,34 +18,30 @@
...
@@ -18,34 +18,30 @@
############ FILE CHOOSER STRINGS #############
############ FILE CHOOSER STRINGS #############
FileChooser.lookInLabelText
=
\u
53C2
\u7167
:
FileChooser.lookInLabel.textAndMnemonic
=
\u
53C2
\u7167
(&I):
FileChooser.lookInLabelMnemonic
=
73
FileChooser.saveInLabel.textAndMnemonic
=
\u
4FDD
\u
5B58:
FileChooser.saveInLabelText
=
\u
4FDD
\u
5B58:
FileChooser.fileNameLabel.textAndMnemonic
=
\u
30D5
\u
30A1
\u
30A4
\u
30EB
\u
540D(&N):
FileChooser.fileNameLabelText
=
\u
30D5
\u
30A1
\u
30A4
\u
30EB
\u
540D:
FileChooser.folderNameLabel.textAndMnemonic
=
\u
30D5
\u
30A9
\u
30EB
\u
30C0
\u
540D(&N):
FileChooser.fileNameLabelMnemonic
=
78
FileChooser.filesOfTypeLabel.textAndMnemonic
=
\u
30D5
\u
30A1
\u
30A4
\u
30EB
\u
306E
\u
30BF
\u
30A4
\u
30D7(&T):
FileChooser.folderNameLabelText
=
\u
30D5
\u
30A9
\u
30EB
\u
30C0
\u
540D:
FileChooser.upFolderToolTip.textAndMnemonic
=
1
\u
30EC
\u
30D9
\u
30EB
\u
4E0A
\u3078
FileChooser.folderNameLabelMnemonic
=
78
FileChooser.filesOfTypeLabelText
=
\u
30D5
\u
30A1
\u
30A4
\u
30EB
\u
306E
\u
30BF
\u
30A4
\u
30D7:
FileChooser.filesOfTypeLabelMnemonic
=
84
FileChooser.upFolderToolTipText
=
1
\u
30EC
\u
30D9
\u
30EB
\u
4E0A
\u3078
FileChooser.upFolderAccessibleName
=
\u
4E0A
\u3078
FileChooser.upFolderAccessibleName
=
\u
4E0A
\u3078
FileChooser.homeFolderToolTip
Text
=
\u
30DB
\u
30FC
\u
30E0
FileChooser.homeFolderToolTip
.textAndMnemonic
=
\u
30DB
\u
30FC
\u
30E0
FileChooser.homeFolderAccessibleName
=
\u
30DB
\u
30FC
\u
30E0
FileChooser.homeFolderAccessibleName
=
\u
30DB
\u
30FC
\u
30E0
FileChooser.newFolderToolTip
Text
=
\u
65B0
\u
898F
\u
30D5
\u
30A9
\u
30EB
\u
30C0
\u
306E
\u
4F5C
\u6210
FileChooser.newFolderToolTip
.textAndMnemonic
=
\u
65B0
\u
898F
\u
30D5
\u
30A9
\u
30EB
\u
30C0
\u
306E
\u
4F5C
\u6210
FileChooser.newFolderAccessibleName
=
\u
65B0
\u
898F
\u
30D5
\u
30A9
\u
30EB
\u
30C0
FileChooser.newFolderAccessibleName
=
\u
65B0
\u
898F
\u
30D5
\u
30A9
\u
30EB
\u
30C0
FileChooser.newFolderActionLabel
Text
=
\u
65B0
\u
898F
\u
30D5
\u
30A9
\u
30EB
\u
30C0
FileChooser.newFolderActionLabel
.textAndMnemonic
=
\u
65B0
\u
898F
\u
30D5
\u
30A9
\u
30EB
\u
30C0
FileChooser.listViewButtonToolTip
Text
=
\u
30EA
\u
30B9
\u
30C8
FileChooser.listViewButtonToolTip
.textAndMnemonic
=
\u
30EA
\u
30B9
\u
30C8
FileChooser.listViewButtonAccessibleName
=
\u
30EA
\u
30B9
\u
30C8
FileChooser.listViewButtonAccessibleName
=
\u
30EA
\u
30B9
\u
30C8
FileChooser.listViewActionLabel
Text
=
\u
30EA
\u
30B9
\u
30C8
FileChooser.listViewActionLabel
.textAndMnemonic
=
\u
30EA
\u
30B9
\u
30C8
FileChooser.detailsViewButtonToolTip
Text
=
\u
8A73
\u
7D30
FileChooser.detailsViewButtonToolTip
.textAndMnemonic
=
\u
8A73
\u
7D30
FileChooser.detailsViewButtonAccessibleName
=
\u
8A73
\u
7D30
FileChooser.detailsViewButtonAccessibleName
=
\u
8A73
\u
7D30
FileChooser.viewMenuButtonToolTipText
=
\u8868\u
793A
\u
30E1
\u
30CB
\u
30E5
\u
30FC
FileChooser.viewMenuButtonToolTipText
=
\u8868\u
793A
\u
30E1
\u
30CB
\u
30E5
\u
30FC
FileChooser.viewMenuButtonAccessibleName
=
\u8868\u
793A
\u
30E1
\u
30CB
\u
30E5
\u
30FC
FileChooser.viewMenuButtonAccessibleName
=
\u8868\u
793A
\u
30E1
\u
30CB
\u
30E5
\u
30FC
FileChooser.detailsViewActionLabel
Text
=
\u
8A73
\u
7D30
FileChooser.detailsViewActionLabel
.textAndMnemonic
=
\u
8A73
\u
7D30
FileChooser.refreshActionLabel
Text
=
\u
30EA
\u
30D5
\u
30EC
\u
30C3
\u
30B7
\u
30E5
FileChooser.refreshActionLabel
.textAndMnemonic
=
\u
30EA
\u
30D5
\u
30EC
\u
30C3
\u
30B7
\u
30E5
FileChooser.viewMenuLabel
Text
=
\u8868\u
793A
FileChooser.viewMenuLabel
.textAndMnemonic
=
\u8868\u
793A
FileChooser.fileNameHeader
Text
=
\u
540D
\u
524D
FileChooser.fileNameHeader
.textAndMnemonic
=
\u
540D
\u
524D
FileChooser.fileSizeHeader
Text
=
\u
30B5
\u
30A4
\u
30BA
FileChooser.fileSizeHeader
.textAndMnemonic
=
\u
30B5
\u
30A4
\u
30BA
FileChooser.fileTypeHeader
Text
=
\u
30BF
\u
30A4
\u
30D7
FileChooser.fileTypeHeader
.textAndMnemonic
=
\u
30BF
\u
30A4
\u
30D7
FileChooser.fileDateHeader
Text
=
\u
4FEE
\u
6B63
\u
65E5
FileChooser.fileDateHeader
.textAndMnemonic
=
\u
4FEE
\u
6B63
\u
65E5
FileChooser.fileAttrHeader
Text
=
\u
5C5E
\u6027
FileChooser.fileAttrHeader
.textAndMnemonic
=
\u
5C5E
\u6027
src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_ko.properties
浏览文件 @
f63cb0a6
...
@@ -18,34 +18,30 @@
...
@@ -18,34 +18,30 @@
############ FILE CHOOSER STRINGS #############
############ FILE CHOOSER STRINGS #############
FileChooser.lookInLabelText
=
\u
AC80
\u
C0C9
\u
C704
\u
CE58:
FileChooser.lookInLabel.textAndMnemonic
=
\u
AC80
\u
C0C9
\u
C704
\u
CE58(&I):
FileChooser.lookInLabelMnemonic
=
73
FileChooser.saveInLabel.textAndMnemonic
=
\u
C800
\u
C7A5
\u
C704
\u
CE58:
FileChooser.saveInLabelText
=
\u
C800
\u
C7A5
\u
C704
\u
CE58:
FileChooser.fileNameLabel.textAndMnemonic
=
\u
D30C
\u
C77C
\u
C774
\u
B984(&N):
FileChooser.fileNameLabelText
=
\u
D30C
\u
C77C
\u
C774
\u
B984:
FileChooser.folderNameLabel.textAndMnemonic
=
\u
D3F4
\u
B354
\u
C774
\u
B984(&N):
FileChooser.fileNameLabelMnemonic
=
78
FileChooser.filesOfTypeLabel.textAndMnemonic
=
\u
D30C
\u
C77C
\u
C720
\u
D615(&T):
FileChooser.folderNameLabelText
=
\u
D3F4
\u
B354
\u
C774
\u
B984:
FileChooser.upFolderToolTip.textAndMnemonic
=
\u
D55C
\u
B808
\u
BCA8
\u
C704
\u
B85C
FileChooser.folderNameLabelMnemonic
=
78
FileChooser.filesOfTypeLabelText
=
\u
D30C
\u
C77C
\u
C720
\u
D615:
FileChooser.filesOfTypeLabelMnemonic
=
84
FileChooser.upFolderToolTipText
=
\u
D55C
\u
B808
\u
BCA8
\u
C704
\u
B85C
FileChooser.upFolderAccessibleName
=
\u
C704
\u
B85C
FileChooser.upFolderAccessibleName
=
\u
C704
\u
B85C
FileChooser.homeFolderToolTip
Text
=
\u
D648
FileChooser.homeFolderToolTip
.textAndMnemonic
=
\u
D648
FileChooser.homeFolderAccessibleName
=
\u
D648
FileChooser.homeFolderAccessibleName
=
\u
D648
FileChooser.newFolderToolTip
Text
=
\u
C0C8
\u
D3F4
\u
B354
\u
C0DD
\u
C131
FileChooser.newFolderToolTip
.textAndMnemonic
=
\u
C0C8
\u
D3F4
\u
B354
\u
C0DD
\u
C131
FileChooser.newFolderAccessibleName
=
\u
C0C8
\u
D3F4
\u
B354
FileChooser.newFolderAccessibleName
=
\u
C0C8
\u
D3F4
\u
B354
FileChooser.newFolderActionLabel
Text
=
\u
C0C8
\u
D3F4
\u
B354
FileChooser.newFolderActionLabel
.textAndMnemonic
=
\u
C0C8
\u
D3F4
\u
B354
FileChooser.listViewButtonToolTip
Text
=
\u
BAA9
\u
B85D
FileChooser.listViewButtonToolTip
.textAndMnemonic
=
\u
BAA9
\u
B85D
FileChooser.listViewButtonAccessibleName
=
\u
BAA9
\u
B85D
FileChooser.listViewButtonAccessibleName
=
\u
BAA9
\u
B85D
FileChooser.listViewActionLabel
Text
=
\u
BAA9
\u
B85D
FileChooser.listViewActionLabel
.textAndMnemonic
=
\u
BAA9
\u
B85D
FileChooser.detailsViewButtonToolTip
Text
=
\u
C138
\u
BD80
\u
C815
\u
BCF4
FileChooser.detailsViewButtonToolTip
.textAndMnemonic
=
\u
C138
\u
BD80
\u
C815
\u
BCF4
FileChooser.detailsViewButtonAccessibleName
=
\u
C138
\u
BD80
\u
C815
\u
BCF4
FileChooser.detailsViewButtonAccessibleName
=
\u
C138
\u
BD80
\u
C815
\u
BCF4
FileChooser.viewMenuButtonToolTipText
=
\u
BCF4
\u
AE30
\u
BA54
\u
B274
FileChooser.viewMenuButtonToolTipText
=
\u
BCF4
\u
AE30
\u
BA54
\u
B274
FileChooser.viewMenuButtonAccessibleName
=
\u
BCF4
\u
AE30
\u
BA54
\u
B274
FileChooser.viewMenuButtonAccessibleName
=
\u
BCF4
\u
AE30
\u
BA54
\u
B274
FileChooser.detailsViewActionLabel
Text
=
\u
C138
\u
BD80
\u
C815
\u
BCF4
FileChooser.detailsViewActionLabel
.textAndMnemonic
=
\u
C138
\u
BD80
\u
C815
\u
BCF4
FileChooser.refreshActionLabel
Text
=
\u
C0C8
\u
B85C
\u
ACE0
\u
CE68
FileChooser.refreshActionLabel
.textAndMnemonic
=
\u
C0C8
\u
B85C
\u
ACE0
\u
CE68
FileChooser.viewMenuLabel
Text
=
\u
BCF4
\u
AE30
FileChooser.viewMenuLabel
.textAndMnemonic
=
\u
BCF4
\u
AE30
FileChooser.fileNameHeader
Text
=
\u
C774
\u
B984
FileChooser.fileNameHeader
.textAndMnemonic
=
\u
C774
\u
B984
FileChooser.fileSizeHeader
Text
=
\u
D06C
\u
AE30
FileChooser.fileSizeHeader
.textAndMnemonic
=
\u
D06C
\u
AE30
FileChooser.fileTypeHeader
Text
=
\u
C720
\u
D615
FileChooser.fileTypeHeader
.textAndMnemonic
=
\u
C720
\u
D615
FileChooser.fileDateHeader
Text
=
\u
C218
\u
C815
\u
B0A0
\u
C9DC
FileChooser.fileDateHeader
.textAndMnemonic
=
\u
C218
\u
C815
\u
B0A0
\u
C9DC
FileChooser.fileAttrHeader
Text
=
\u
C18D
\u
C131
FileChooser.fileAttrHeader
.textAndMnemonic
=
\u
C18D
\u
C131
src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_pt_BR.properties
浏览文件 @
f63cb0a6
...
@@ -18,34 +18,30 @@
...
@@ -18,34 +18,30 @@
############ FILE CHOOSER STRINGS #############
############ FILE CHOOSER STRINGS #############
FileChooser.lookInLabelText
=
Consultar em:
FileChooser.lookInLabel.textAndMnemonic
=
Consultar em(&I):
FileChooser.lookInLabelMnemonic
=
73
FileChooser.saveInLabel.textAndMnemonic
=
Salvar em:
FileChooser.saveInLabelText
=
Salvar em:
FileChooser.fileNameLabel.textAndMnemonic
=
&Nome do arquivo:
FileChooser.fileNameLabelText
=
Nome do arquivo:
FileChooser.folderNameLabel.textAndMnemonic
=
&Nome da pasta:
FileChooser.fileNameLabelMnemonic
=
78
FileChooser.filesOfTypeLabel.textAndMnemonic
=
Arquivos do &tipo:
FileChooser.folderNameLabelText
=
Nome da pasta:
FileChooser.upFolderToolTip.textAndMnemonic
=
Um N
\u
00EDvel Acima
FileChooser.folderNameLabelMnemonic
=
78
FileChooser.filesOfTypeLabelText
=
Arquivos do tipo:
FileChooser.filesOfTypeLabelMnemonic
=
84
FileChooser.upFolderToolTipText
=
Um N
\u
00EDvel Acima
FileChooser.upFolderAccessibleName
=
Acima
FileChooser.upFolderAccessibleName
=
Acima
FileChooser.homeFolderToolTip
Text
=
In
\u
00EDcio
FileChooser.homeFolderToolTip
.textAndMnemonic
=
In
\u
00EDcio
FileChooser.homeFolderAccessibleName
=
In
\u
00EDcio
FileChooser.homeFolderAccessibleName
=
In
\u
00EDcio
FileChooser.newFolderToolTip
Text
=
Criar Nova Pasta
FileChooser.newFolderToolTip
.textAndMnemonic
=
Criar Nova Pasta
FileChooser.newFolderAccessibleName
=
Nova Pasta
FileChooser.newFolderAccessibleName
=
Nova Pasta
FileChooser.newFolderActionLabel
Text
=
Nova Pasta
FileChooser.newFolderActionLabel
.textAndMnemonic
=
Nova Pasta
FileChooser.listViewButtonToolTip
Text
=
Lista
FileChooser.listViewButtonToolTip
.textAndMnemonic
=
Lista
FileChooser.listViewButtonAccessibleName
=
Lista
FileChooser.listViewButtonAccessibleName
=
Lista
FileChooser.listViewActionLabel
Text
=
Lista
FileChooser.listViewActionLabel
.textAndMnemonic
=
Lista
FileChooser.detailsViewButtonToolTip
Text
=
Detalhes
FileChooser.detailsViewButtonToolTip
.textAndMnemonic
=
Detalhes
FileChooser.detailsViewButtonAccessibleName
=
Detalhes
FileChooser.detailsViewButtonAccessibleName
=
Detalhes
FileChooser.viewMenuButtonToolTipText
=
Exibir Menu
FileChooser.viewMenuButtonToolTipText
=
Exibir Menu
FileChooser.viewMenuButtonAccessibleName
=
Exibir Menu
FileChooser.viewMenuButtonAccessibleName
=
Exibir Menu
FileChooser.detailsViewActionLabel
Text
=
Detalhes
FileChooser.detailsViewActionLabel
.textAndMnemonic
=
Detalhes
FileChooser.refreshActionLabel
Text
=
Atualizar
FileChooser.refreshActionLabel
.textAndMnemonic
=
Atualizar
FileChooser.viewMenuLabel
Text
=
Exibir
FileChooser.viewMenuLabel
.textAndMnemonic
=
Exibir
FileChooser.fileNameHeader
Text
=
Nome
FileChooser.fileNameHeader
.textAndMnemonic
=
Nome
FileChooser.fileSizeHeader
Text
=
Tamanho
FileChooser.fileSizeHeader
.textAndMnemonic
=
Tamanho
FileChooser.fileTypeHeader
Text
=
Tipo
FileChooser.fileTypeHeader
.textAndMnemonic
=
Tipo
FileChooser.fileDateHeader
Text
=
Modificado
FileChooser.fileDateHeader
.textAndMnemonic
=
Modificado
FileChooser.fileAttrHeader
Text
=
Atributos
FileChooser.fileAttrHeader
.textAndMnemonic
=
Atributos
src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_sv.properties
浏览文件 @
f63cb0a6
...
@@ -18,34 +18,30 @@
...
@@ -18,34 +18,30 @@
############ FILE CHOOSER STRINGS #############
############ FILE CHOOSER STRINGS #############
FileChooser.lookInLabelText
=
Leta i:
FileChooser.lookInLabel.textAndMnemonic
=
Leta &i:
FileChooser.lookInLabelMnemonic
=
73
FileChooser.saveInLabel.textAndMnemonic
=
Spara i:
FileChooser.saveInLabelText
=
Spara i:
FileChooser.fileNameLabel.textAndMnemonic
=
Fil&namn:
FileChooser.fileNameLabelText
=
Filnamn:
FileChooser.folderNameLabel.textAndMnemonic
=
Mapp(&N):
FileChooser.fileNameLabelMnemonic
=
78
FileChooser.filesOfTypeLabel.textAndMnemonic
=
Filforma&t:
FileChooser.folderNameLabelText
=
Mapp:
FileChooser.upFolderToolTip.textAndMnemonic
=
Upp en niv
\u
00E5
FileChooser.folderNameLabelMnemonic
=
78
FileChooser.filesOfTypeLabelText
=
Filformat:
FileChooser.filesOfTypeLabelMnemonic
=
84
FileChooser.upFolderToolTipText
=
Upp en niv
\u
00E5
FileChooser.upFolderAccessibleName
=
Upp
FileChooser.upFolderAccessibleName
=
Upp
FileChooser.homeFolderToolTip
Text
=
Hem
FileChooser.homeFolderToolTip
.textAndMnemonic
=
Hem
FileChooser.homeFolderAccessibleName
=
Hem
FileChooser.homeFolderAccessibleName
=
Hem
FileChooser.newFolderToolTip
Text
=
Skapa ny mapp
FileChooser.newFolderToolTip
.textAndMnemonic
=
Skapa ny mapp
FileChooser.newFolderAccessibleName
=
Ny mapp
FileChooser.newFolderAccessibleName
=
Ny mapp
FileChooser.newFolderActionLabel
Text
=
Ny mapp
FileChooser.newFolderActionLabel
.textAndMnemonic
=
Ny mapp
FileChooser.listViewButtonToolTip
Text
=
Lista
FileChooser.listViewButtonToolTip
.textAndMnemonic
=
Lista
FileChooser.listViewButtonAccessibleName
=
Lista
FileChooser.listViewButtonAccessibleName
=
Lista
FileChooser.listViewActionLabel
Text
=
Lista
FileChooser.listViewActionLabel
.textAndMnemonic
=
Lista
FileChooser.detailsViewButtonToolTip
Text
=
Detaljer
FileChooser.detailsViewButtonToolTip
.textAndMnemonic
=
Detaljer
FileChooser.detailsViewButtonAccessibleName
=
Detaljer
FileChooser.detailsViewButtonAccessibleName
=
Detaljer
FileChooser.viewMenuButtonToolTipText
=
Menyn Visa
FileChooser.viewMenuButtonToolTipText
=
Menyn Visa
FileChooser.viewMenuButtonAccessibleName
=
Menyn Visa
FileChooser.viewMenuButtonAccessibleName
=
Menyn Visa
FileChooser.detailsViewActionLabel
Text
=
Detaljer
FileChooser.detailsViewActionLabel
.textAndMnemonic
=
Detaljer
FileChooser.refreshActionLabel
Text
=
F
\u
00F6rnya
FileChooser.refreshActionLabel
.textAndMnemonic
=
F
\u
00F6rnya
FileChooser.viewMenuLabel
Text
=
Vy
FileChooser.viewMenuLabel
.textAndMnemonic
=
Vy
FileChooser.fileNameHeader
Text
=
Namn
FileChooser.fileNameHeader
.textAndMnemonic
=
Namn
FileChooser.fileSizeHeader
Text
=
Storlek
FileChooser.fileSizeHeader
.textAndMnemonic
=
Storlek
FileChooser.fileTypeHeader
Text
=
Typ
FileChooser.fileTypeHeader
.textAndMnemonic
=
Typ
FileChooser.fileDateHeader
Text
=
\u
00C4ndrad
FileChooser.fileDateHeader
.textAndMnemonic
=
\u
00C4ndrad
FileChooser.fileAttrHeader
Text
=
Attribut
FileChooser.fileAttrHeader
.textAndMnemonic
=
Attribut
src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_zh_CN.properties
浏览文件 @
f63cb0a6
...
@@ -18,34 +18,30 @@
...
@@ -18,34 +18,30 @@
############ FILE CHOOSER STRINGS #############
############ FILE CHOOSER STRINGS #############
FileChooser.lookInLabelText
=
\u
67E5
\u
770B:
FileChooser.lookInLabel.textAndMnemonic
=
\u
67E5
\u
770B: (&I)
FileChooser.lookInLabelMnemonic
=
73
FileChooser.saveInLabel.textAndMnemonic
=
\u
4FDD
\u
5B58:
FileChooser.saveInLabelText
=
\u
4FDD
\u
5B58:
FileChooser.fileNameLabel.textAndMnemonic
=
\u6587\u
4EF6
\u
540D: (&N)
FileChooser.fileNameLabelText
=
\u6587\u
4EF6
\u
540D:
FileChooser.folderNameLabel.textAndMnemonic
=
\u6587\u
4EF6
\u5939\u
540D: (&N)
FileChooser.fileNameLabelMnemonic
=
78
FileChooser.filesOfTypeLabel.textAndMnemonic
=
\u6587\u
4EF6
\u
7C7B
\u
578B: (&T)
FileChooser.folderNameLabelText
=
\u6587\u
4EF6
\u5939\u
540D:
FileChooser.upFolderToolTip.textAndMnemonic
=
\u5411\u
4E0A
\u
4E00
\u
7EA7
FileChooser.folderNameLabelMnemonic
=
78
FileChooser.filesOfTypeLabelText
=
\u6587\u
4EF6
\u
7C7B
\u
578B:
FileChooser.filesOfTypeLabelMnemonic
=
84
FileChooser.upFolderToolTipText
=
\u5411\u
4E0A
\u
4E00
\u
7EA7
FileChooser.upFolderAccessibleName
=
\u5411\u
4E0A
FileChooser.upFolderAccessibleName
=
\u5411\u
4E0A
FileChooser.homeFolderToolTip
Text
=
\u
4E3B
\u
76EE
\u
5F55
FileChooser.homeFolderToolTip
.textAndMnemonic
=
\u
4E3B
\u
76EE
\u
5F55
FileChooser.homeFolderAccessibleName
=
\u
4E3B
\u
76EE
\u
5F55
FileChooser.homeFolderAccessibleName
=
\u
4E3B
\u
76EE
\u
5F55
FileChooser.newFolderToolTip
Text
=
\u
521B
\u
5EFA
\u
65B0
\u6587\u
4EF6
\u5939
FileChooser.newFolderToolTip
.textAndMnemonic
=
\u
521B
\u
5EFA
\u
65B0
\u6587\u
4EF6
\u5939
FileChooser.newFolderAccessibleName
=
\u
65B0
\u
5EFA
\u6587\u
4EF6
\u5939
FileChooser.newFolderAccessibleName
=
\u
65B0
\u
5EFA
\u6587\u
4EF6
\u5939
FileChooser.newFolderActionLabel
Text
=
\u
65B0
\u
5EFA
\u6587\u
4EF6
\u5939
FileChooser.newFolderActionLabel
.textAndMnemonic
=
\u
65B0
\u
5EFA
\u6587\u
4EF6
\u5939
FileChooser.listViewButtonToolTip
Text
=
\u5217\u8868
FileChooser.listViewButtonToolTip
.textAndMnemonic
=
\u5217\u8868
FileChooser.listViewButtonAccessibleName
=
\u5217\u8868
FileChooser.listViewButtonAccessibleName
=
\u5217\u8868
FileChooser.listViewActionLabel
Text
=
\u5217\u8868
FileChooser.listViewActionLabel
.textAndMnemonic
=
\u5217\u8868
FileChooser.detailsViewButtonToolTip
Text
=
\u
8BE6
\u
7EC6
\u
8D44
\u6599
FileChooser.detailsViewButtonToolTip
.textAndMnemonic
=
\u
8BE6
\u
7EC6
\u
8D44
\u6599
FileChooser.detailsViewButtonAccessibleName
=
\u
8BE6
\u
7EC6
\u
8D44
\u6599
FileChooser.detailsViewButtonAccessibleName
=
\u
8BE6
\u
7EC6
\u
8D44
\u6599
FileChooser.viewMenuButtonToolTipText
=
\u
67E5
\u
770B
\u
83DC
\u5355
FileChooser.viewMenuButtonToolTipText
=
\u
67E5
\u
770B
\u
83DC
\u5355
FileChooser.viewMenuButtonAccessibleName
=
\u
67E5
\u
770B
\u
83DC
\u5355
FileChooser.viewMenuButtonAccessibleName
=
\u
67E5
\u
770B
\u
83DC
\u5355
FileChooser.detailsViewActionLabel
Text
=
\u
8BE6
\u
7EC6
\u
8D44
\u6599
FileChooser.detailsViewActionLabel
.textAndMnemonic
=
\u
8BE6
\u
7EC6
\u
8D44
\u6599
FileChooser.refreshActionLabel
Text
=
\u5237\u
65B0
FileChooser.refreshActionLabel
.textAndMnemonic
=
\u5237\u
65B0
FileChooser.viewMenuLabel
Text
=
\u
89C6
\u
56FE
FileChooser.viewMenuLabel
.textAndMnemonic
=
\u
89C6
\u
56FE
FileChooser.fileNameHeader
Text
=
\u
540D
\u
79F0
FileChooser.fileNameHeader
.textAndMnemonic
=
\u
540D
\u
79F0
FileChooser.fileSizeHeader
Text
=
\u5927\u
5C0F
FileChooser.fileSizeHeader
.textAndMnemonic
=
\u5927\u
5C0F
FileChooser.fileTypeHeader
Text
=
\u
7C7B
\u
578B
FileChooser.fileTypeHeader
.textAndMnemonic
=
\u
7C7B
\u
578B
FileChooser.fileDateHeader
Text
=
\u
4FEE
\u6539\u
65E5
\u
671F
FileChooser.fileDateHeader
.textAndMnemonic
=
\u
4FEE
\u6539\u
65E5
\u
671F
FileChooser.fileAttrHeader
Text
=
\u
5C5E
\u6027
FileChooser.fileAttrHeader
.textAndMnemonic
=
\u
5C5E
\u6027
src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_zh_TW.properties
浏览文件 @
f63cb0a6
...
@@ -18,34 +18,30 @@
...
@@ -18,34 +18,30 @@
############ FILE CHOOSER STRINGS #############
############ FILE CHOOSER STRINGS #############
FileChooser.lookInLabelText
=
\u
67E5
\u
8A62:
FileChooser.lookInLabel.textAndMnemonic
=
\u
67E5
\u
8A62(&I):
FileChooser.lookInLabelMnemonic
=
73
FileChooser.saveInLabel.textAndMnemonic
=
\u5132\u
5B58
\u
65BC:
FileChooser.saveInLabelText
=
\u5132\u
5B58
\u
65BC:
FileChooser.fileNameLabel.textAndMnemonic
=
\u
6A94
\u6848\u
540D
\u
7A31(&N):
FileChooser.fileNameLabelText
=
\u
6A94
\u6848\u
540D
\u
7A31:
FileChooser.folderNameLabel.textAndMnemonic
=
\u
8CC7
\u6599\u
593E
\u
540D
\u
7A31(&N):
FileChooser.fileNameLabelMnemonic
=
78
FileChooser.filesOfTypeLabel.textAndMnemonic
=
\u
6A94
\u6848\u
985E
\u
578B(&T):
FileChooser.folderNameLabelText
=
\u
8CC7
\u6599\u
593E
\u
540D
\u
7A31:
FileChooser.upFolderToolTip.textAndMnemonic
=
\u
5F80
\u
4E0A
\u
4E00
\u
5C64
FileChooser.folderNameLabelMnemonic
=
78
FileChooser.filesOfTypeLabelText
=
\u
6A94
\u6848\u
985E
\u
578B:
FileChooser.filesOfTypeLabelMnemonic
=
84
FileChooser.upFolderToolTipText
=
\u
5F80
\u
4E0A
\u
4E00
\u
5C64
FileChooser.upFolderAccessibleName
=
\u
5F80
\u
4E0A
FileChooser.upFolderAccessibleName
=
\u
5F80
\u
4E0A
FileChooser.homeFolderToolTip
Text
=
\u
4E3B
\u
76EE
\u9304
FileChooser.homeFolderToolTip
.textAndMnemonic
=
\u
4E3B
\u
76EE
\u9304
FileChooser.homeFolderAccessibleName
=
\u
4E3B
\u
76EE
\u9304
FileChooser.homeFolderAccessibleName
=
\u
4E3B
\u
76EE
\u9304
FileChooser.newFolderToolTip
Text
=
\u
5EFA
\u
7ACB
\u
65B0
\u
8CC7
\u6599\u
593E
FileChooser.newFolderToolTip
.textAndMnemonic
=
\u
5EFA
\u
7ACB
\u
65B0
\u
8CC7
\u6599\u
593E
FileChooser.newFolderAccessibleName
=
\u
65B0
\u
8CC7
\u6599\u
593E
FileChooser.newFolderAccessibleName
=
\u
65B0
\u
8CC7
\u6599\u
593E
FileChooser.newFolderActionLabel
Text
=
\u
65B0
\u
8CC7
\u6599\u
593E
FileChooser.newFolderActionLabel
.textAndMnemonic
=
\u
65B0
\u
8CC7
\u6599\u
593E
FileChooser.listViewButtonToolTip
Text
=
\u
6E05
\u
55AE
FileChooser.listViewButtonToolTip
.textAndMnemonic
=
\u
6E05
\u
55AE
FileChooser.listViewButtonAccessibleName
=
\u
6E05
\u
55AE
FileChooser.listViewButtonAccessibleName
=
\u
6E05
\u
55AE
FileChooser.listViewActionLabel
Text
=
\u
6E05
\u
55AE
FileChooser.listViewActionLabel
.textAndMnemonic
=
\u
6E05
\u
55AE
FileChooser.detailsViewButtonToolTip
Text
=
\u
8A73
\u
7D30
\u
8CC7
\u
8A0A
FileChooser.detailsViewButtonToolTip
.textAndMnemonic
=
\u
8A73
\u
7D30
\u
8CC7
\u
8A0A
FileChooser.detailsViewButtonAccessibleName
=
\u
8A73
\u
7D30
\u
8CC7
\u
8A0A
FileChooser.detailsViewButtonAccessibleName
=
\u
8A73
\u
7D30
\u
8CC7
\u
8A0A
FileChooser.viewMenuButtonToolTipText
=
\u
6AA2
\u8996\u
529F
\u
80FD
\u8868
FileChooser.viewMenuButtonToolTipText
=
\u
6AA2
\u8996\u
529F
\u
80FD
\u8868
FileChooser.viewMenuButtonAccessibleName
=
\u
6AA2
\u8996\u
529F
\u
80FD
\u8868
FileChooser.viewMenuButtonAccessibleName
=
\u
6AA2
\u8996\u
529F
\u
80FD
\u8868
FileChooser.detailsViewActionLabel
Text
=
\u
8A73
\u
7D30
\u
8CC7
\u
8A0A
FileChooser.detailsViewActionLabel
.textAndMnemonic
=
\u
8A73
\u
7D30
\u
8CC7
\u
8A0A
FileChooser.refreshActionLabel
Text
=
\u
91CD
\u
65B0
\u6574\u7406
FileChooser.refreshActionLabel
.textAndMnemonic
=
\u
91CD
\u
65B0
\u6574\u7406
FileChooser.viewMenuLabel
Text
=
\u
6AA2
\u8996
FileChooser.viewMenuLabel
.textAndMnemonic
=
\u
6AA2
\u8996
FileChooser.fileNameHeader
Text
=
\u
540D
\u
7A31
FileChooser.fileNameHeader
.textAndMnemonic
=
\u
540D
\u
7A31
FileChooser.fileSizeHeader
Text
=
\u5927\u
5C0F
FileChooser.fileSizeHeader
.textAndMnemonic
=
\u5927\u
5C0F
FileChooser.fileTypeHeader
Text
=
\u
985E
\u
578B
FileChooser.fileTypeHeader
.textAndMnemonic
=
\u
985E
\u
578B
FileChooser.fileDateHeader
Text
=
\u
4FEE
\u6539\u
65E5
\u
671F
FileChooser.fileDateHeader
.textAndMnemonic
=
\u
4FEE
\u6539\u
65E5
\u
671F
FileChooser.fileAttrHeader
Text
=
\u
5C6C
\u6027
FileChooser.fileAttrHeader
.textAndMnemonic
=
\u
5C6C
\u6027
src/share/classes/java/awt/Component.java
浏览文件 @
f63cb0a6
...
@@ -7169,6 +7169,9 @@ public abstract class Component implements ImageObserver, MenuContainer,
...
@@ -7169,6 +7169,9 @@ public abstract class Component implements ImageObserver, MenuContainer,
* Set from its parent. If all ancestors of this Component have null
* Set from its parent. If all ancestors of this Component have null
* specified for the Set, then the current KeyboardFocusManager's default
* specified for the Set, then the current KeyboardFocusManager's default
* Set is used.
* Set is used.
* <p>
* This method may throw a {@code ClassCastException} if any {@code Object}
* in {@code keystrokes} is not an {@code AWTKeyStroke}.
*
*
* @param id one of KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,
* @param id one of KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,
* KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, or
* KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, or
...
@@ -7182,8 +7185,7 @@ public abstract class Component implements ImageObserver, MenuContainer,
...
@@ -7182,8 +7185,7 @@ public abstract class Component implements ImageObserver, MenuContainer,
* KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,
* KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,
* KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, or
* KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, or
* KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS, or if keystrokes
* KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS, or if keystrokes
* contains null, or if any Object in keystrokes is not an
* contains null, or if any keystroke represents a KEY_TYPED event,
* AWTKeyStroke, or if any keystroke represents a KEY_TYPED event,
* or if any keystroke already maps to another focus traversal
* or if any keystroke already maps to another focus traversal
* operation for this Component
* operation for this Component
* @since 1.4
* @since 1.4
...
@@ -7831,7 +7833,7 @@ public abstract class Component implements ImageObserver, MenuContainer,
...
@@ -7831,7 +7833,7 @@ public abstract class Component implements ImageObserver, MenuContainer,
if
(
focusLog
.
isLoggable
(
PlatformLogger
.
FINER
))
{
if
(
focusLog
.
isLoggable
(
PlatformLogger
.
FINER
))
{
focusLog
.
finer
(
"clear global focus owner"
);
focusLog
.
finer
(
"clear global focus owner"
);
}
}
KeyboardFocusManager
.
getCurrentKeyboardFocusManager
().
clearGlobalFocusOwner
();
KeyboardFocusManager
.
getCurrentKeyboardFocusManager
().
clearGlobalFocusOwner
Priv
();
}
}
if
(
focusLog
.
isLoggable
(
PlatformLogger
.
FINER
))
{
if
(
focusLog
.
isLoggable
(
PlatformLogger
.
FINER
))
{
focusLog
.
finer
(
"returning result: "
+
res
);
focusLog
.
finer
(
"returning result: "
+
res
);
...
@@ -7912,7 +7914,7 @@ public abstract class Component implements ImageObserver, MenuContainer,
...
@@ -7912,7 +7914,7 @@ public abstract class Component implements ImageObserver, MenuContainer,
if
(
focusLog
.
isLoggable
(
PlatformLogger
.
FINER
))
{
if
(
focusLog
.
isLoggable
(
PlatformLogger
.
FINER
))
{
focusLog
.
finer
(
"clear global focus owner"
);
focusLog
.
finer
(
"clear global focus owner"
);
}
}
KeyboardFocusManager
.
getCurrentKeyboardFocusManager
().
clearGlobalFocusOwner
();
KeyboardFocusManager
.
getCurrentKeyboardFocusManager
().
clearGlobalFocusOwner
Priv
();
}
}
if
(
focusLog
.
isLoggable
(
PlatformLogger
.
FINER
))
{
if
(
focusLog
.
isLoggable
(
PlatformLogger
.
FINER
))
{
focusLog
.
finer
(
"returning result: "
+
res
);
focusLog
.
finer
(
"returning result: "
+
res
);
...
@@ -7945,11 +7947,11 @@ public abstract class Component implements ImageObserver, MenuContainer,
...
@@ -7945,11 +7947,11 @@ public abstract class Component implements ImageObserver, MenuContainer,
if
(
rootAncestor
!=
null
)
{
if
(
rootAncestor
!=
null
)
{
Container
rootAncestorRootAncestor
=
Container
rootAncestorRootAncestor
=
rootAncestor
.
getFocusCycleRootAncestor
();
rootAncestor
.
getFocusCycleRootAncestor
();
Container
fcr
=
(
rootAncestorRootAncestor
!=
null
)
?
rootAncestorRootAncestor
:
rootAncestor
;
KeyboardFocusManager
.
getCurrentKeyboardFocusManager
().
KeyboardFocusManager
.
getCurrentKeyboardFocusManager
().
setGlobalCurrentFocusCycleRoot
(
setGlobalCurrentFocusCycleRootPriv
(
fcr
);
(
rootAncestorRootAncestor
!=
null
)
?
rootAncestorRootAncestor
:
rootAncestor
);
rootAncestor
.
requestFocus
(
CausedFocusEvent
.
Cause
.
TRAVERSAL_UP
);
rootAncestor
.
requestFocus
(
CausedFocusEvent
.
Cause
.
TRAVERSAL_UP
);
}
else
{
}
else
{
Window
window
=
getContainingWindow
();
Window
window
=
getContainingWindow
();
...
@@ -7959,7 +7961,7 @@ public abstract class Component implements ImageObserver, MenuContainer,
...
@@ -7959,7 +7961,7 @@ public abstract class Component implements ImageObserver, MenuContainer,
getDefaultComponent
(
window
);
getDefaultComponent
(
window
);
if
(
toFocus
!=
null
)
{
if
(
toFocus
!=
null
)
{
KeyboardFocusManager
.
getCurrentKeyboardFocusManager
().
KeyboardFocusManager
.
getCurrentKeyboardFocusManager
().
setGlobalCurrentFocusCycleRoot
(
window
);
setGlobalCurrentFocusCycleRoot
Priv
(
window
);
toFocus
.
requestFocus
(
CausedFocusEvent
.
Cause
.
TRAVERSAL_UP
);
toFocus
.
requestFocus
(
CausedFocusEvent
.
Cause
.
TRAVERSAL_UP
);
}
}
}
}
...
...
src/share/classes/java/awt/Container.java
浏览文件 @
f63cb0a6
...
@@ -3093,6 +3093,9 @@ public class Container extends Component {
...
@@ -3093,6 +3093,9 @@ public class Container extends Component {
* Set from its parent. If all ancestors of this Container have null
* Set from its parent. If all ancestors of this Container have null
* specified for the Set, then the current KeyboardFocusManager's default
* specified for the Set, then the current KeyboardFocusManager's default
* Set is used.
* Set is used.
* <p>
* This method may throw a {@code ClassCastException} if any {@code Object}
* in {@code keystrokes} is not an {@code AWTKeyStroke}.
*
*
* @param id one of KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,
* @param id one of KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,
* KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,
* KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,
...
@@ -3109,8 +3112,7 @@ public class Container extends Component {
...
@@ -3109,8 +3112,7 @@ public class Container extends Component {
* KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,
* KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,
* KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS, or
* KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS, or
* KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS, or if keystrokes
* KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS, or if keystrokes
* contains null, or if any Object in keystrokes is not an
* contains null, or if any keystroke represents a KEY_TYPED event,
* AWTKeyStroke, or if any keystroke represents a KEY_TYPED event,
* or if any keystroke already maps to another focus traversal
* or if any keystroke already maps to another focus traversal
* operation for this Container
* operation for this Container
* @since 1.4
* @since 1.4
...
@@ -3243,7 +3245,7 @@ public class Container extends Component {
...
@@ -3243,7 +3245,7 @@ public class Container extends Component {
if
(
root
!=
currentFocusCycleRoot
)
{
if
(
root
!=
currentFocusCycleRoot
)
{
KeyboardFocusManager
.
getCurrentKeyboardFocusManager
().
KeyboardFocusManager
.
getCurrentKeyboardFocusManager
().
setGlobalCurrentFocusCycleRoot
(
root
);
setGlobalCurrentFocusCycleRoot
Priv
(
root
);
}
}
return
root
;
return
root
;
}
}
...
@@ -3300,7 +3302,7 @@ public class Container extends Component {
...
@@ -3300,7 +3302,7 @@ public class Container extends Component {
Container
cont
=
kfm
.
getCurrentFocusCycleRoot
();
Container
cont
=
kfm
.
getCurrentFocusCycleRoot
();
if
(
cont
==
this
||
isParentOf
(
cont
))
{
if
(
cont
==
this
||
isParentOf
(
cont
))
{
kfm
.
setGlobalCurrentFocusCycleRoot
(
null
);
kfm
.
setGlobalCurrentFocusCycleRoot
Priv
(
null
);
}
}
}
}
...
@@ -3504,7 +3506,7 @@ public class Container extends Component {
...
@@ -3504,7 +3506,7 @@ public class Container extends Component {
public
void
transferFocusDownCycle
()
{
public
void
transferFocusDownCycle
()
{
if
(
isFocusCycleRoot
())
{
if
(
isFocusCycleRoot
())
{
KeyboardFocusManager
.
getCurrentKeyboardFocusManager
().
KeyboardFocusManager
.
getCurrentKeyboardFocusManager
().
setGlobalCurrentFocusCycleRoot
(
this
);
setGlobalCurrentFocusCycleRoot
Priv
(
this
);
Component
toFocus
=
getFocusTraversalPolicy
().
Component
toFocus
=
getFocusTraversalPolicy
().
getDefaultComponent
(
this
);
getDefaultComponent
(
this
);
if
(
toFocus
!=
null
)
{
if
(
toFocus
!=
null
)
{
...
...
src/share/classes/java/awt/DefaultKeyboardFocusManager.java
浏览文件 @
f63cb0a6
...
@@ -116,7 +116,7 @@ public class DefaultKeyboardFocusManager extends KeyboardFocusManager {
...
@@ -116,7 +116,7 @@ public class DefaultKeyboardFocusManager extends KeyboardFocusManager {
}
else
if
(
fe
.
getOppositeComponent
()
!=
null
&&
}
else
if
(
fe
.
getOppositeComponent
()
!=
null
&&
doRestoreFocus
(
fe
.
getOppositeComponent
(),
vetoedComponent
,
false
))
{
doRestoreFocus
(
fe
.
getOppositeComponent
(),
vetoedComponent
,
false
))
{
}
else
{
}
else
{
clearGlobalFocusOwner
();
clearGlobalFocusOwner
Priv
();
}
}
}
}
private
void
restoreFocus
(
WindowEvent
we
)
{
private
void
restoreFocus
(
WindowEvent
we
)
{
...
@@ -130,7 +130,7 @@ public class DefaultKeyboardFocusManager extends KeyboardFocusManager {
...
@@ -130,7 +130,7 @@ public class DefaultKeyboardFocusManager extends KeyboardFocusManager {
{
{
// do nothing, everything is done in restoreFocus()
// do nothing, everything is done in restoreFocus()
}
else
{
}
else
{
clearGlobalFocusOwner
();
clearGlobalFocusOwner
Priv
();
}
}
}
}
private
boolean
restoreFocus
(
Window
aWindow
,
Component
vetoedComponent
,
private
boolean
restoreFocus
(
Window
aWindow
,
Component
vetoedComponent
,
...
@@ -141,7 +141,7 @@ public class DefaultKeyboardFocusManager extends KeyboardFocusManager {
...
@@ -141,7 +141,7 @@ public class DefaultKeyboardFocusManager extends KeyboardFocusManager {
if
(
toFocus
!=
null
&&
toFocus
!=
vetoedComponent
&&
doRestoreFocus
(
toFocus
,
vetoedComponent
,
false
))
{
if
(
toFocus
!=
null
&&
toFocus
!=
vetoedComponent
&&
doRestoreFocus
(
toFocus
,
vetoedComponent
,
false
))
{
return
true
;
return
true
;
}
else
if
(
clearOnFailure
)
{
}
else
if
(
clearOnFailure
)
{
clearGlobalFocusOwner
();
clearGlobalFocusOwner
Priv
();
return
true
;
return
true
;
}
else
{
}
else
{
return
false
;
return
false
;
...
@@ -164,7 +164,7 @@ public class DefaultKeyboardFocusManager extends KeyboardFocusManager {
...
@@ -164,7 +164,7 @@ public class DefaultKeyboardFocusManager extends KeyboardFocusManager {
{
{
return
true
;
return
true
;
}
else
if
(
clearOnFailure
)
{
}
else
if
(
clearOnFailure
)
{
clearGlobalFocusOwner
();
clearGlobalFocusOwner
Priv
();
return
true
;
return
true
;
}
else
{
}
else
{
return
false
;
return
false
;
...
...
src/share/classes/java/awt/Dialog.java
浏览文件 @
f63cb0a6
...
@@ -670,7 +670,7 @@ public class Dialog extends Window {
...
@@ -670,7 +670,7 @@ public class Dialog extends Window {
this
.
title
=
title
;
this
.
title
=
title
;
setModalityType
(
modalityType
);
setModalityType
(
modalityType
);
SunToolkit
.
checkAndSetPolicy
(
this
,
false
);
SunToolkit
.
checkAndSetPolicy
(
this
);
}
}
/**
/**
...
@@ -721,7 +721,7 @@ public class Dialog extends Window {
...
@@ -721,7 +721,7 @@ public class Dialog extends Window {
this
.
title
=
title
;
this
.
title
=
title
;
setModalityType
(
modalityType
);
setModalityType
(
modalityType
);
SunToolkit
.
checkAndSetPolicy
(
this
,
false
);
SunToolkit
.
checkAndSetPolicy
(
this
);
}
}
/**
/**
...
@@ -1037,7 +1037,7 @@ public class Dialog extends Window {
...
@@ -1037,7 +1037,7 @@ public class Dialog extends Window {
predictedFocusOwner
=
getMostRecentFocusOwner
();
predictedFocusOwner
=
getMostRecentFocusOwner
();
if
(
conditionalShow
(
predictedFocusOwner
,
time
))
{
if
(
conditionalShow
(
predictedFocusOwner
,
time
))
{
modalFilter
=
ModalEventFilter
.
createFilterForDialog
(
this
);
modalFilter
=
ModalEventFilter
.
createFilterForDialog
(
this
);
Conditional
cond
=
new
Conditional
()
{
final
Conditional
cond
=
new
Conditional
()
{
@Override
@Override
public
boolean
evaluate
()
{
public
boolean
evaluate
()
{
return
windowClosingException
==
null
;
return
windowClosingException
==
null
;
...
@@ -1067,7 +1067,12 @@ public class Dialog extends Window {
...
@@ -1067,7 +1067,12 @@ public class Dialog extends Window {
modalityPushed
();
modalityPushed
();
try
{
try
{
EventQueue
eventQueue
=
Toolkit
.
getDefaultToolkit
().
getSystemEventQueue
();
final
EventQueue
eventQueue
=
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
EventQueue
>()
{
public
EventQueue
run
()
{
return
Toolkit
.
getDefaultToolkit
().
getSystemEventQueue
();
}
});
secondaryLoop
=
eventQueue
.
createSecondaryLoop
(
cond
,
modalFilter
,
0
);
secondaryLoop
=
eventQueue
.
createSecondaryLoop
(
cond
,
modalFilter
,
0
);
if
(!
secondaryLoop
.
enter
())
{
if
(!
secondaryLoop
.
enter
())
{
secondaryLoop
=
null
;
secondaryLoop
=
null
;
...
...
src/share/classes/java/awt/FileDialog.java
浏览文件 @
f63cb0a6
...
@@ -147,8 +147,8 @@ public class FileDialog extends Dialog {
...
@@ -147,8 +147,8 @@ public class FileDialog extends Dialog {
static
{
static
{
AWTAccessor
.
setFileDialogAccessor
(
AWTAccessor
.
setFileDialogAccessor
(
new
AWTAccessor
.
FileDialogAccessor
()
{
new
AWTAccessor
.
FileDialogAccessor
()
{
public
void
setFiles
(
FileDialog
fileDialog
,
String
directory
,
String
files
[])
{
public
void
setFiles
(
FileDialog
fileDialog
,
File
files
[])
{
fileDialog
.
setFiles
(
directory
,
files
);
fileDialog
.
setFiles
(
files
);
}
}
public
void
setFile
(
FileDialog
fileDialog
,
String
file
)
{
public
void
setFile
(
FileDialog
fileDialog
,
String
file
)
{
fileDialog
.
file
=
(
""
.
equals
(
file
))
?
null
:
file
;
fileDialog
.
file
=
(
""
.
equals
(
file
))
?
null
:
file
;
...
@@ -446,13 +446,9 @@ public class FileDialog extends Dialog {
...
@@ -446,13 +446,9 @@ public class FileDialog extends Dialog {
* @see #getFiles
* @see #getFiles
* @since 1.7
* @since 1.7
*/
*/
private
void
setFiles
(
String
directory
,
String
files
[])
{
private
void
setFiles
(
File
files
[])
{
synchronized
(
getObjectLock
())
{
synchronized
(
getObjectLock
())
{
int
filesNumber
=
(
files
!=
null
)
?
files
.
length
:
0
;
this
.
files
=
files
;
this
.
files
=
new
File
[
filesNumber
];
for
(
int
i
=
0
;
i
<
filesNumber
;
i
++)
{
this
.
files
[
i
]
=
new
File
(
directory
,
files
[
i
]);
}
}
}
}
}
...
...
src/share/classes/java/awt/Frame.java
浏览文件 @
f63cb0a6
...
@@ -449,7 +449,7 @@ public class Frame extends Window implements MenuContainer {
...
@@ -449,7 +449,7 @@ public class Frame extends Window implements MenuContainer {
private
void
init
(
String
title
,
GraphicsConfiguration
gc
)
{
private
void
init
(
String
title
,
GraphicsConfiguration
gc
)
{
this
.
title
=
title
;
this
.
title
=
title
;
SunToolkit
.
checkAndSetPolicy
(
this
,
false
);
SunToolkit
.
checkAndSetPolicy
(
this
);
}
}
/**
/**
...
...
src/share/classes/java/awt/KeyboardFocusManager.java
浏览文件 @
f63cb0a6
/*
/*
* Copyright (c) 2000, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 201
2
, 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
...
@@ -246,15 +246,7 @@ public abstract class KeyboardFocusManager
...
@@ -246,15 +246,7 @@ public abstract class KeyboardFocusManager
public
static
void
setCurrentKeyboardFocusManager
(
public
static
void
setCurrentKeyboardFocusManager
(
KeyboardFocusManager
newManager
)
throws
SecurityException
KeyboardFocusManager
newManager
)
throws
SecurityException
{
{
SecurityManager
security
=
System
.
getSecurityManager
();
checkReplaceKFMPermission
();
if
(
security
!=
null
)
{
if
(
replaceKeyboardFocusManagerPermission
==
null
)
{
replaceKeyboardFocusManagerPermission
=
new
AWTPermission
(
"replaceKeyboardFocusManager"
);
}
security
.
checkPermission
(
replaceKeyboardFocusManagerPermission
);
}
KeyboardFocusManager
oldManager
=
null
;
KeyboardFocusManager
oldManager
=
null
;
...
@@ -398,11 +390,6 @@ public abstract class KeyboardFocusManager
...
@@ -398,11 +390,6 @@ public abstract class KeyboardFocusManager
*/
*/
private
static
java
.
util
.
Map
mostRecentFocusOwners
=
new
WeakHashMap
();
private
static
java
.
util
.
Map
mostRecentFocusOwners
=
new
WeakHashMap
();
/**
* Error String for initializing SecurityExceptions.
*/
private
static
final
String
notPrivileged
=
"this KeyboardFocusManager is not installed in the current thread's context"
;
/**
/**
* We cache the permission used to verify that the calling thread is
* We cache the permission used to verify that the calling thread is
* permitted to access the global focus state.
* permitted to access the global focus state.
...
@@ -503,17 +490,13 @@ public abstract class KeyboardFocusManager
...
@@ -503,17 +490,13 @@ public abstract class KeyboardFocusManager
* @see #setGlobalFocusOwner
* @see #setGlobalFocusOwner
* @throws SecurityException if this KeyboardFocusManager is not the
* @throws SecurityException if this KeyboardFocusManager is not the
* current KeyboardFocusManager for the calling thread's context
* current KeyboardFocusManager for the calling thread's context
* and if the calling thread does not have "replaceKeyboardFocusManager"
* permission
*/
*/
protected
Component
getGlobalFocusOwner
()
throws
SecurityException
{
protected
Component
getGlobalFocusOwner
()
throws
SecurityException
{
synchronized
(
KeyboardFocusManager
.
class
)
{
synchronized
(
KeyboardFocusManager
.
class
)
{
if
(
this
==
getCurrentKeyboardFocusManager
())
{
checkKFMSecurity
();
return
focusOwner
;
return
focusOwner
;
}
else
{
if
(
focusLog
.
isLoggable
(
PlatformLogger
.
FINER
))
{
focusLog
.
finer
(
"This manager is "
+
this
+
", current is "
+
getCurrentKeyboardFocusManager
());
}
throw
new
SecurityException
(
notPrivileged
);
}
}
}
}
}
...
@@ -538,15 +521,23 @@ public abstract class KeyboardFocusManager
...
@@ -538,15 +521,23 @@ public abstract class KeyboardFocusManager
* @see Component#requestFocus()
* @see Component#requestFocus()
* @see Component#requestFocusInWindow()
* @see Component#requestFocusInWindow()
* @see Component#isFocusable
* @see Component#isFocusable
* @throws SecurityException if this KeyboardFocusManager is not the
* current KeyboardFocusManager for the calling thread's context
* and if the calling thread does not have "replaceKeyboardFocusManager"
* permission
* @beaninfo
* @beaninfo
* bound: true
* bound: true
*/
*/
protected
void
setGlobalFocusOwner
(
Component
focusOwner
)
{
protected
void
setGlobalFocusOwner
(
Component
focusOwner
)
throws
SecurityException
{
Component
oldFocusOwner
=
null
;
Component
oldFocusOwner
=
null
;
boolean
shouldFire
=
false
;
boolean
shouldFire
=
false
;
if
(
focusOwner
==
null
||
focusOwner
.
isFocusable
())
{
if
(
focusOwner
==
null
||
focusOwner
.
isFocusable
())
{
synchronized
(
KeyboardFocusManager
.
class
)
{
synchronized
(
KeyboardFocusManager
.
class
)
{
checkKFMSecurity
();
oldFocusOwner
=
getFocusOwner
();
oldFocusOwner
=
getFocusOwner
();
try
{
try
{
...
@@ -583,6 +574,27 @@ public abstract class KeyboardFocusManager
...
@@ -583,6 +574,27 @@ public abstract class KeyboardFocusManager
}
}
}
}
/**
* Clears the focus owner at both the Java and native levels if the
* focus owner exists and resides in the same context as the calling thread,
* otherwise the method returns silently.
* <p>
* The focus owner component will receive a permanent FOCUS_LOST event.
* After this operation completes, the native windowing system will discard
* all user-generated KeyEvents until the user selects a new Component to
* receive focus, or a Component is given focus explicitly via a call to
* {@code requestFocus()}. This operation does not change the focused or
* active Windows.
*
* @see Component#requestFocus()
* @see java.awt.event.FocusEvent#FOCUS_LOST
*/
public
void
clearFocusOwner
()
{
if
(
getFocusOwner
()
!=
null
)
{
clearGlobalFocusOwner
();
}
}
/**
/**
* Clears the global focus owner at both the Java and native levels. If
* Clears the global focus owner at both the Java and native levels. If
* there exists a focus owner, that Component will receive a permanent
* there exists a focus owner, that Component will receive a permanent
...
@@ -591,11 +603,26 @@ public abstract class KeyboardFocusManager
...
@@ -591,11 +603,26 @@ public abstract class KeyboardFocusManager
* a new Component to receive focus, or a Component is given focus
* a new Component to receive focus, or a Component is given focus
* explicitly via a call to <code>requestFocus()</code>. This operation
* explicitly via a call to <code>requestFocus()</code>. This operation
* does not change the focused or active Windows.
* does not change the focused or active Windows.
* <p>
* If a SecurityManager is installed, the calling thread must be granted
* the "replaceKeyboardFocusManager" AWTPermission. If this permission is
* not granted, this method will throw a SecurityException, and the current
* focus owner will not be cleared.
* <p>
* This method is intended to be used only by KeyboardFocusManager set as
* current KeyboardFocusManager for the calling thread's context. It is not
* for general client use.
*
*
* @see KeyboardFocusManager#clearFocusOwner
* @see Component#requestFocus()
* @see Component#requestFocus()
* @see java.awt.event.FocusEvent#FOCUS_LOST
* @see java.awt.event.FocusEvent#FOCUS_LOST
* @throws SecurityException if the calling thread does not have
* "replaceKeyboardFocusManager" permission
*/
*/
public
void
clearGlobalFocusOwner
()
{
public
void
clearGlobalFocusOwner
()
throws
SecurityException
{
checkReplaceKFMPermission
();
if
(!
GraphicsEnvironment
.
isHeadless
())
{
if
(!
GraphicsEnvironment
.
isHeadless
())
{
// Toolkit must be fully initialized, otherwise
// Toolkit must be fully initialized, otherwise
// _clearGlobalFocusOwner will crash or throw an exception
// _clearGlobalFocusOwner will crash or throw an exception
...
@@ -609,6 +636,15 @@ public abstract class KeyboardFocusManager
...
@@ -609,6 +636,15 @@ public abstract class KeyboardFocusManager
peer
.
clearGlobalFocusOwner
(
activeWindow
);
peer
.
clearGlobalFocusOwner
(
activeWindow
);
}
}
void
clearGlobalFocusOwnerPriv
()
{
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
Void
>()
{
public
Void
run
()
{
clearGlobalFocusOwner
();
return
null
;
}
});
}
Component
getNativeFocusOwner
()
{
Component
getNativeFocusOwner
()
{
return
peer
.
getCurrentFocusOwner
();
return
peer
.
getCurrentFocusOwner
();
}
}
...
@@ -660,29 +696,21 @@ public abstract class KeyboardFocusManager
...
@@ -660,29 +696,21 @@ public abstract class KeyboardFocusManager
* are equivalent unless a temporary focus change is currently in effect.
* are equivalent unless a temporary focus change is currently in effect.
* In such a situation, the permanent focus owner will again be the focus
* In such a situation, the permanent focus owner will again be the focus
* owner when the temporary focus change ends.
* owner when the temporary focus change ends.
* <p>
* This method will throw a SecurityException if this KeyboardFocusManager
* is not the current KeyboardFocusManager for the calling thread's
* context.
*
*
* @return the permanent focus owner
* @return the permanent focus owner
* @see #getPermanentFocusOwner
* @see #getPermanentFocusOwner
* @see #setGlobalPermanentFocusOwner
* @see #setGlobalPermanentFocusOwner
* @throws SecurityException if this KeyboardFocusManager is not the
* @throws SecurityException if this KeyboardFocusManager is not the
* current KeyboardFocusManager for the calling thread's context
* current KeyboardFocusManager for the calling thread's context
* and if the calling thread does not have "replaceKeyboardFocusManager"
* permission
*/
*/
protected
Component
getGlobalPermanentFocusOwner
()
protected
Component
getGlobalPermanentFocusOwner
()
throws
SecurityException
throws
SecurityException
{
{
synchronized
(
KeyboardFocusManager
.
class
)
{
synchronized
(
KeyboardFocusManager
.
class
)
{
if
(
this
==
getCurrentKeyboardFocusManager
())
{
checkKFMSecurity
();
return
permanentFocusOwner
;
return
permanentFocusOwner
;
}
else
{
if
(
focusLog
.
isLoggable
(
PlatformLogger
.
FINER
))
{
focusLog
.
finer
(
"This manager is "
+
this
+
", current is "
+
getCurrentKeyboardFocusManager
());
}
throw
new
SecurityException
(
notPrivileged
);
}
}
}
}
}
...
@@ -708,16 +736,23 @@ public abstract class KeyboardFocusManager
...
@@ -708,16 +736,23 @@ public abstract class KeyboardFocusManager
* @see Component#requestFocus()
* @see Component#requestFocus()
* @see Component#requestFocusInWindow()
* @see Component#requestFocusInWindow()
* @see Component#isFocusable
* @see Component#isFocusable
* @throws SecurityException if this KeyboardFocusManager is not the
* current KeyboardFocusManager for the calling thread's context
* and if the calling thread does not have "replaceKeyboardFocusManager"
* permission
* @beaninfo
* @beaninfo
* bound: true
* bound: true
*/
*/
protected
void
setGlobalPermanentFocusOwner
(
Component
permanentFocusOwner
)
protected
void
setGlobalPermanentFocusOwner
(
Component
permanentFocusOwner
)
throws
SecurityException
{
{
Component
oldPermanentFocusOwner
=
null
;
Component
oldPermanentFocusOwner
=
null
;
boolean
shouldFire
=
false
;
boolean
shouldFire
=
false
;
if
(
permanentFocusOwner
==
null
||
permanentFocusOwner
.
isFocusable
())
{
if
(
permanentFocusOwner
==
null
||
permanentFocusOwner
.
isFocusable
())
{
synchronized
(
KeyboardFocusManager
.
class
)
{
synchronized
(
KeyboardFocusManager
.
class
)
{
checkKFMSecurity
();
oldPermanentFocusOwner
=
getPermanentFocusOwner
();
oldPermanentFocusOwner
=
getPermanentFocusOwner
();
try
{
try
{
...
@@ -770,27 +805,19 @@ public abstract class KeyboardFocusManager
...
@@ -770,27 +805,19 @@ public abstract class KeyboardFocusManager
* Returns the focused Window, even if the calling thread is in a different
* Returns the focused Window, even if the calling thread is in a different
* context than the focused Window. The focused Window is the Window that
* context than the focused Window. The focused Window is the Window that
* is or contains the focus owner.
* is or contains the focus owner.
* <p>
* This method will throw a SecurityException if this KeyboardFocusManager
* is not the current KeyboardFocusManager for the calling thread's
* context.
*
*
* @return the focused Window
* @return the focused Window
* @see #getFocusedWindow
* @see #getFocusedWindow
* @see #setGlobalFocusedWindow
* @see #setGlobalFocusedWindow
* @throws SecurityException if this KeyboardFocusManager is not the
* @throws SecurityException if this KeyboardFocusManager is not the
* current KeyboardFocusManager for the calling thread's context
* current KeyboardFocusManager for the calling thread's context
* and if the calling thread does not have "replaceKeyboardFocusManager"
* permission
*/
*/
protected
Window
getGlobalFocusedWindow
()
throws
SecurityException
{
protected
Window
getGlobalFocusedWindow
()
throws
SecurityException
{
synchronized
(
KeyboardFocusManager
.
class
)
{
synchronized
(
KeyboardFocusManager
.
class
)
{
if
(
this
==
getCurrentKeyboardFocusManager
())
{
checkKFMSecurity
();
return
focusedWindow
;
return
focusedWindow
;
}
else
{
if
(
focusLog
.
isLoggable
(
PlatformLogger
.
FINER
))
{
focusLog
.
finer
(
"This manager is "
+
this
+
", current is "
+
getCurrentKeyboardFocusManager
());
}
throw
new
SecurityException
(
notPrivileged
);
}
}
}
}
}
...
@@ -812,15 +839,23 @@ public abstract class KeyboardFocusManager
...
@@ -812,15 +839,23 @@ public abstract class KeyboardFocusManager
* @see Component#requestFocus()
* @see Component#requestFocus()
* @see Component#requestFocusInWindow()
* @see Component#requestFocusInWindow()
* @see Window#isFocusableWindow
* @see Window#isFocusableWindow
* @throws SecurityException if this KeyboardFocusManager is not the
* current KeyboardFocusManager for the calling thread's context
* and if the calling thread does not have "replaceKeyboardFocusManager"
* permission
* @beaninfo
* @beaninfo
* bound: true
* bound: true
*/
*/
protected
void
setGlobalFocusedWindow
(
Window
focusedWindow
)
{
protected
void
setGlobalFocusedWindow
(
Window
focusedWindow
)
throws
SecurityException
{
Window
oldFocusedWindow
=
null
;
Window
oldFocusedWindow
=
null
;
boolean
shouldFire
=
false
;
boolean
shouldFire
=
false
;
if
(
focusedWindow
==
null
||
focusedWindow
.
isFocusableWindow
())
{
if
(
focusedWindow
==
null
||
focusedWindow
.
isFocusableWindow
())
{
synchronized
(
KeyboardFocusManager
.
class
)
{
synchronized
(
KeyboardFocusManager
.
class
)
{
checkKFMSecurity
();
oldFocusedWindow
=
getFocusedWindow
();
oldFocusedWindow
=
getFocusedWindow
();
try
{
try
{
...
@@ -874,27 +909,19 @@ public abstract class KeyboardFocusManager
...
@@ -874,27 +909,19 @@ public abstract class KeyboardFocusManager
* or its children with special decorations, such as a highlighted title
* or its children with special decorations, such as a highlighted title
* bar. The active Window is always either the focused Window, or the first
* bar. The active Window is always either the focused Window, or the first
* Frame or Dialog that is an owner of the focused Window.
* Frame or Dialog that is an owner of the focused Window.
* <p>
* This method will throw a SecurityException if this KeyboardFocusManager
* is not the current KeyboardFocusManager for the calling thread's
* context.
*
*
* @return the active Window
* @return the active Window
* @see #getActiveWindow
* @see #getActiveWindow
* @see #setGlobalActiveWindow
* @see #setGlobalActiveWindow
* @throws SecurityException if this KeyboardFocusManager is not the
* @throws SecurityException if this KeyboardFocusManager is not the
* current KeyboardFocusManager for the calling thread's context
* current KeyboardFocusManager for the calling thread's context
* and if the calling thread does not have "replaceKeyboardFocusManager"
* permission
*/
*/
protected
Window
getGlobalActiveWindow
()
throws
SecurityException
{
protected
Window
getGlobalActiveWindow
()
throws
SecurityException
{
synchronized
(
KeyboardFocusManager
.
class
)
{
synchronized
(
KeyboardFocusManager
.
class
)
{
if
(
this
==
getCurrentKeyboardFocusManager
())
{
checkKFMSecurity
();
return
activeWindow
;
return
activeWindow
;
}
else
{
if
(
focusLog
.
isLoggable
(
PlatformLogger
.
FINER
))
{
focusLog
.
finer
(
"This manager is "
+
this
+
", current is "
+
getCurrentKeyboardFocusManager
());
}
throw
new
SecurityException
(
notPrivileged
);
}
}
}
}
}
...
@@ -917,12 +944,20 @@ public abstract class KeyboardFocusManager
...
@@ -917,12 +944,20 @@ public abstract class KeyboardFocusManager
* @see #getGlobalActiveWindow
* @see #getGlobalActiveWindow
* @see Component#requestFocus()
* @see Component#requestFocus()
* @see Component#requestFocusInWindow()
* @see Component#requestFocusInWindow()
* @throws SecurityException if this KeyboardFocusManager is not the
* current KeyboardFocusManager for the calling thread's context
* and if the calling thread does not have "replaceKeyboardFocusManager"
* permission
* @beaninfo
* @beaninfo
* bound: true
* bound: true
*/
*/
protected
void
setGlobalActiveWindow
(
Window
activeWindow
)
{
protected
void
setGlobalActiveWindow
(
Window
activeWindow
)
throws
SecurityException
{
Window
oldActiveWindow
;
Window
oldActiveWindow
;
synchronized
(
KeyboardFocusManager
.
class
)
{
synchronized
(
KeyboardFocusManager
.
class
)
{
checkKFMSecurity
();
oldActiveWindow
=
getActiveWindow
();
oldActiveWindow
=
getActiveWindow
();
if
(
focusLog
.
isLoggable
(
PlatformLogger
.
FINER
))
{
if
(
focusLog
.
isLoggable
(
PlatformLogger
.
FINER
))
{
focusLog
.
finer
(
"Setting global active window to "
+
activeWindow
+
", old active "
+
oldActiveWindow
);
focusLog
.
finer
(
"Setting global active window to "
+
activeWindow
+
", old active "
+
oldActiveWindow
);
...
@@ -991,12 +1026,12 @@ public abstract class KeyboardFocusManager
...
@@ -991,12 +1026,12 @@ public abstract class KeyboardFocusManager
/**
/**
* Sets the default focus traversal keys for a given traversal operation.
* Sets the default focus traversal keys for a given traversal operation.
* This traversal key
<code>Set</code>
will be in effect on all
* This traversal key
{@code Set}
will be in effect on all
*
<code>Window</code>s that have no such <code>Set</code>
of
*
{@code Window}s that have no such {@code Set}
of
* their own explicitly defined. This
<code>Set</code>
will also be
* their own explicitly defined. This
{@code Set}
will also be
* inherited, recursively, by any child
<code>Component</code>
of
* inherited, recursively, by any child
{@code Component}
of
* those
<code>Windows</code>
that has
* those
{@code Windows}
that has
* no such
<code>Set</code>
of its own explicitly defined.
* no such
{@code Set}
of its own explicitly defined.
* <p>
* <p>
* The default values for the default focus traversal keys are
* The default values for the default focus traversal keys are
* implementation-dependent. Sun recommends that all implementations for a
* implementation-dependent. Sun recommends that all implementations for a
...
@@ -1011,66 +1046,67 @@ public abstract class KeyboardFocusManager
...
@@ -1011,66 +1046,67 @@ public abstract class KeyboardFocusManager
* <th>Default</th>
* <th>Default</th>
* </tr>
* </tr>
* <tr>
* <tr>
* <td>
<code>KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS</code>
</td>
* <td>
{@code KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS}
</td>
* <td>Normal forward keyboard traversal</td>
* <td>Normal forward keyboard traversal</td>
* <td>
<code>TAB</code> on <code>KEY_PRESSED</code>
,
* <td>
{@code TAB} on {@code KEY_PRESSED}
,
*
<code>CTRL-TAB</code> on <code>KEY_PRESSED</code>
</td>
*
{@code CTRL-TAB} on {@code KEY_PRESSED}
</td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td>
<code>KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS</code>
</td>
* <td>
{@code KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS}
</td>
* <td>Normal reverse keyboard traversal</td>
* <td>Normal reverse keyboard traversal</td>
* <td>
<code>SHIFT-TAB</code> on <code>KEY_PRESSED</code>
,
* <td>
{@code SHIFT-TAB} on {@code KEY_PRESSED}
,
*
<code>CTRL-SHIFT-TAB</code> on <code>KEY_PRESSED</code>
</td>
*
{@code CTRL-SHIFT-TAB} on {@code KEY_PRESSED}
</td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td>
<code>KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS</code>
</td>
* <td>
{@code KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS}
</td>
* <td>Go up one focus traversal cycle</td>
* <td>Go up one focus traversal cycle</td>
* <td>none</td>
* <td>none</td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td>
<code>KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS</code>
</td>
* <td>
{@code KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS}
</td>
* <td>Go down one focus traversal cycle</td>
* <td>Go down one focus traversal cycle</td>
* <td>none</td>
* <td>none</td>
* </tr>
* </tr>
* </table>
* </table>
*
*
* To disable a traversal key, use an empty
<code>Set</code>
;
* To disable a traversal key, use an empty
{@code Set}
;
*
<code>Collections.EMPTY_SET</code>
is recommended.
*
{@code Collections.EMPTY_SET}
is recommended.
* <p>
* <p>
* Using the
<code>AWTKeyStroke</code>
API, client code can
* Using the
{@code AWTKeyStroke}
API, client code can
* specify on which of two
* specify on which of two
* specific
<code>KeyEvent</code>s, <code>KEY_PRESSED</code>
or
* specific
{@code KeyEvent}s, {@code KEY_PRESSED}
or
*
<code>KEY_RELEASED</code>
, the focus traversal operation will
*
{@code KEY_RELEASED}
, the focus traversal operation will
* occur. Regardless of which
<code>KeyEvent</code>
is specified,
* occur. Regardless of which
{@code KeyEvent}
is specified,
* however, all
<code>KeyEvent</code>
s related to the focus
* however, all
{@code KeyEvent}
s related to the focus
* traversal key, including the associated
<code>KEY_TYPED</code>
* traversal key, including the associated
{@code KEY_TYPED}
* event, will be consumed, and will not be dispatched
* event, will be consumed, and will not be dispatched
* to any
<code>Component</code>
. It is a runtime error to
* to any
{@code Component}
. It is a runtime error to
* specify a
<code>KEY_TYPED</code>
event as
* specify a
{@code KEY_TYPED}
event as
* mapping to a focus traversal operation, or to map the same event to
* mapping to a focus traversal operation, or to map the same event to
* multiple default focus traversal operations.
* multiple default focus traversal operations.
* <p>
* This method may throw a {@code ClassCastException} if any {@code Object}
* in {@code keystrokes} is not an {@code AWTKeyStroke}.
*
*
* @param id one of
* @param id one of
*
<code>KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS</code>
,
*
{@code KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS}
,
*
<code>KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS</code>
,
*
{@code KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS}
,
*
<code>KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS</code>
, or
*
{@code KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS}
, or
*
<code>KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS</code>
*
{@code KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS}
* @param keystrokes the Set of
<code>AWTKeyStroke</code>
s for the
* @param keystrokes the Set of
{@code AWTKeyStroke}
s for the
* specified operation
* specified operation
* @see #getDefaultFocusTraversalKeys
* @see #getDefaultFocusTraversalKeys
* @see Component#setFocusTraversalKeys
* @see Component#setFocusTraversalKeys
* @see Component#getFocusTraversalKeys
* @see Component#getFocusTraversalKeys
* @throws IllegalArgumentException if id is not one of
* @throws IllegalArgumentException if id is not one of
* <code>KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS</code>,
* {@code KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS},
* <code>KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS</code>,
* {@code KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS},
* <code>KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS</code>, or
* {@code KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS}, or
* <code>KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS</code>,
* {@code KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS},
* or if keystrokes is <code>null</code>,
* or if keystrokes is {@code null},
* or if keystrokes contains <code>null</code>,
* or if keystrokes contains {@code null},
* or if any <code>Object</code> in
* keystrokes is not an <code>AWTKeyStroke</code>,
* or if any keystroke
* or if any keystroke
* represents a
<code>KEY_TYPED</code>
event,
* represents a
{@code KEY_TYPED}
event,
* or if any keystroke already maps
* or if any keystroke already maps
* to another default focus traversal operation
* to another default focus traversal operation
* @beaninfo
* @beaninfo
...
@@ -1090,20 +1126,12 @@ public abstract class KeyboardFocusManager
...
@@ -1090,20 +1126,12 @@ public abstract class KeyboardFocusManager
Set
oldKeys
;
Set
oldKeys
;
synchronized
(
this
)
{
synchronized
(
this
)
{
for
(
Iterator
iter
=
keystrokes
.
iterator
();
iter
.
hasNext
();
)
{
for
(
AWTKeyStroke
keystroke
:
keystrokes
)
{
Object
obj
=
iter
.
next
();
if
(
obj
==
null
)
{
if
(
keystroke
==
null
)
{
throw
new
IllegalArgumentException
(
"cannot set null focus traversal key"
);
throw
new
IllegalArgumentException
(
"cannot set null focus traversal key"
);
}
}
// Fix for 6195831:
//According to javadoc this method should throw IAE instead of ClassCastException
if
(!(
obj
instanceof
AWTKeyStroke
))
{
throw
new
IllegalArgumentException
(
"object is expected to be AWTKeyStroke"
);
}
AWTKeyStroke
keystroke
=
(
AWTKeyStroke
)
obj
;
if
(
keystroke
.
getKeyChar
()
!=
KeyEvent
.
CHAR_UNDEFINED
)
{
if
(
keystroke
.
getKeyChar
()
!=
KeyEvent
.
CHAR_UNDEFINED
)
{
throw
new
IllegalArgumentException
(
"focus traversal keys cannot map to KEY_TYPED events"
);
throw
new
IllegalArgumentException
(
"focus traversal keys cannot map to KEY_TYPED events"
);
}
}
...
@@ -1201,10 +1229,6 @@ public abstract class KeyboardFocusManager
...
@@ -1201,10 +1229,6 @@ public abstract class KeyboardFocusManager
* Components represent the next and previous Components to focus during
* Components represent the next and previous Components to focus during
* normal focus traversal. In that case, the current focus cycle root is
* normal focus traversal. In that case, the current focus cycle root is
* used to differentiate among the possibilities.
* used to differentiate among the possibilities.
* <p>
* This method will throw a SecurityException if this KeyboardFocusManager
* is not the current KeyboardFocusManager for the calling thread's
* context.
*
*
* @return the current focus cycle root, or null if the current focus cycle
* @return the current focus cycle root, or null if the current focus cycle
* root is not a member of the calling thread's context
* root is not a member of the calling thread's context
...
@@ -1212,19 +1236,15 @@ public abstract class KeyboardFocusManager
...
@@ -1212,19 +1236,15 @@ public abstract class KeyboardFocusManager
* @see #setGlobalCurrentFocusCycleRoot
* @see #setGlobalCurrentFocusCycleRoot
* @throws SecurityException if this KeyboardFocusManager is not the
* @throws SecurityException if this KeyboardFocusManager is not the
* current KeyboardFocusManager for the calling thread's context
* current KeyboardFocusManager for the calling thread's context
* and if the calling thread does not have "replaceKeyboardFocusManager"
* permission
*/
*/
protected
Container
getGlobalCurrentFocusCycleRoot
()
protected
Container
getGlobalCurrentFocusCycleRoot
()
throws
SecurityException
throws
SecurityException
{
{
synchronized
(
KeyboardFocusManager
.
class
)
{
synchronized
(
KeyboardFocusManager
.
class
)
{
if
(
this
==
getCurrentKeyboardFocusManager
())
{
checkKFMSecurity
();
return
currentFocusCycleRoot
;
return
currentFocusCycleRoot
;
}
else
{
if
(
focusLog
.
isLoggable
(
PlatformLogger
.
FINER
))
{
focusLog
.
finer
(
"This manager is "
+
this
+
", current is "
+
getCurrentKeyboardFocusManager
());
}
throw
new
SecurityException
(
notPrivileged
);
}
}
}
}
}
...
@@ -1235,16 +1255,27 @@ public abstract class KeyboardFocusManager
...
@@ -1235,16 +1255,27 @@ public abstract class KeyboardFocusManager
* In that case, the current focus cycle root is used to differentiate
* In that case, the current focus cycle root is used to differentiate
* among the possibilities.
* among the possibilities.
* <p>
* <p>
* If a SecurityManager is installed, the calling thread must be granted
* the "replaceKeyboardFocusManager" AWTPermission. If this permission is
* not granted, this method will throw a SecurityException, and the current
* focus cycle root will not be changed.
* <p>
* This method is intended to be used only by KeyboardFocusManagers and
* This method is intended to be used only by KeyboardFocusManagers and
* focus implementations. It is not for general client use.
* focus implementations. It is not for general client use.
*
*
* @param newFocusCycleRoot the new focus cycle root
* @param newFocusCycleRoot the new focus cycle root
* @see #getCurrentFocusCycleRoot
* @see #getCurrentFocusCycleRoot
* @see #getGlobalCurrentFocusCycleRoot
* @see #getGlobalCurrentFocusCycleRoot
* @throws SecurityException if the calling thread does not have
* "replaceKeyboardFocusManager" permission
* @beaninfo
* @beaninfo
* bound: true
* bound: true
*/
*/
public
void
setGlobalCurrentFocusCycleRoot
(
Container
newFocusCycleRoot
)
{
public
void
setGlobalCurrentFocusCycleRoot
(
Container
newFocusCycleRoot
)
throws
SecurityException
{
checkReplaceKFMPermission
();
Container
oldFocusCycleRoot
;
Container
oldFocusCycleRoot
;
synchronized
(
KeyboardFocusManager
.
class
)
{
synchronized
(
KeyboardFocusManager
.
class
)
{
...
@@ -1256,6 +1287,15 @@ public abstract class KeyboardFocusManager
...
@@ -1256,6 +1287,15 @@ public abstract class KeyboardFocusManager
newFocusCycleRoot
);
newFocusCycleRoot
);
}
}
void
setGlobalCurrentFocusCycleRootPriv
(
final
Container
newFocusCycleRoot
)
{
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
Void
>()
{
public
Void
run
()
{
setGlobalCurrentFocusCycleRoot
(
newFocusCycleRoot
);
return
null
;
}
});
}
/**
/**
* Adds a PropertyChangeListener to the listener list. The listener is
* Adds a PropertyChangeListener to the listener list. The listener is
* registered for all bound properties of this class, including the
* registered for all bound properties of this class, including the
...
@@ -3065,4 +3105,39 @@ public abstract class KeyboardFocusManager
...
@@ -3065,4 +3105,39 @@ public abstract class KeyboardFocusManager
:
null
;
:
null
;
}
}
}
}
private
static
void
checkReplaceKFMPermission
()
throws
SecurityException
{
SecurityManager
security
=
System
.
getSecurityManager
();
if
(
security
!=
null
)
{
if
(
replaceKeyboardFocusManagerPermission
==
null
)
{
replaceKeyboardFocusManagerPermission
=
new
AWTPermission
(
"replaceKeyboardFocusManager"
);
}
security
.
checkPermission
(
replaceKeyboardFocusManagerPermission
);
}
}
// Checks if this KeyboardFocusManager instance is the current KFM,
// or otherwise checks if the calling thread has "replaceKeyboardFocusManager"
// permission. Here's the reasoning to do so:
//
// A system KFM instance (which is the current KFM by default) may have no
// "replaceKFM" permission when a client code is on the call stack beneath,
// but still it should be able to execute the methods protected by this check
// due to the system KFM is trusted (and so it does like "privileged").
//
// If this KFM instance is not the current KFM but the client code has all
// permissions we can't throw SecurityException because it would contradict
// the security concepts. In this case the trusted client code is responsible
// for calling the secured methods from KFM instance which is not current.
private
void
checkKFMSecurity
()
throws
SecurityException
{
if
(
this
!=
getCurrentKeyboardFocusManager
())
{
checkReplaceKFMPermission
();
}
}
}
}
src/share/classes/java/awt/Window.java
浏览文件 @
f63cb0a6
...
@@ -506,7 +506,7 @@ public class Window extends Container implements Accessible {
...
@@ -506,7 +506,7 @@ public class Window extends Container implements Accessible {
modalExclusionType
=
Dialog
.
ModalExclusionType
.
NO_EXCLUDE
;
modalExclusionType
=
Dialog
.
ModalExclusionType
.
NO_EXCLUDE
;
SunToolkit
.
checkAndSetPolicy
(
this
,
false
);
SunToolkit
.
checkAndSetPolicy
(
this
);
}
}
/**
/**
...
@@ -2568,7 +2568,7 @@ public class Window extends Container implements Accessible {
...
@@ -2568,7 +2568,7 @@ public class Window extends Container implements Accessible {
}
}
}
}
KeyboardFocusManager
.
getCurrentKeyboardFocusManager
().
KeyboardFocusManager
.
getCurrentKeyboardFocusManager
().
clearGlobalFocusOwner
();
clearGlobalFocusOwner
Priv
();
}
}
}
}
...
...
src/share/classes/javax/swing/JApplet.java
浏览文件 @
f63cb0a6
...
@@ -149,7 +149,7 @@ public class JApplet extends Applet implements Accessible,
...
@@ -149,7 +149,7 @@ public class JApplet extends Applet implements Accessible,
setRootPaneCheckingEnabled
(
true
);
setRootPaneCheckingEnabled
(
true
);
setFocusTraversalPolicyProvider
(
true
);
setFocusTraversalPolicyProvider
(
true
);
sun
.
awt
.
SunToolkit
.
checkAndSetPolicy
(
this
,
true
);
sun
.
awt
.
SunToolkit
.
checkAndSetPolicy
(
this
);
enableEvents
(
AWTEvent
.
KEY_EVENT_MASK
);
enableEvents
(
AWTEvent
.
KEY_EVENT_MASK
);
}
}
...
...
src/share/classes/javax/swing/JComponent.java
浏览文件 @
f63cb0a6
...
@@ -4148,6 +4148,9 @@ public abstract class JComponent extends Container implements Serializable,
...
@@ -4148,6 +4148,9 @@ public abstract class JComponent extends Container implements Serializable,
* Refer to
* Refer to
* {@link java.awt.Component#setFocusTraversalKeys}
* {@link java.awt.Component#setFocusTraversalKeys}
* for a complete description of this method.
* for a complete description of this method.
* <p>
* This method may throw a {@code ClassCastException} if any {@code Object}
* in {@code keystrokes} is not an {@code AWTKeyStroke}.
*
*
* @param id one of KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,
* @param id one of KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,
* KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, or
* KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, or
...
@@ -4160,8 +4163,7 @@ public abstract class JComponent extends Container implements Serializable,
...
@@ -4160,8 +4163,7 @@ public abstract class JComponent extends Container implements Serializable,
* KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,
* KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,
* KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, or
* KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, or
* KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS, or if keystrokes
* KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS, or if keystrokes
* contains null, or if any Object in keystrokes is not an
* contains null, or if any keystroke represents a KEY_TYPED event,
* AWTKeyStroke, or if any keystroke represents a KEY_TYPED event,
* or if any keystroke already maps to another focus traversal
* or if any keystroke already maps to another focus traversal
* operation for this Component
* operation for this Component
* @since 1.5
* @since 1.5
...
@@ -5571,6 +5573,7 @@ public abstract class JComponent extends Container implements Serializable,
...
@@ -5571,6 +5573,7 @@ public abstract class JComponent extends Container implements Serializable,
* {@inheritDoc}
* {@inheritDoc}
*/
*/
@Override
@Override
@Deprecated
public
void
hide
()
{
public
void
hide
()
{
boolean
showing
=
isShowing
();
boolean
showing
=
isShowing
();
super
.
hide
();
super
.
hide
();
...
...
src/share/classes/javax/swing/JDialog.java
浏览文件 @
f63cb0a6
...
@@ -654,7 +654,7 @@ public class JDialog extends Dialog implements WindowConstants,
...
@@ -654,7 +654,7 @@ public class JDialog extends Dialog implements WindowConstants,
getRootPane
().
setWindowDecorationStyle
(
JRootPane
.
PLAIN_DIALOG
);
getRootPane
().
setWindowDecorationStyle
(
JRootPane
.
PLAIN_DIALOG
);
}
}
}
}
sun
.
awt
.
SunToolkit
.
checkAndSetPolicy
(
this
,
true
);
sun
.
awt
.
SunToolkit
.
checkAndSetPolicy
(
this
);
}
}
/**
/**
...
...
src/share/classes/javax/swing/JFrame.java
浏览文件 @
f63cb0a6
...
@@ -266,7 +266,7 @@ public class JFrame extends Frame implements WindowConstants,
...
@@ -266,7 +266,7 @@ public class JFrame extends Frame implements WindowConstants,
getRootPane
().
setWindowDecorationStyle
(
JRootPane
.
FRAME
);
getRootPane
().
setWindowDecorationStyle
(
JRootPane
.
FRAME
);
}
}
}
}
sun
.
awt
.
SunToolkit
.
checkAndSetPolicy
(
this
,
true
);
sun
.
awt
.
SunToolkit
.
checkAndSetPolicy
(
this
);
}
}
/**
/**
...
...
src/share/classes/javax/swing/JInternalFrame.java
浏览文件 @
f63cb0a6
...
@@ -349,7 +349,7 @@ public class JInternalFrame extends JComponent implements
...
@@ -349,7 +349,7 @@ public class JInternalFrame extends JComponent implements
setRootPaneCheckingEnabled
(
true
);
setRootPaneCheckingEnabled
(
true
);
desktopIcon
=
new
JDesktopIcon
(
this
);
desktopIcon
=
new
JDesktopIcon
(
this
);
updateUI
();
updateUI
();
sun
.
awt
.
SunToolkit
.
checkAndSetPolicy
(
this
,
true
);
sun
.
awt
.
SunToolkit
.
checkAndSetPolicy
(
this
);
addPropertyChangeListenerIfNecessary
();
addPropertyChangeListenerIfNecessary
();
}
}
...
...
src/share/classes/javax/swing/JWindow.java
浏览文件 @
f63cb0a6
...
@@ -264,7 +264,7 @@ public class JWindow extends Window implements Accessible,
...
@@ -264,7 +264,7 @@ public class JWindow extends Window implements Accessible,
setLocale
(
JComponent
.
getDefaultLocale
()
);
setLocale
(
JComponent
.
getDefaultLocale
()
);
setRootPane
(
createRootPane
());
setRootPane
(
createRootPane
());
setRootPaneCheckingEnabled
(
true
);
setRootPaneCheckingEnabled
(
true
);
sun
.
awt
.
SunToolkit
.
checkAndSetPolicy
(
this
,
true
);
sun
.
awt
.
SunToolkit
.
checkAndSetPolicy
(
this
);
}
}
/**
/**
...
...
src/share/classes/javax/swing/UIManager.java
浏览文件 @
f63cb0a6
...
@@ -191,6 +191,7 @@ public class UIManager implements Serializable
...
@@ -191,6 +191,7 @@ public class UIManager implements Serializable
private
UIDefaults
[]
tables
=
new
UIDefaults
[
2
];
private
UIDefaults
[]
tables
=
new
UIDefaults
[
2
];
boolean
initialized
=
false
;
boolean
initialized
=
false
;
boolean
focusPolicyInitialized
=
false
;
MultiUIDefaults
multiUIDefaults
=
new
MultiUIDefaults
(
tables
);
MultiUIDefaults
multiUIDefaults
=
new
MultiUIDefaults
(
tables
);
LookAndFeel
lookAndFeel
;
LookAndFeel
lookAndFeel
;
LookAndFeel
multiLookAndFeel
=
null
;
LookAndFeel
multiLookAndFeel
=
null
;
...
@@ -1000,6 +1001,7 @@ public class UIManager implements Serializable
...
@@ -1000,6 +1001,7 @@ public class UIManager implements Serializable
*/
*/
public
static
ComponentUI
getUI
(
JComponent
target
)
{
public
static
ComponentUI
getUI
(
JComponent
target
)
{
maybeInitialize
();
maybeInitialize
();
maybeInitializeFocusPolicy
(
target
);
ComponentUI
ui
=
null
;
ComponentUI
ui
=
null
;
LookAndFeel
multiLAF
=
getLAFState
().
multiLookAndFeel
;
LookAndFeel
multiLAF
=
getLAFState
().
multiLookAndFeel
;
if
(
multiLAF
!=
null
)
{
if
(
multiLAF
!=
null
)
{
...
@@ -1422,6 +1424,27 @@ public class UIManager implements Serializable
...
@@ -1422,6 +1424,27 @@ public class UIManager implements Serializable
}
}
}
}
/*
* Sets default swing focus traversal policy.
*/
private
static
void
maybeInitializeFocusPolicy
(
JComponent
comp
)
{
// Check for JRootPane which indicates that a swing toplevel
// is coming, in which case a swing default focus policy
// should be instatiated. See 7125044.
if
(
comp
instanceof
JRootPane
)
{
synchronized
(
classLock
)
{
if
(!
getLAFState
().
focusPolicyInitialized
)
{
getLAFState
().
focusPolicyInitialized
=
true
;
if
(
FocusManager
.
isFocusManagerEnabled
())
{
KeyboardFocusManager
.
getCurrentKeyboardFocusManager
().
setDefaultFocusTraversalPolicy
(
new
LayoutFocusTraversalPolicy
());
}
}
}
}
}
/*
/*
* Only called by maybeInitialize().
* Only called by maybeInitialize().
...
@@ -1433,17 +1456,6 @@ public class UIManager implements Serializable
...
@@ -1433,17 +1456,6 @@ public class UIManager implements Serializable
initializeAuxiliaryLAFs
(
swingProps
);
initializeAuxiliaryLAFs
(
swingProps
);
initializeInstalledLAFs
(
swingProps
);
initializeInstalledLAFs
(
swingProps
);
// Enable the Swing default LayoutManager.
String
toolkitName
=
Toolkit
.
getDefaultToolkit
().
getClass
().
getName
();
// don't set default policy if this is XAWT.
if
(!
"sun.awt.X11.XToolkit"
.
equals
(
toolkitName
))
{
if
(
FocusManager
.
isFocusManagerEnabled
())
{
KeyboardFocusManager
.
getCurrentKeyboardFocusManager
().
setDefaultFocusTraversalPolicy
(
new
LayoutFocusTraversalPolicy
());
}
}
// Install Swing's PaintEventDispatcher
// Install Swing's PaintEventDispatcher
if
(
RepaintManager
.
HANDLE_TOP_LEVEL_PAINT
)
{
if
(
RepaintManager
.
HANDLE_TOP_LEVEL_PAINT
)
{
sun
.
awt
.
PaintEventDispatcher
.
setPaintEventDispatcher
(
sun
.
awt
.
PaintEventDispatcher
.
setPaintEventDispatcher
(
...
...
src/share/classes/sun/awt/AWTAccessor.java
浏览文件 @
f63cb0a6
...
@@ -34,6 +34,8 @@ import java.awt.geom.Point2D;
...
@@ -34,6 +34,8 @@ import java.awt.geom.Point2D;
import
java.awt.peer.ComponentPeer
;
import
java.awt.peer.ComponentPeer
;
import
java.security.AccessControlContext
;
import
java.security.AccessControlContext
;
import
java.io.File
;
/**
/**
* The AWTAccessor utility class.
* The AWTAccessor utility class.
* The main purpose of this class is to enable accessing
* The main purpose of this class is to enable accessing
...
@@ -455,7 +457,7 @@ public final class AWTAccessor {
...
@@ -455,7 +457,7 @@ public final class AWTAccessor {
/*
/*
* Sets the files the user selects
* Sets the files the user selects
*/
*/
void
setFiles
(
FileDialog
fileDialog
,
String
directory
,
String
files
[]);
void
setFiles
(
FileDialog
fileDialog
,
File
files
[]);
/*
/*
* Sets the file the user selects
* Sets the file the user selects
...
...
src/share/classes/sun/awt/SunToolkit.java
浏览文件 @
f63cb0a6
...
@@ -461,48 +461,11 @@ public abstract class SunToolkit extends Toolkit
...
@@ -461,48 +461,11 @@ public abstract class SunToolkit extends Toolkit
AWTAccessor
.
getWindowAccessor
().
setLWRequestStatus
(
changed
,
status
);
AWTAccessor
.
getWindowAccessor
().
setLWRequestStatus
(
changed
,
status
);
};
};
public
static
void
checkAndSetPolicy
(
Container
cont
,
boolean
isSwingCont
)
public
static
void
checkAndSetPolicy
(
Container
cont
)
{
{
FocusTraversalPolicy
defaultPolicy
=
KeyboardFocusManager
.
FocusTraversalPolicy
defaultPolicy
=
KeyboardFocusManager
getCurrentKeyboardFocusManager
().
.
getCurrentKeyboardFocusManager
().
getDefaultFocusTraversalPolicy
();
getDefaultFocusTraversalPolicy
();
String
toolkitName
=
Toolkit
.
getDefaultToolkit
().
getClass
().
getName
();
// if this is not XAWT then use default policy
// because Swing change it
if
(!
"sun.awt.X11.XToolkit"
.
equals
(
toolkitName
))
{
cont
.
setFocusTraversalPolicy
(
defaultPolicy
);
return
;
}
String
policyName
=
defaultPolicy
.
getClass
().
getName
();
if
(
DefaultFocusTraversalPolicy
.
class
!=
defaultPolicy
.
getClass
())
{
// Policy was changed
// Check if it is awt policy or swing policy
// If it is Swing policy we shouldn't use it in AWT frames
// If it is AWT policy we shouldn't use it in Swing frames
// Otherwise we should use this policy
if
(
policyName
.
startsWith
(
"java.awt."
))
{
// AWT
if
(
isSwingCont
)
{
// Can't use AWT policy in Swing windows - should use Swing's one.
defaultPolicy
=
createLayoutPolicy
();
}
else
{
// New awt policy.
}
}
else
if
(
policyName
.
startsWith
(
"javax.swing."
))
{
if
(
isSwingCont
)
{
// New Swing's policy
}
else
{
defaultPolicy
=
new
DefaultFocusTraversalPolicy
();
}
}
}
else
{
// Policy is default, use different default policy for swing
if
(
isSwingCont
)
{
defaultPolicy
=
createLayoutPolicy
();
}
}
cont
.
setFocusTraversalPolicy
(
defaultPolicy
);
cont
.
setFocusTraversalPolicy
(
defaultPolicy
);
}
}
...
...
src/share/demo/jfc/Notepad/Notepad.java
浏览文件 @
f63cb0a6
...
@@ -39,71 +39,18 @@
...
@@ -39,71 +39,18 @@
import
java.awt.BorderLayout
;
import
java.awt.*
;
import
java.awt.Color
;
import
java.awt.event.*
;
import
java.awt.Component
;
import
java.beans.*
;
import
java.awt.Container
;
import
java.io.*
;
import
java.awt.FileDialog
;
import
java.net.*
;
import
java.awt.Font
;
import
java.util.*
;
import
java.awt.Frame
;
import
java.util.logging.*
;
import
java.awt.Graphics
;
import
javax.swing.*
;
import
java.awt.Insets
;
import
javax.swing.undo.*
;
import
java.awt.event.ActionEvent
;
import
javax.swing.text.*
;
import
java.awt.event.WindowAdapter
;
import
javax.swing.event.*
;
import
java.awt.event.WindowEvent
;
import
java.beans.PropertyChangeEvent
;
import
java.beans.PropertyChangeListener
;
import
java.io.File
;
import
java.io.FileReader
;
import
java.io.FileWriter
;
import
java.io.IOException
;
import
java.io.Reader
;
import
java.io.Writer
;
import
java.net.URL
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Locale
;
import
java.util.Map
;
import
java.util.MissingResourceException
;
import
java.util.ResourceBundle
;
import
java.util.StringTokenizer
;
import
java.util.logging.Level
;
import
java.util.logging.Logger
;
import
javax.swing.AbstractAction
;
import
javax.swing.Action
;
import
javax.swing.BorderFactory
;
import
javax.swing.Box
;
import
javax.swing.BoxLayout
;
import
javax.swing.ImageIcon
;
import
javax.swing.JButton
;
import
javax.swing.JComponent
;
import
javax.swing.JFileChooser
;
import
javax.swing.JFrame
;
import
javax.swing.JMenu
;
import
javax.swing.JMenuBar
;
import
javax.swing.JMenuItem
;
import
javax.swing.JOptionPane
;
import
javax.swing.JPanel
;
import
javax.swing.JProgressBar
;
import
javax.swing.JScrollPane
;
import
javax.swing.JTextArea
;
import
javax.swing.JToolBar
;
import
javax.swing.JViewport
;
import
javax.swing.SwingUtilities
;
import
javax.swing.UIManager
;
import
javax.swing.UIManager.LookAndFeelInfo
;
import
javax.swing.UIManager.LookAndFeelInfo
;
import
javax.swing.event.UndoableEditEvent
;
import
javax.swing.event.UndoableEditListener
;
import
javax.swing.text.BadLocationException
;
import
javax.swing.text.Document
;
import
javax.swing.text.JTextComponent
;
import
javax.swing.text.PlainDocument
;
import
javax.swing.text.Segment
;
import
javax.swing.text.TextAction
;
import
javax.swing.undo.CannotRedoException
;
import
javax.swing.undo.CannotUndoException
;
import
javax.swing.undo.UndoManager
;
/**
/**
...
@@ -115,16 +62,27 @@ import javax.swing.undo.UndoManager;
...
@@ -115,16 +62,27 @@ import javax.swing.undo.UndoManager;
@SuppressWarnings
(
"serial"
)
@SuppressWarnings
(
"serial"
)
class
Notepad
extends
JPanel
{
class
Notepad
extends
JPanel
{
protected
static
Properties
properties
;
private
static
ResourceBundle
resources
;
private
static
ResourceBundle
resources
;
private
final
static
String
EXIT_AFTER_PAINT
=
"-exit"
;
private
final
static
String
EXIT_AFTER_PAINT
=
"-exit"
;
private
static
boolean
exitAfterFirstPaint
;
private
static
boolean
exitAfterFirstPaint
;
private
static
final
String
[]
MENUBAR_KEYS
=
{
"file"
,
"edit"
,
"debug"
};
private
static
final
String
[]
TOOLBAR_KEYS
=
{
"new"
,
"open"
,
"save"
,
"-"
,
"cut"
,
"copy"
,
"paste"
};
private
static
final
String
[]
FILE_KEYS
=
{
"new"
,
"open"
,
"save"
,
"-"
,
"exit"
};
private
static
final
String
[]
EDIT_KEYS
=
{
"cut"
,
"copy"
,
"paste"
,
"-"
,
"undo"
,
"redo"
};
private
static
final
String
[]
DEBUG_KEYS
=
{
"dump"
,
"showElementTree"
};
static
{
static
{
try
{
try
{
properties
=
new
Properties
();
properties
.
load
(
Notepad
.
class
.
getResourceAsStream
(
"resources/NotepadSystem.properties"
));
resources
=
ResourceBundle
.
getBundle
(
"resources.Notepad"
,
resources
=
ResourceBundle
.
getBundle
(
"resources.Notepad"
,
Locale
.
getDefault
());
Locale
.
getDefault
());
}
catch
(
MissingResourceException
mre
)
{
}
catch
(
MissingResourceException
|
IOException
e
)
{
System
.
err
.
println
(
"resources/Notepad.properties not found"
);
System
.
err
.
println
(
"resources/Notepad.properties "
+
"or resources/NotepadSystem.properties not found"
);
System
.
exit
(
1
);
System
.
exit
(
1
);
}
}
}
}
...
@@ -163,26 +121,22 @@ class Notepad extends JPanel {
...
@@ -163,26 +121,22 @@ class Notepad extends JPanel {
// install the command table
// install the command table
commands
=
new
HashMap
<
Object
,
Action
>();
commands
=
new
HashMap
<
Object
,
Action
>();
Action
[]
actions
=
getActions
();
Action
[]
actions
=
getActions
();
for
(
int
i
=
0
;
i
<
actions
.
length
;
i
++)
{
for
(
Action
a
:
actions
)
{
Action
a
=
actions
[
i
];
//commands.put(a.getText(Action.NAME), a);
commands
.
put
(
a
.
getValue
(
Action
.
NAME
),
a
);
commands
.
put
(
a
.
getValue
(
Action
.
NAME
),
a
);
}
}
JScrollPane
scroller
=
new
JScrollPane
();
JScrollPane
scroller
=
new
JScrollPane
();
JViewport
port
=
scroller
.
getViewport
();
JViewport
port
=
scroller
.
getViewport
();
port
.
add
(
editor
);
port
.
add
(
editor
);
try
{
String
vpFlag
=
resources
.
getString
(
"ViewportBackingStore"
);
String
vpFlag
=
getProperty
(
"ViewportBackingStore"
);
if
(
vpFlag
!=
null
)
{
Boolean
bs
=
Boolean
.
valueOf
(
vpFlag
);
Boolean
bs
=
Boolean
.
valueOf
(
vpFlag
);
port
.
setScrollMode
(
bs
.
booleanValue
()
port
.
setScrollMode
(
bs
?
JViewport
.
BACKINGSTORE_SCROLL_MODE
?
JViewport
.
BACKINGSTORE_SCROLL_MODE
:
JViewport
.
BLIT_SCROLL_MODE
);
:
JViewport
.
BLIT_SCROLL_MODE
);
}
catch
(
MissingResourceException
ignored
)
{
// just use the viewport default
}
}
menuItems
=
new
HashMap
<
String
,
JMenuItem
>();
JPanel
panel
=
new
JPanel
();
JPanel
panel
=
new
JPanel
();
panel
.
setLayout
(
new
BorderLayout
());
panel
.
setLayout
(
new
BorderLayout
());
panel
.
add
(
"North"
,
createToolbar
());
panel
.
add
(
"North"
,
createToolbar
());
...
@@ -191,31 +145,26 @@ class Notepad extends JPanel {
...
@@ -191,31 +145,26 @@ class Notepad extends JPanel {
add
(
"South"
,
createStatusbar
());
add
(
"South"
,
createStatusbar
());
}
}
public
static
void
main
(
String
[]
args
)
{
public
static
void
main
(
String
[]
args
)
throws
Exception
{
try
{
if
(
args
.
length
>
0
&&
args
[
0
].
equals
(
EXIT_AFTER_PAINT
))
{
if
(
args
.
length
>
0
&&
args
[
0
].
equals
(
EXIT_AFTER_PAINT
))
{
exitAfterFirstPaint
=
true
;
exitAfterFirstPaint
=
true
;
}
SwingUtilities
.
invokeAndWait
(
new
Runnable
()
{
public
void
run
()
{
JFrame
frame
=
new
JFrame
();
frame
.
setTitle
(
resources
.
getString
(
"Title"
));
frame
.
setBackground
(
Color
.
lightGray
);
frame
.
getContentPane
().
setLayout
(
new
BorderLayout
());
Notepad
notepad
=
new
Notepad
();
frame
.
getContentPane
().
add
(
"Center"
,
notepad
);
frame
.
setJMenuBar
(
notepad
.
createMenubar
());
frame
.
addWindowListener
(
new
AppCloser
());
frame
.
pack
();
frame
.
setSize
(
500
,
600
);
frame
.
setVisible
(
true
);
}
}
SwingUtilities
.
invokeAndWait
(
new
Runnable
()
{
});
public
void
run
()
{
JFrame
frame
=
new
JFrame
();
frame
.
setTitle
(
resources
.
getString
(
"Title"
));
frame
.
setBackground
(
Color
.
lightGray
);
frame
.
getContentPane
().
setLayout
(
new
BorderLayout
());
Notepad
notepad
=
new
Notepad
();
frame
.
getContentPane
().
add
(
"Center"
,
notepad
);
frame
.
setJMenuBar
(
notepad
.
createMenubar
());
frame
.
addWindowListener
(
new
AppCloser
());
frame
.
pack
();
frame
.
setSize
(
500
,
600
);
frame
.
setVisible
(
true
);
}
});
}
catch
(
Throwable
t
)
{
Logger
.
getLogger
(
Notepad
.
class
.
getName
()).
log
(
Level
.
SEVERE
,
"uncaught exception"
,
t
);
}
}
}
/**
/**
...
@@ -274,9 +223,7 @@ class Notepad extends JPanel {
...
@@ -274,9 +223,7 @@ class Notepad extends JPanel {
/**
/**
* This is the hook through which all menu items are
* This is the hook through which all menu items are
* created. It registers the result with the menuitem
* created.
* hashtable so that it can be fetched with getMenuItem().
* @see #getMenuItem
*/
*/
protected
JMenuItem
createMenuItem
(
String
cmd
)
{
protected
JMenuItem
createMenuItem
(
String
cmd
)
{
JMenuItem
mi
=
new
JMenuItem
(
getResourceString
(
cmd
+
labelSuffix
));
JMenuItem
mi
=
new
JMenuItem
(
getResourceString
(
cmd
+
labelSuffix
));
...
@@ -285,7 +232,7 @@ class Notepad extends JPanel {
...
@@ -285,7 +232,7 @@ class Notepad extends JPanel {
mi
.
setHorizontalTextPosition
(
JButton
.
RIGHT
);
mi
.
setHorizontalTextPosition
(
JButton
.
RIGHT
);
mi
.
setIcon
(
new
ImageIcon
(
url
));
mi
.
setIcon
(
new
ImageIcon
(
url
));
}
}
String
astr
=
get
ResourceString
(
cmd
+
actionSuffix
);
String
astr
=
get
Property
(
cmd
+
actionSuffix
);
if
(
astr
==
null
)
{
if
(
astr
==
null
)
{
astr
=
cmd
;
astr
=
cmd
;
}
}
...
@@ -298,25 +245,17 @@ class Notepad extends JPanel {
...
@@ -298,25 +245,17 @@ class Notepad extends JPanel {
}
else
{
}
else
{
mi
.
setEnabled
(
false
);
mi
.
setEnabled
(
false
);
}
}
menuItems
.
put
(
cmd
,
mi
);
return
mi
;
return
mi
;
}
}
/**
* Fetch the menu item that was created for the given
* command.
* @param cmd Name of the action.
* @returns item created for the given command or null
* if one wasn't created.
*/
protected
JMenuItem
getMenuItem
(
String
cmd
)
{
return
menuItems
.
get
(
cmd
);
}
protected
Action
getAction
(
String
cmd
)
{
protected
Action
getAction
(
String
cmd
)
{
return
commands
.
get
(
cmd
);
return
commands
.
get
(
cmd
);
}
}
protected
String
getProperty
(
String
key
)
{
return
properties
.
getProperty
(
key
);
}
protected
String
getResourceString
(
String
nm
)
{
protected
String
getResourceString
(
String
nm
)
{
String
str
;
String
str
;
try
{
try
{
...
@@ -330,20 +269,11 @@ class Notepad extends JPanel {
...
@@ -330,20 +269,11 @@ class Notepad extends JPanel {
protected
URL
getResource
(
String
key
)
{
protected
URL
getResource
(
String
key
)
{
String
name
=
getResourceString
(
key
);
String
name
=
getResourceString
(
key
);
if
(
name
!=
null
)
{
if
(
name
!=
null
)
{
URL
url
=
this
.
getClass
().
getResource
(
name
);
return
this
.
getClass
().
getResource
(
name
);
return
url
;
}
}
return
null
;
return
null
;
}
}
protected
Container
getToolbar
()
{
return
toolbar
;
}
protected
JMenuBar
getMenubar
()
{
return
menubar
;
}
/**
/**
* Create a status bar
* Create a status bar
*/
*/
...
@@ -368,12 +298,11 @@ class Notepad extends JPanel {
...
@@ -368,12 +298,11 @@ class Notepad extends JPanel {
*/
*/
private
Component
createToolbar
()
{
private
Component
createToolbar
()
{
toolbar
=
new
JToolBar
();
toolbar
=
new
JToolBar
();
String
[]
toolKeys
=
tokenize
(
getResourceString
(
"toolbar"
));
for
(
String
toolKey:
getToolBarKeys
())
{
for
(
int
i
=
0
;
i
<
toolKeys
.
length
;
i
++)
{
if
(
toolKey
.
equals
(
"-"
))
{
if
(
toolKeys
[
i
].
equals
(
"-"
))
{
toolbar
.
add
(
Box
.
createHorizontalStrut
(
5
));
toolbar
.
add
(
Box
.
createHorizontalStrut
(
5
));
}
else
{
}
else
{
toolbar
.
add
(
createTool
(
toolKey
s
[
i
]
));
toolbar
.
add
(
createTool
(
toolKey
));
}
}
}
}
toolbar
.
add
(
Box
.
createHorizontalGlue
());
toolbar
.
add
(
Box
.
createHorizontalGlue
());
...
@@ -408,7 +337,7 @@ class Notepad extends JPanel {
...
@@ -408,7 +337,7 @@ class Notepad extends JPanel {
b
.
setRequestFocusEnabled
(
false
);
b
.
setRequestFocusEnabled
(
false
);
b
.
setMargin
(
new
Insets
(
1
,
1
,
1
,
1
));
b
.
setMargin
(
new
Insets
(
1
,
1
,
1
,
1
));
String
astr
=
get
ResourceString
(
key
+
actionSuffix
);
String
astr
=
get
Property
(
key
+
actionSuffix
);
if
(
astr
==
null
)
{
if
(
astr
==
null
)
{
astr
=
key
;
astr
=
key
;
}
}
...
@@ -428,44 +357,18 @@ class Notepad extends JPanel {
...
@@ -428,44 +357,18 @@ class Notepad extends JPanel {
return
b
;
return
b
;
}
}
/**
* Take the given string and chop it up into a series
* of strings on whitespace boundaries. This is useful
* for trying to get an array of strings out of the
* resource file.
*/
protected
String
[]
tokenize
(
String
input
)
{
List
<
String
>
v
=
new
ArrayList
<
String
>();
StringTokenizer
t
=
new
StringTokenizer
(
input
);
String
cmd
[];
while
(
t
.
hasMoreTokens
())
{
v
.
add
(
t
.
nextToken
());
}
cmd
=
new
String
[
v
.
size
()];
for
(
int
i
=
0
;
i
<
cmd
.
length
;
i
++)
{
cmd
[
i
]
=
v
.
get
(
i
);
}
return
cmd
;
}
/**
/**
* Create the menubar for the app. By default this pulls the
* Create the menubar for the app. By default this pulls the
* definition of the menu from the associated resource file.
* definition of the menu from the associated resource file.
*/
*/
protected
JMenuBar
createMenubar
()
{
protected
JMenuBar
createMenubar
()
{
JMenuItem
mi
;
JMenuBar
mb
=
new
JMenuBar
();
JMenuBar
mb
=
new
JMenuBar
();
for
(
String
menuKey:
getMenuBarKeys
()){
String
[]
menuKeys
=
tokenize
(
getResourceString
(
"menubar"
));
JMenu
m
=
createMenu
(
menuKey
);
for
(
int
i
=
0
;
i
<
menuKeys
.
length
;
i
++)
{
JMenu
m
=
createMenu
(
menuKeys
[
i
]);
if
(
m
!=
null
)
{
if
(
m
!=
null
)
{
mb
.
add
(
m
);
mb
.
add
(
m
);
}
}
}
}
this
.
menubar
=
mb
;
return
mb
;
return
mb
;
}
}
...
@@ -474,19 +377,42 @@ class Notepad extends JPanel {
...
@@ -474,19 +377,42 @@ class Notepad extends JPanel {
* definition of the menu from the associated resource file.
* definition of the menu from the associated resource file.
*/
*/
protected
JMenu
createMenu
(
String
key
)
{
protected
JMenu
createMenu
(
String
key
)
{
String
[]
itemKeys
=
tokenize
(
getResourceString
(
key
));
JMenu
menu
=
new
JMenu
(
getResourceString
(
key
+
labelSuffix
));
JMenu
menu
=
new
JMenu
(
getResourceString
(
key
+
"Label"
));
for
(
String
itemKey:
getItemKeys
(
key
))
{
for
(
int
i
=
0
;
i
<
itemKeys
.
length
;
i
++)
{
if
(
itemKey
.
equals
(
"-"
))
{
if
(
itemKeys
[
i
].
equals
(
"-"
))
{
menu
.
addSeparator
();
menu
.
addSeparator
();
}
else
{
}
else
{
JMenuItem
mi
=
createMenuItem
(
itemKey
s
[
i
]
);
JMenuItem
mi
=
createMenuItem
(
itemKey
);
menu
.
add
(
mi
);
menu
.
add
(
mi
);
}
}
}
}
return
menu
;
return
menu
;
}
}
/**
* Get keys for menus
*/
protected
String
[]
getItemKeys
(
String
key
)
{
switch
(
key
)
{
case
"file"
:
return
FILE_KEYS
;
case
"edit"
:
return
EDIT_KEYS
;
case
"debug"
:
return
DEBUG_KEYS
;
default
:
return
null
;
}
}
protected
String
[]
getMenuBarKeys
()
{
return
MENUBAR_KEYS
;
}
protected
String
[]
getToolBarKeys
()
{
return
TOOLBAR_KEYS
;
}
// Yarked from JMenu, ideally this would be public.
// Yarked from JMenu, ideally this would be public.
protected
PropertyChangeListener
createActionChangeListener
(
JMenuItem
b
)
{
protected
PropertyChangeListener
createActionChangeListener
(
JMenuItem
b
)
{
return
new
ActionChangedListener
(
b
);
return
new
ActionChangedListener
(
b
);
...
@@ -516,13 +442,11 @@ class Notepad extends JPanel {
...
@@ -516,13 +442,11 @@ class Notepad extends JPanel {
}
}
private
JTextComponent
editor
;
private
JTextComponent
editor
;
private
Map
<
Object
,
Action
>
commands
;
private
Map
<
Object
,
Action
>
commands
;
private
Map
<
String
,
JMenuItem
>
menuItems
;
private
JMenuBar
menubar
;
private
JToolBar
toolbar
;
private
JToolBar
toolbar
;
private
JComponent
status
;
private
JComponent
status
;
private
JFrame
elementTreeFrame
;
private
JFrame
elementTreeFrame
;
protected
ElementTreePanel
elementTreePanel
;
protected
ElementTreePanel
elementTreePanel
;
protected
FileDialog
fileDialog
;
/**
/**
* Listener for the edits on the current document.
* Listener for the edits on the current document.
*/
*/
...
@@ -773,10 +697,6 @@ class Notepad extends JPanel {
...
@@ -773,10 +697,6 @@ class Notepad extends JPanel {
super
(
showElementTreeAction
);
super
(
showElementTreeAction
);
}
}
ShowElementTreeAction
(
String
nm
)
{
super
(
nm
);
}
public
void
actionPerformed
(
ActionEvent
e
)
{
public
void
actionPerformed
(
ActionEvent
e
)
{
if
(
elementTreeFrame
==
null
)
{
if
(
elementTreeFrame
==
null
)
{
// Create a frame containing an instance of
// Create a frame containing an instance of
...
...
src/share/demo/jfc/Notepad/resources/Notepad.properties
浏览文件 @
f63cb0a6
...
@@ -3,16 +3,6 @@
...
@@ -3,16 +3,6 @@
Title
=
Notepad
Title
=
Notepad
ElementTreeFrameTitle
=
Elements
ElementTreeFrameTitle
=
Elements
# The following string should NOT be translated: ViewportBackingStore
ViewportBackingStore
=
false
# menubar definition
#
# Each of the strings that follow form a key to be
# used to the actual menu definition.
# The following string should NOT be translated: menubar
menubar
=
file edit debug
# file Menu definition
# file Menu definition
#
#
...
@@ -24,8 +14,6 @@ menubar=file edit debug
...
@@ -24,8 +14,6 @@ menubar=file edit debug
# save -> Notepad.saveAction
# save -> Notepad.saveAction
# exit -> Notepad.exitAction
# exit -> Notepad.exitAction
# The following string should NOT be translated: file
file
=
new open save - exit
fileLabel
=
File
fileLabel
=
File
openLabel
=
Open
openLabel
=
Open
openImage
=
resources/open.gif
openImage
=
resources/open.gif
...
@@ -42,38 +30,22 @@ exitLabel=Exit
...
@@ -42,38 +30,22 @@ exitLabel=Exit
# copy -> JTextComponent.copyAction
# copy -> JTextComponent.copyAction
# paste -> JTextComponent.pasteAction
# paste -> JTextComponent.pasteAction
# The following string should NOT be translated: edit
edit
=
cut copy paste - undo redo
editLabel
=
Edit
editLabel
=
Edit
cutLabel
=
Cut
cutLabel
=
Cut
# The following string should NOT be translated: cutAction
cutAction
=
cut-to-clipboard
cutImage
=
resources/cut.gif
cutImage
=
resources/cut.gif
copyLabel
=
Copy
copyLabel
=
Copy
# The following string should NOT be translated: copyAction
copyAction
=
copy-to-clipboard
copyImage
=
resources/copy.gif
copyImage
=
resources/copy.gif
pasteLabel
=
Paste
pasteLabel
=
Paste
# The following string should NOT be translated: pasteAction
pasteAction
=
paste-from-clipboard
pasteImage
=
resources/paste.gif
pasteImage
=
resources/paste.gif
undoLabel
=
Undo
undoLabel
=
Undo
# The following string should NOT be translated: undoAction
undoAction
=
Undo
redoLabel
=
Redo
redoLabel
=
Redo
# The following string should NOT be translated: redoAction
redoAction
=
Redo
#
#
# debug Menu definition
# debug Menu definition
#
#
# The following string should NOT be translated: debug
debug
=
dump showElementTree
debugLabel
=
Debug
debugLabel
=
Debug
dumpLabel
=
Dump model to System.err
dumpLabel
=
Dump model to System.err
# The following string should NOT be translated: dumpAction
dumpAction
=
dump-model
showElementTreeLabel
=
Show Elements
showElementTreeLabel
=
Show Elements
# toolbar definition
# toolbar definition
...
@@ -83,8 +55,6 @@ showElementTreeLabel=Show Elements
...
@@ -83,8 +55,6 @@ showElementTreeLabel=Show Elements
# are of course sharable, and in this case are shared
# are of course sharable, and in this case are shared
# with the menu items.
# with the menu items.
# The following string should NOT be translated: toolbar
toolbar
=
new open save - cut copy paste
newTooltip
=
Create a new file
newTooltip
=
Create a new file
openTooltip
=
Open a file
openTooltip
=
Open a file
saveTooltip
=
Save to a file
saveTooltip
=
Save to a file
...
...
src/share/demo/jfc/Notepad/resources/NotepadSystem.properties
0 → 100644
浏览文件 @
f63cb0a6
#
# Non-translatable properties for Notepad example
ViewportBackingStore
=
false
cutAction
=
cut-to-clipboard
copyAction
=
copy-to-clipboard
pasteAction
=
paste-from-clipboard
undoAction
=
Undo
redoAction
=
Redo
dumpAction
=
dump-model
src/share/native/sun/java2d/opengl/OGLContext.h
浏览文件 @
f63cb0a6
...
@@ -84,6 +84,7 @@ typedef struct {
...
@@ -84,6 +84,7 @@ typedef struct {
GLdouble
*
xformMatrix
;
GLdouble
*
xformMatrix
;
GLuint
blitTextureID
;
GLuint
blitTextureID
;
GLint
textureFunction
;
GLint
textureFunction
;
jboolean
vertexCacheEnabled
;
}
OGLContext
;
}
OGLContext
;
/**
/**
...
...
src/share/native/sun/java2d/opengl/OGLTextRenderer.c
浏览文件 @
f63cb0a6
...
@@ -202,11 +202,6 @@ OGLTR_InitGlyphCache(jboolean lcdCache)
...
@@ -202,11 +202,6 @@ OGLTR_InitGlyphCache(jboolean lcdCache)
J2dTraceLn
(
J2D_TRACE_INFO
,
"OGLTR_InitGlyphCache"
);
J2dTraceLn
(
J2D_TRACE_INFO
,
"OGLTR_InitGlyphCache"
);
// init vertex cache (if it hasn't been already)
if
(
!
OGLVertexCache_InitVertexCache
())
{
return
JNI_FALSE
;
}
// init glyph cache data structure
// init glyph cache data structure
gcinfo
=
AccelGlyphCache_Init
(
OGLTR_CACHE_WIDTH
,
gcinfo
=
AccelGlyphCache_Init
(
OGLTR_CACHE_WIDTH
,
OGLTR_CACHE_HEIGHT
,
OGLTR_CACHE_HEIGHT
,
...
@@ -583,6 +578,10 @@ OGLTR_EnableGlyphVertexCache(OGLContext *oglc)
...
@@ -583,6 +578,10 @@ OGLTR_EnableGlyphVertexCache(OGLContext *oglc)
{
{
J2dTraceLn
(
J2D_TRACE_INFO
,
"OGLTR_EnableGlyphVertexCache"
);
J2dTraceLn
(
J2D_TRACE_INFO
,
"OGLTR_EnableGlyphVertexCache"
);
if
(
!
OGLVertexCache_InitVertexCache
(
oglc
))
{
return
;
}
if
(
glyphCache
==
NULL
)
{
if
(
glyphCache
==
NULL
)
{
if
(
!
OGLTR_InitGlyphCache
(
JNI_FALSE
))
{
if
(
!
OGLTR_InitGlyphCache
(
JNI_FALSE
))
{
return
;
return
;
...
...
src/share/native/sun/java2d/opengl/OGLVertexCache.c
浏览文件 @
f63cb0a6
...
@@ -67,29 +67,31 @@ static jint maskCacheIndex = 0;
...
@@ -67,29 +67,31 @@ static jint maskCacheIndex = 0;
} while (0)
} while (0)
jboolean
jboolean
OGLVertexCache_InitVertexCache
()
OGLVertexCache_InitVertexCache
(
OGLContext
*
oglc
)
{
{
J2dTraceLn
(
J2D_TRACE_INFO
,
"OGLVertexCache_InitVertexCache"
);
J2dTraceLn
(
J2D_TRACE_INFO
,
"OGLVertexCache_InitVertexCache"
);
if
(
vertexCache
!=
NULL
)
{
return
JNI_TRUE
;
}
vertexCache
=
(
J2DVertex
*
)
malloc
(
OGLVC_MAX_INDEX
*
sizeof
(
J2DVertex
));
if
(
vertexCache
==
NULL
)
{
if
(
vertexCache
==
NULL
)
{
return
JNI_FALSE
;
vertexCache
=
(
J2DVertex
*
)
malloc
(
OGLVC_MAX_INDEX
*
sizeof
(
J2DVertex
));
if
(
vertexCache
==
NULL
)
{
return
JNI_FALSE
;
}
}
}
j2d_glTexCoordPointer
(
2
,
GL_FLOAT
,
if
(
!
oglc
->
vertexCacheEnabled
)
{
sizeof
(
J2DVertex
),
vertexCache
);
j2d_glTexCoordPointer
(
2
,
GL_FLOAT
,
j2d_glColorPointer
(
4
,
GL_UNSIGNED_BYTE
,
sizeof
(
J2DVertex
),
vertexCache
);
sizeof
(
J2DVertex
),
((
jfloat
*
)
vertexCache
)
+
2
);
j2d_glColorPointer
(
4
,
GL_UNSIGNED_BYTE
,
j2d_glVertexPointer
(
2
,
GL_FLOAT
,
sizeof
(
J2DVertex
),
((
jfloat
*
)
vertexCache
)
+
2
);
sizeof
(
J2DVertex
),
((
jfloat
*
)
vertexCache
)
+
3
);
j2d_glVertexPointer
(
2
,
GL_FLOAT
,
sizeof
(
J2DVertex
),
((
jfloat
*
)
vertexCache
)
+
3
);
j2d_glEnableClientState
(
GL_TEXTURE_COORD_ARRAY
);
j2d_glEnableClientState
(
GL_TEXTURE_COORD_ARRAY
);
j2d_glEnableClientState
(
GL_COLOR_ARRAY
);
j2d_glEnableClientState
(
GL_COLOR_ARRAY
);
j2d_glEnableClientState
(
GL_VERTEX_ARRAY
);
j2d_glEnableClientState
(
GL_VERTEX_ARRAY
);
oglc
->
vertexCacheEnabled
=
JNI_TRUE
;
}
return
JNI_TRUE
;
return
JNI_TRUE
;
}
}
...
@@ -149,10 +151,6 @@ OGLVertexCache_InitMaskCache()
...
@@ -149,10 +151,6 @@ OGLVertexCache_InitMaskCache()
{
{
J2dTraceLn
(
J2D_TRACE_INFO
,
"OGLVertexCache_InitMaskCache"
);
J2dTraceLn
(
J2D_TRACE_INFO
,
"OGLVertexCache_InitMaskCache"
);
if
(
!
OGLVertexCache_InitVertexCache
())
{
return
JNI_FALSE
;
}
maskCacheTexID
=
maskCacheTexID
=
OGLContext_CreateBlitTexture
(
GL_INTENSITY8
,
GL_LUMINANCE
,
OGLContext_CreateBlitTexture
(
GL_INTENSITY8
,
GL_LUMINANCE
,
OGLVC_MASK_CACHE_WIDTH_IN_TEXELS
,
OGLVC_MASK_CACHE_WIDTH_IN_TEXELS
,
...
@@ -179,6 +177,10 @@ OGLVertexCache_EnableMaskCache(OGLContext *oglc)
...
@@ -179,6 +177,10 @@ OGLVertexCache_EnableMaskCache(OGLContext *oglc)
{
{
J2dTraceLn
(
J2D_TRACE_INFO
,
"OGLVertexCache_EnableMaskCache"
);
J2dTraceLn
(
J2D_TRACE_INFO
,
"OGLVertexCache_EnableMaskCache"
);
if
(
!
OGLVertexCache_InitVertexCache
(
oglc
))
{
return
;
}
if
(
maskCacheTexID
==
0
)
{
if
(
maskCacheTexID
==
0
)
{
if
(
!
OGLVertexCache_InitMaskCache
())
{
if
(
!
OGLVertexCache_InitMaskCache
())
{
return
;
return
;
...
...
src/share/native/sun/java2d/opengl/OGLVertexCache.h
浏览文件 @
f63cb0a6
...
@@ -65,7 +65,7 @@
...
@@ -65,7 +65,7 @@
/**
/**
* Exported methods.
* Exported methods.
*/
*/
jboolean
OGLVertexCache_InitVertexCache
();
jboolean
OGLVertexCache_InitVertexCache
(
OGLContext
*
oglc
);
void
OGLVertexCache_FlushVertexCache
();
void
OGLVertexCache_FlushVertexCache
();
void
OGLVertexCache_RestoreColorState
(
OGLContext
*
oglc
);
void
OGLVertexCache_RestoreColorState
(
OGLContext
*
oglc
);
...
...
src/solaris/classes/sun/awt/X11/GtkFileDialogPeer.java
浏览文件 @
f63cb0a6
...
@@ -73,7 +73,7 @@ class GtkFileDialogPeer extends XDialogPeer implements FileDialogPeer {
...
@@ -73,7 +73,7 @@ class GtkFileDialogPeer extends XDialogPeer implements FileDialogPeer {
if
(
filenames
==
null
)
{
if
(
filenames
==
null
)
{
accessor
.
setDirectory
(
fd
,
null
);
accessor
.
setDirectory
(
fd
,
null
);
accessor
.
setFile
(
fd
,
null
);
accessor
.
setFile
(
fd
,
null
);
accessor
.
setFiles
(
fd
,
null
,
null
);
accessor
.
setFiles
(
fd
,
null
);
}
else
{
}
else
{
// Fix 6987233: add the trailing slash if it's absent
// Fix 6987233: add the trailing slash if it's absent
String
with_separator
=
directory
;
String
with_separator
=
directory
;
...
@@ -83,7 +83,13 @@ class GtkFileDialogPeer extends XDialogPeer implements FileDialogPeer {
...
@@ -83,7 +83,13 @@ class GtkFileDialogPeer extends XDialogPeer implements FileDialogPeer {
}
}
accessor
.
setDirectory
(
fd
,
with_separator
);
accessor
.
setDirectory
(
fd
,
with_separator
);
accessor
.
setFile
(
fd
,
filenames
[
0
]);
accessor
.
setFile
(
fd
,
filenames
[
0
]);
accessor
.
setFiles
(
fd
,
directory
,
filenames
);
int
filesNumber
=
(
filenames
!=
null
)
?
filenames
.
length
:
0
;
File
[]
files
=
new
File
[
filesNumber
];
for
(
int
i
=
0
;
i
<
filesNumber
;
i
++)
{
files
[
i
]
=
new
File
(
directory
,
filenames
[
i
]);
}
accessor
.
setFiles
(
fd
,
files
);
}
}
}
}
...
...
src/solaris/classes/sun/awt/X11/XFileDialogPeer.java
浏览文件 @
f63cb0a6
...
@@ -396,11 +396,18 @@ class XFileDialogPeer extends XDialogPeer implements FileDialogPeer, ActionListe
...
@@ -396,11 +396,18 @@ class XFileDialogPeer extends XDialogPeer implements FileDialogPeer, ActionListe
savedFile
=
file
.
substring
(
index
+
1
);
savedFile
=
file
.
substring
(
index
+
1
);
}
}
String
[]
fileNames
=
fileList
.
getSelectedItems
();
int
filesNumber
=
(
fileNames
!=
null
)
?
fileNames
.
length
:
0
;
File
[]
files
=
new
File
[
filesNumber
];
for
(
int
i
=
0
;
i
<
filesNumber
;
i
++)
{
files
[
i
]
=
new
File
(
savedDir
,
fileNames
[
i
]);
}
AWTAccessor
.
FileDialogAccessor
fileDialogAccessor
=
AWTAccessor
.
getFileDialogAccessor
();
AWTAccessor
.
FileDialogAccessor
fileDialogAccessor
=
AWTAccessor
.
getFileDialogAccessor
();
fileDialogAccessor
.
setDirectory
(
target
,
savedDir
);
fileDialogAccessor
.
setDirectory
(
target
,
savedDir
);
fileDialogAccessor
.
setFile
(
target
,
savedFile
);
fileDialogAccessor
.
setFile
(
target
,
savedFile
);
fileDialogAccessor
.
setFiles
(
target
,
savedDir
,
fileList
.
getSelectedItems
()
);
fileDialogAccessor
.
setFiles
(
target
,
files
);
}
}
/**
/**
...
@@ -419,7 +426,7 @@ class XFileDialogPeer extends XDialogPeer implements FileDialogPeer, ActionListe
...
@@ -419,7 +426,7 @@ class XFileDialogPeer extends XDialogPeer implements FileDialogPeer, ActionListe
fileDialogAccessor
.
setDirectory
(
target
,
null
);
fileDialogAccessor
.
setDirectory
(
target
,
null
);
fileDialogAccessor
.
setFile
(
target
,
null
);
fileDialogAccessor
.
setFile
(
target
,
null
);
fileDialogAccessor
.
setFiles
(
target
,
null
,
null
);
fileDialogAccessor
.
setFiles
(
target
,
null
);
handleQuitButton
();
handleQuitButton
();
}
}
...
...
src/windows/classes/sun/awt/windows/WFileDialogPeer.java
浏览文件 @
f63cb0a6
...
@@ -139,13 +139,16 @@ public class WFileDialogPeer extends WWindowPeer implements FileDialogPeer {
...
@@ -139,13 +139,16 @@ public class WFileDialogPeer extends WWindowPeer implements FileDialogPeer {
String
jDirectory
=
null
;
String
jDirectory
=
null
;
String
jFile
=
null
;
String
jFile
=
null
;
String
jFiles
[]
=
null
;
File
[]
jFiles
=
null
;
if
(
multiple
)
{
if
(
multiple
)
{
jDirectory
=
wFiles
[
0
];
jDirectory
=
wFiles
[
0
];
jFiles
=
new
String
[
wFiles
.
length
-
1
];
int
filesNumber
=
wFiles
.
length
-
1
;
System
.
arraycopy
(
wFiles
,
1
,
jFiles
,
0
,
jFiles
.
length
);
jFiles
=
new
File
[
filesNumber
];
jFile
=
jFiles
[
1
];
// choose any file
for
(
int
i
=
0
;
i
<
filesNumber
;
i
++)
{
jFiles
[
i
]
=
new
File
(
jDirectory
,
wFiles
[
i
+
1
]);
}
jFile
=
wFiles
[
1
];
// choose any file
}
else
{
}
else
{
int
index
=
wFiles
[
0
].
lastIndexOf
(
java
.
io
.
File
.
separatorChar
);
int
index
=
wFiles
[
0
].
lastIndexOf
(
java
.
io
.
File
.
separatorChar
);
if
(
index
==
-
1
)
{
if
(
index
==
-
1
)
{
...
@@ -155,7 +158,7 @@ public class WFileDialogPeer extends WWindowPeer implements FileDialogPeer {
...
@@ -155,7 +158,7 @@ public class WFileDialogPeer extends WWindowPeer implements FileDialogPeer {
jDirectory
=
wFiles
[
0
].
substring
(
0
,
index
+
1
);
jDirectory
=
wFiles
[
0
].
substring
(
0
,
index
+
1
);
jFile
=
wFiles
[
0
].
substring
(
index
+
1
);
jFile
=
wFiles
[
0
].
substring
(
index
+
1
);
}
}
jFiles
=
new
String
[]
{
jFile
};
jFiles
=
new
File
[]
{
new
File
(
jDirectory
,
jFile
)
};
}
}
final
FileDialog
fileDialog
=
(
FileDialog
)
target
;
final
FileDialog
fileDialog
=
(
FileDialog
)
target
;
...
@@ -163,7 +166,7 @@ public class WFileDialogPeer extends WWindowPeer implements FileDialogPeer {
...
@@ -163,7 +166,7 @@ public class WFileDialogPeer extends WWindowPeer implements FileDialogPeer {
fileDialogAccessor
.
setDirectory
(
fileDialog
,
jDirectory
);
fileDialogAccessor
.
setDirectory
(
fileDialog
,
jDirectory
);
fileDialogAccessor
.
setFile
(
fileDialog
,
jFile
);
fileDialogAccessor
.
setFile
(
fileDialog
,
jFile
);
fileDialogAccessor
.
setFiles
(
fileDialog
,
j
Directory
,
j
Files
);
fileDialogAccessor
.
setFiles
(
fileDialog
,
jFiles
);
WToolkit
.
executeOnEventHandlerThread
(
fileDialog
,
new
Runnable
()
{
WToolkit
.
executeOnEventHandlerThread
(
fileDialog
,
new
Runnable
()
{
public
void
run
()
{
public
void
run
()
{
...
@@ -178,7 +181,7 @@ public class WFileDialogPeer extends WWindowPeer implements FileDialogPeer {
...
@@ -178,7 +181,7 @@ public class WFileDialogPeer extends WWindowPeer implements FileDialogPeer {
final
FileDialog
fileDialog
=
(
FileDialog
)
target
;
final
FileDialog
fileDialog
=
(
FileDialog
)
target
;
AWTAccessor
.
getFileDialogAccessor
().
setFile
(
fileDialog
,
null
);
AWTAccessor
.
getFileDialogAccessor
().
setFile
(
fileDialog
,
null
);
AWTAccessor
.
getFileDialogAccessor
().
setFiles
(
fileDialog
,
null
,
null
);
AWTAccessor
.
getFileDialogAccessor
().
setFiles
(
fileDialog
,
null
);
WToolkit
.
executeOnEventHandlerThread
(
fileDialog
,
new
Runnable
()
{
WToolkit
.
executeOnEventHandlerThread
(
fileDialog
,
new
Runnable
()
{
public
void
run
()
{
public
void
run
()
{
...
...
test/java/awt/Dialog/ModalDialogPermission/ModalDialogPermission.java
0 → 100644
浏览文件 @
f63cb0a6
/*
* 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.
*/
import
java.awt.Dialog
;
import
java.awt.Frame
;
import
java.util.Timer
;
import
java.util.TimerTask
;
/*
@test
@bug 7080109
@summary Dialog.show() lacks doPrivileged() to access system event queue.
@author sergey.bylokhov@oracle.com: area=awt.dialog
@run main/othervm/policy=java.policy -Djava.security.manager ModalDialogPermission
*/
public
final
class
ModalDialogPermission
{
public
static
void
main
(
final
String
[]
args
)
{
Thread
.
setDefaultUncaughtExceptionHandler
(
new
Thread
.
UncaughtExceptionHandler
()
{
@Override
public
void
uncaughtException
(
final
Thread
t
,
final
Throwable
e
)
{
throw
new
RuntimeException
(
e
);
}
});
final
Frame
frame
=
new
Frame
();
final
Dialog
dialog
=
new
Dialog
(
frame
,
"ModalDialog"
,
true
);
final
Timer
t
=
new
Timer
();
t
.
schedule
(
new
TimerTask
()
{
@Override
public
void
run
()
{
dialog
.
setVisible
(
false
);
dialog
.
dispose
();
}
},
3000L
);
dialog
.
show
();
frame
.
dispose
();
t
.
cancel
();
}
}
test/java/awt/Dialog/ModalDialogPermission/java.policy
0 → 100644
浏览文件 @
f63cb0a6
grant {
permission java.lang.RuntimePermission "setDefaultUncaughtExceptionHandler";
};
test/java/awt/Focus/FocusTraversalPolicy/InitialFTP.java
0 → 100644
浏览文件 @
f63cb0a6
/*
@test
@bug 7125044
@summary Tests defaut focus traversal policy in AWT & Swing toplevel windows.
@author anton.tarasov@sun.com: area=awt.focus
@run main InitialFTP_AWT
@run main InitialFTP_Swing
*/
import
java.awt.FocusTraversalPolicy
;
import
java.awt.Window
;
public
class
InitialFTP
{
public
static
void
test
(
Window
win
,
Class
<?
extends
FocusTraversalPolicy
>
expectedPolicy
)
{
FocusTraversalPolicy
ftp
=
win
.
getFocusTraversalPolicy
();
System
.
out
.
println
(
"=============="
+
"\n"
+
"Tested window: "
+
win
+
"\n"
+
"Expected policy: "
+
expectedPolicy
+
"\n"
+
"Effective policy: "
+
ftp
.
getClass
());
if
(!
expectedPolicy
.
equals
(
ftp
.
getClass
()))
{
throw
new
RuntimeException
(
"Test failed: wrong effective focus policy"
);
}
}
}
test/java/awt/Focus/FocusTraversalPolicy/InitialFTP_AWT.java
0 → 100644
浏览文件 @
f63cb0a6
/*
@bug 7125044
@summary Tests default focus traversal policy in AWT toplevel windows.
@author anton.tarasov@sun.com: area=awt.focus
*/
import
java.awt.Button
;
import
java.awt.DefaultFocusTraversalPolicy
;
import
java.awt.FlowLayout
;
import
java.awt.FocusTraversalPolicy
;
import
java.awt.Frame
;
import
java.awt.List
;
import
java.awt.TextArea
;
import
java.awt.Window
;
public
class
InitialFTP_AWT
{
public
static
void
main
(
String
[]
args
)
{
AWTFrame
f0
=
new
AWTFrame
(
"frame0"
);
f0
.
setVisible
(
true
);
InitialFTP
.
test
(
f0
,
DefaultFocusTraversalPolicy
.
class
);
AWTFrame
f1
=
new
AWTFrame
(
"frame1"
);
f1
.
setVisible
(
true
);
InitialFTP
.
test
(
f1
,
DefaultFocusTraversalPolicy
.
class
);
System
.
out
.
println
(
"Test passed."
);
}
}
class
AWTFrame
extends
Frame
{
Button
button
=
new
Button
(
"button"
);
TextArea
text
=
new
TextArea
(
"qwerty"
);
List
list
=
new
List
();
public
AWTFrame
(
String
title
)
{
super
(
title
);
list
.
add
(
"one"
);
list
.
add
(
"two"
);
list
.
add
(
"three"
);
this
.
setLayout
(
new
FlowLayout
());
this
.
add
(
button
);
this
.
add
(
text
);
this
.
add
(
list
);
this
.
pack
();
}
}
test/java/awt/Focus/FocusTraversalPolicy/InitialFTP_Swing.java
0 → 100644
浏览文件 @
f63cb0a6
/*
@bug 7125044
@summary Tests default focus traversal policy in Swing toplevel windows.
@author anton.tarasov@sun.com: area=awt.focus
*/
import
java.awt.FlowLayout
;
import
java.awt.FocusTraversalPolicy
;
import
java.awt.Window
;
import
javax.swing.JButton
;
import
javax.swing.JFrame
;
import
javax.swing.JList
;
import
javax.swing.JTextArea
;
import
javax.swing.LayoutFocusTraversalPolicy
;
public
class
InitialFTP_Swing
{
public
static
void
main
(
String
[]
args
)
{
SwingFrame
f0
=
new
SwingFrame
(
"frame0"
);
f0
.
setVisible
(
true
);
InitialFTP
.
test
(
f0
,
LayoutFocusTraversalPolicy
.
class
);
SwingFrame
f1
=
new
SwingFrame
(
"frame1"
);
f1
.
setVisible
(
true
);
InitialFTP
.
test
(
f1
,
LayoutFocusTraversalPolicy
.
class
);
System
.
out
.
println
(
"Test passed."
);
}
}
class
SwingFrame
extends
JFrame
{
JButton
button
=
new
JButton
(
"button"
);
JTextArea
text
=
new
JTextArea
(
"qwerty"
);
JList
list
=
new
JList
(
new
String
[]
{
"one"
,
"two"
,
"three"
});
public
SwingFrame
(
String
title
)
{
super
(
title
);
this
.
setLayout
(
new
FlowLayout
());
this
.
add
(
button
);
this
.
add
(
text
);
this
.
add
(
list
);
this
.
pack
();
}
}
test/java/awt/GraphicsDevice/CloneConfigsTest.java
浏览文件 @
f63cb0a6
...
@@ -23,7 +23,7 @@
...
@@ -23,7 +23,7 @@
/*
/*
* @test
* @test
* @bug 6822057
* @bug 6822057
7124400
*
*
* @summary Test verifies that list of supported graphics configurations
* @summary Test verifies that list of supported graphics configurations
* can not be changed via modification of elements of an array
* can not be changed via modification of elements of an array
...
...
test/java/awt/event/KeyEvent/SwallowKeyEvents/SwallowKeyEvents.java
0 → 100644
浏览文件 @
f63cb0a6
/*
* 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 7154072
@summary Tests that key events with modifiers are not swallowed.
@author anton.tarasov: area=awt.focus
@library ../../../regtesthelpers
@build Util
@run main SwallowKeyEvents
*/
import
java.awt.AWTException
;
import
java.awt.Frame
;
import
java.awt.Robot
;
import
java.awt.TextField
;
import
java.awt.event.KeyAdapter
;
import
java.awt.event.KeyEvent
;
import
test.java.awt.regtesthelpers.Util
;
public
class
SwallowKeyEvents
{
static
final
int
PRESS_COUNT
=
10
;
static
int
keyPressedCount
=
0
;
static
Frame
f
=
new
Frame
(
"Frame"
);
static
TextField
t
=
new
TextField
(
"text"
);
static
Robot
r
;
public
static
void
main
(
String
[]
args
)
{
f
.
add
(
t
);
f
.
pack
();
f
.
setVisible
(
true
);
t
.
requestFocus
();
try
{
r
=
new
Robot
();
}
catch
(
AWTException
ex
)
{
throw
new
RuntimeException
(
ex
);
}
Util
.
waitForIdle
(
r
);
t
.
addKeyListener
(
new
KeyAdapter
()
{
public
void
keyPressed
(
KeyEvent
ke
)
{
System
.
out
.
println
(
ke
);
if
(
ke
.
getKeyCode
()
==
KeyEvent
.
VK_M
)
{
keyPressedCount
++;
}
}
});
test
();
System
.
out
.
println
(
"key_pressed count: "
+
keyPressedCount
);
if
(
keyPressedCount
!=
PRESS_COUNT
)
{
throw
new
RuntimeException
(
"Test failed!"
);
}
else
{
System
.
out
.
println
(
"Test passed."
);
}
}
public
static
void
test
()
{
r
.
keyPress
(
KeyEvent
.
VK_SHIFT
);
r
.
keyPress
(
KeyEvent
.
VK_META
);
for
(
int
i
=
0
;
i
<
PRESS_COUNT
;
i
++)
{
r
.
delay
(
100
);
r
.
keyPress
(
KeyEvent
.
VK_M
);
r
.
delay
(
100
);
r
.
keyRelease
(
KeyEvent
.
VK_M
);
}
r
.
keyRelease
(
KeyEvent
.
VK_META
);
r
.
keyRelease
(
KeyEvent
.
VK_SHIFT
);
}
}
test/javax/swing/text/html/HTMLEditorKit/4242228/bug4242228.java
0 → 100644
浏览文件 @
f63cb0a6
/*
* 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 4242228
@summary Tests that HTMLEditorKit.setText() doesn't throw exceptions
@author Peter Zhelezniakov
*/
import
sun.awt.SunToolkit
;
import
javax.swing.*
;
import
javax.swing.event.ChangeEvent
;
import
javax.swing.event.ChangeListener
;
import
javax.swing.text.StyledEditorKit
;
import
javax.swing.text.html.HTMLDocument
;
import
javax.swing.text.html.HTMLEditorKit
;
import
java.awt.*
;
public
class
bug4242228
{
private
static
JTabbedPane
tabPane
;
private
static
JFrame
frame
;
public
static
void
main
(
String
[]
argv
)
throws
Exception
{
SwingUtilities
.
invokeAndWait
(
new
Runnable
()
{
@Override
public
void
run
()
{
frame
=
new
JFrame
(
"4242228 Test"
);
JScrollPane
sourcePane
=
new
JScrollPane
();
final
JTextPane
htmlEditor
=
new
JTextPane
();
final
JTextPane
sourceEditor
=
new
JTextPane
();
final
JScrollPane
editorPane
=
new
JScrollPane
();
tabPane
=
new
JTabbedPane
();
htmlEditor
.
setText
(
" "
);
htmlEditor
.
setEditorKit
(
new
HTMLEditorKit
());
sourceEditor
.
setText
(
" "
);
sourceEditor
.
setEditorKit
(
new
StyledEditorKit
());
frame
.
setLayout
(
new
BorderLayout
());
editorPane
.
getViewport
().
add
(
htmlEditor
);
tabPane
.
addTab
(
"Editor"
,
editorPane
);
tabPane
.
addChangeListener
(
new
ChangeListener
()
{
public
void
stateChanged
(
ChangeEvent
e
)
{
if
(
tabPane
.
getSelectedComponent
()
==
editorPane
)
{
htmlEditor
.
setText
(
sourceEditor
.
getText
());
}
else
{
sourceEditor
.
setText
(
htmlEditor
.
getText
());
}
}
});
sourcePane
.
getViewport
().
add
(
sourceEditor
);
tabPane
.
addTab
(
"Source"
,
sourcePane
);
tabPane
.
setTabPlacement
(
SwingConstants
.
BOTTOM
);
htmlEditor
.
setDocument
(
new
HTMLDocument
());
frame
.
add
(
tabPane
);
frame
.
setSize
(
400
,
300
);
frame
.
setVisible
(
true
);
}
});
((
SunToolkit
)
Toolkit
.
getDefaultToolkit
()).
realSync
();
SwingUtilities
.
invokeAndWait
(
new
Runnable
()
{
@Override
public
void
run
()
{
for
(
int
i
=
0
;
i
<
50
;
i
++)
{
tabPane
.
setSelectedIndex
(
i
%
2
);
}
frame
.
dispose
();
}
});
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录