提交 1a922368 编写于 作者: L lana

Merge

...@@ -70,3 +70,5 @@ f2dce7210cc00453c23e53edeec7156f112ca382 jdk7-b92 ...@@ -70,3 +70,5 @@ f2dce7210cc00453c23e53edeec7156f112ca382 jdk7-b92
219b84b9533ae4fe3c6c2083f8a8962cb579f1de jdk7-b93 219b84b9533ae4fe3c6c2083f8a8962cb579f1de jdk7-b93
cf44386c8fe3fbdb9da14346be25d19fd1092f71 jdk7-b94 cf44386c8fe3fbdb9da14346be25d19fd1092f71 jdk7-b94
db951e984ccf50756160fee3078c791300b0917e jdk7-b95 db951e984ccf50756160fee3078c791300b0917e jdk7-b95
51b9e5dbc2da0631414484b934ac3fb62e48a2c6 jdk7-b96
b1903d7528d33b521df42bc9291bdcdd2f444a29 jdk7-b97
...@@ -42,7 +42,7 @@ endif ...@@ -42,7 +42,7 @@ endif
SUBDIRS = java security net/ssl jarsigner SUBDIRS = java security net/ssl jarsigner
SUBDIRS_management = jmx SUBDIRS_management = jmx
SUBDIRS_desktop = image inputmethods SUBDIRS_desktop = image
SUBDIRS_enterprise = crypto/provider jndi \ SUBDIRS_enterprise = crypto/provider jndi \
org xml rowset net/httpserver org xml rowset net/httpserver
SUBDIRS_misc = $(SCRIPT_SUBDIR) tracing servicetag nio demo SUBDIRS_misc = $(SCRIPT_SUBDIR) tracing servicetag nio demo
......
#
# Copyright (c) 2002, 2005, 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. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# 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.
#
#
# Makefile for building Java input methods
#
BUILDDIR = ../../..
PRODUCT = sun
include $(BUILDDIR)/common/Defs.gmk
SUBDIRS = indicim thaiim
include $(BUILDDIR)/common/Subdirs.gmk
all build clean clobber::
$(SUBDIRS-loop)
#
# Copyright (c) 2002, 2008, 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. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# 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.
#
#
# Makefile for indic input method.
#
BUILDDIR = ../../../..
PACKAGE = com.sun.inputmethods.internal.indicim
PRODUCT = sun
CLASSDESTDIR = $(TEMPDIR)/classes
SERVICESDIR=META-INF/services
IMJAR = $(IMJARDIR)/indicim.jar
IMJARDIR=$(LIBDIR)/im
include $(BUILDDIR)/common/Defs.gmk
#
# Files
#
AUTO_FILES_JAVA_DIRS = com/sun/inputmethods/internal/indicim
FILES_copy = \
$(CLASSDESTDIR)/com/sun/inputmethods/internal/indicim/resources/DisplayNames.properties
PROVIDER_CONF_FILE = \
$(CLASSDESTDIR)/$(SERVICESDIR)/java.awt.im.spi.InputMethodDescriptor
#
# Rules
#
include $(BUILDDIR)/common/Classes.gmk
build: $(IMJAR)
#
# Extra rules to build im.
#
$(CLASSDESTDIR)/com/sun/inputmethods/internal/indicim/resources/% : $(SHARE_SRC)/classes/com/sun/inputmethods/internal/indicim/resources/%
$(install-file)
$(CLASSDESTDIR)/$(SERVICESDIR)/java.awt.im.spi.InputMethodDescriptor : $(SHARE_SRC)/classes/com/sun/inputmethods/internal/indicim/java.awt.im.spi.InputMethodDescriptor
$(install-file)
$(IMJAR): $(FILES_class) $(FILES_copy) $(PROVIDER_CONF_FILE)
$(prep-target)
$(BOOT_JAR_CMD) -cf $@ \
-C $(CLASSDESTDIR) com \
-C $(CLASSDESTDIR) $(SERVICESDIR) \
$(BOOT_JAR_JFLAGS)
@$(java-vm-cleanup)
clean::
$(RM) -r $(CLASSDESTDIR)
$(RM) $(IMJAR)
#
# Copyright (c) 2002, 2008, 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. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# 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.
#
#
# Makefile for thai input method.
#
BUILDDIR = ../../../..
PACKAGE = com.sun.inputmethods.internal.thaiim
PRODUCT = sun
CLASSDESTDIR = $(TEMPDIR)/classes
SERVICESDIR=META-INF/services
IMJAR = $(IMJARDIR)/thaiim.jar
IMJARDIR=$(LIBDIR)/im
include $(BUILDDIR)/common/Defs.gmk
#
# Files
#
AUTO_FILES_JAVA_DIRS = com/sun/inputmethods/internal/thaiim
FILES_copy = \
$(CLASSDESTDIR)/com/sun/inputmethods/internal/thaiim/resources/DisplayNames.properties
PROVIDER_CONF_FILE = \
$(CLASSDESTDIR)/$(SERVICESDIR)/java.awt.im.spi.InputMethodDescriptor
#
# Rules
#
include $(BUILDDIR)/common/Classes.gmk
build: $(IMJAR)
#
# Extra rules to build im.
#
$(CLASSDESTDIR)/com/sun/inputmethods/internal/thaiim/resources/% : $(SHARE_SRC)/classes/com/sun/inputmethods/internal/thaiim/resources/%
$(install-file)
$(CLASSDESTDIR)/$(SERVICESDIR)/java.awt.im.spi.InputMethodDescriptor : $(SHARE_SRC)/classes/com/sun/inputmethods/internal/thaiim/java.awt.im.spi.InputMethodDescriptor
$(install-file)
$(IMJAR): $(FILES_class) $(FILES_copy) $(PROVIDER_CONF_FILE)
$(prep-target)
$(BOOT_JAR_CMD) -cf $@ \
-C $(CLASSDESTDIR) com \
-C $(CLASSDESTDIR) $(SERVICESDIR) \
$(BOOT_JAR_JFLAGS)
@$(java-vm-cleanup)
clean::
$(RM) -r $(CLASSDESTDIR)
$(RM) $(IMJAR)
...@@ -194,7 +194,16 @@ ifeq ($(FASTDEBUG), true) ...@@ -194,7 +194,16 @@ ifeq ($(FASTDEBUG), true)
CXXFLAGS_DBG += $(CC_OPT/$(FASTDEBUG_OPTIMIZATION_LEVEL)) CXXFLAGS_DBG += $(CC_OPT/$(FASTDEBUG_OPTIMIZATION_LEVEL))
endif endif
CPPFLAGS_COMMON = -D$(ARCH) -DARCH='"$(ARCH)"' -DLINUX $(VERSION_DEFINES) \ CPP_ARCH_FLAGS = -DARCH='"$(ARCH)"'
# Alpha arch does not like "alpha" defined (potential general arch cleanup issue here)
ifneq ($(ARCH),alpha)
CPP_ARCH_FLAGS += -D$(ARCH)
else
CPP_ARCH_FLAGS += -D_$(ARCH)_
endif
CPPFLAGS_COMMON = $(CPP_ARCH_FLAGS) -DLINUX $(VERSION_DEFINES) \
-D_LARGEFILE64_SOURCE -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -D_REENTRANT
ifeq ($(ARCH_DATA_MODEL), 64) ifeq ($(ARCH_DATA_MODEL), 64)
......
...@@ -639,21 +639,8 @@ AWT_RUNPATH = -R/usr/dt/lib$(ISA_DIR) -R$(OPENWIN_RUNTIME_LIB) ...@@ -639,21 +639,8 @@ AWT_RUNPATH = -R/usr/dt/lib$(ISA_DIR) -R$(OPENWIN_RUNTIME_LIB)
# in general this is ok to continue to do. # in general this is ok to continue to do.
LIBCXX = /usr/lib$(ISA_DIR)/libCrun.so.1 LIBCXX = /usr/lib$(ISA_DIR)/libCrun.so.1
# Math Library (libm.so), do not use -lm. # JDK now requires Solaris 10, so pick up libm.so.2
# There might be two versions of libm.so on the build system: LIBM = /usr/lib$(ISA_DIR)/libm.so.2
# libm.so.1 and libm.so.2, and we want libm.so.1.
# Depending on the Solaris release being used to build with,
# /usr/lib/libm.so could point at a libm.so.2, so we are
# explicit here so that the libjvm.so you have built will work on an
# older Solaris release that might not have libm.so.2.
# This is a critical factor in allowing builds on Solaris 10 or newer
# to run on Solaris 8 or 9.
#
# Note: Historically there was also a problem picking up a static version
# of libm.a from the compiler area, but that problem has gone away
# with the newer compilers. Use of libm.a would cause .so bloat.
#
LIBM = /usr/lib$(ISA_DIR)/libm.so.1
# Socket library # Socket library
LIBSOCKET = -lsocket LIBSOCKET = -lsocket
......
...@@ -47,8 +47,7 @@ IMAGE_BINDIR = bin ...@@ -47,8 +47,7 @@ IMAGE_BINDIR = bin
# Swing has taken this approach only as a temporary measure to avoid # Swing has taken this approach only as a temporary measure to avoid
# the compiler warnings until we can properly document these packages. # the compiler warnings until we can properly document these packages.
# This is covered under 6491853. # This is covered under 6491853.
EXCLUDE_PROPWARN_PKGS = com.sun.java.swing.plaf \ EXCLUDE_PROPWARN_PKGS = com.sun.java.swing.plaf.windows \
com.sun.java.swing.plaf.windows \
com.sun.java.swing.plaf.motif \ com.sun.java.swing.plaf.motif \
com.sun.java.swing.plaf.gtk com.sun.java.swing.plaf.gtk
...@@ -655,7 +654,9 @@ $(RT_JAR_FILELIST) + $(RES_JAR_FILELIST): \ ...@@ -655,7 +654,9 @@ $(RT_JAR_FILELIST) + $(RES_JAR_FILELIST): \
JAR_MANIFEST_FILE=$(ABS_TEMPDIR)/manifest.tmp JAR_MANIFEST_FILE=$(ABS_TEMPDIR)/manifest.tmp
$(JAR_MANIFEST_FILE): $(MAINMANIFEST) $(BEANMANIFEST) $(JAR_MANIFEST_FILE): $(MAINMANIFEST) $(BEANMANIFEST)
$(prep-target) $(prep-target)
$(SED) -e "s/@@RELEASE@@/$(RELEASE)/" $(MAINMANIFEST) >> $@ $(SED) -e "s#@@RELEASE@@#$(RELEASE)#" \
-e "s#@@COMPANY_NAME@@#$(COMPANY_NAME)#" \
$(MAINMANIFEST) >> $@
$(ECHO) >> $@ $(ECHO) >> $@
$(CAT) $(BEANMANIFEST) >> $@ $(CAT) $(BEANMANIFEST) >> $@
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
# #
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 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 # or visit www.oracle.com if you need additional information or have any
# have any questions # questions.
# #
# #
......
...@@ -214,7 +214,7 @@ else ...@@ -214,7 +214,7 @@ else
PRODUCT_NAME = Java(TM) PRODUCT_NAME = Java(TM)
PRODUCT_SUFFIX = SE Runtime Environment PRODUCT_SUFFIX = SE Runtime Environment
JDK_RC_PLATFORM_NAME = Platform SE JDK_RC_PLATFORM_NAME = Platform SE
COMPANY_NAME = Sun Microsystems, Inc. COMPANY_NAME = Oracle
endif endif
RUNTIME_NAME = $(PRODUCT_NAME) $(PRODUCT_SUFFIX) RUNTIME_NAME = $(PRODUCT_NAME) $(PRODUCT_SUFFIX)
......
...@@ -818,7 +818,7 @@ GENSOR_SRC = $(SHARE_SRC)/native/sun/nio/ch/genSocketOptionRegistry.c ...@@ -818,7 +818,7 @@ GENSOR_SRC = $(SHARE_SRC)/native/sun/nio/ch/genSocketOptionRegistry.c
GENSOR_EXE = $(TEMPDIR)/genSocketOptionRegistry$(EXE_SUFFIX) GENSOR_EXE = $(TEMPDIR)/genSocketOptionRegistry$(EXE_SUFFIX)
SOR_COPYRIGHT_YEARS = $(shell $(CAT) $(GENSOR_SRC) | \ SOR_COPYRIGHT_YEARS = $(shell $(CAT) $(GENSOR_SRC) | \
$(NAWK) '/^.*Copyright.*Sun/ { print $$3 }') $(NAWK) '/^.*Copyright.*Oracle/ { printf "%s %s",$$4,$$5 }')
$(TEMPDIR)/$(GENSOR_SRC) : $(GENSOR_SRC) $(TEMPDIR)/$(GENSOR_SRC) : $(GENSOR_SRC)
$(install-non-module-file) $(install-non-module-file)
...@@ -830,7 +830,7 @@ $(GENSOR_EXE) : $(TEMPDIR)/$(GENSOR_SRC) ...@@ -830,7 +830,7 @@ $(GENSOR_EXE) : $(TEMPDIR)/$(GENSOR_SRC)
$(SCH_GEN)/SocketOptionRegistry.java: $(GENSOR_EXE) $(SCH_GEN)/SocketOptionRegistry.java: $(GENSOR_EXE)
$(prep-target) $(prep-target)
NAWK="$(NAWK)" SH="$(SH)" $(SH) -e addNotices.sh $(SOR_COPYRIGHT_YEARS) > $@ NAWK="$(NAWK)" SH="$(SH)" $(SH) -e addNotices.sh "$(SOR_COPYRIGHT_YEARS)" > $@
$(GENSOR_EXE) >> $@ $(GENSOR_EXE) >> $@
# #
...@@ -852,7 +852,7 @@ GENUC_SRC = $(PLATFORM_SRC)/native/sun/nio/fs/genUnixConstants.c ...@@ -852,7 +852,7 @@ GENUC_SRC = $(PLATFORM_SRC)/native/sun/nio/fs/genUnixConstants.c
GENUC_EXE = $(TEMPDIR)/genUnixConstants GENUC_EXE = $(TEMPDIR)/genUnixConstants
GENUC_COPYRIGHT_YEARS = $(shell $(CAT) $(GENUC_SRC) | \ GENUC_COPYRIGHT_YEARS = $(shell $(CAT) $(GENUC_SRC) | \
$(NAWK) '/^.*Copyright.*Sun/ { print $$3 }') $(NAWK) '/^.*Copyright.*Oracle/ { printf "%s %s",$$4,$$5 }')
$(GENUC_EXE) : $(GENUC_SRC) $(GENUC_EXE) : $(GENUC_SRC)
$(prep-target) $(prep-target)
...@@ -860,7 +860,7 @@ $(GENUC_EXE) : $(GENUC_SRC) ...@@ -860,7 +860,7 @@ $(GENUC_EXE) : $(GENUC_SRC)
$(SFS_GEN)/UnixConstants.java: $(GENUC_EXE) $(SFS_GEN)/UnixConstants.java: $(GENUC_EXE)
$(prep-target) $(prep-target)
NAWK="$(NAWK)" SH="$(SH)" $(SH) -e addNotices.sh $(GENUC_COPYRIGHT_YEARS) > $@ NAWK="$(NAWK)" SH="$(SH)" $(SH) -e addNotices.sh "$(GENUC_COPYRIGHT_YEARS)" > $@
$(GENUC_EXE) >> $@ $(GENUC_EXE) >> $@
GENSC_SRC = $(PLATFORM_SRC)/native/sun/nio/fs/genSolarisConstants.c GENSC_SRC = $(PLATFORM_SRC)/native/sun/nio/fs/genSolarisConstants.c
...@@ -868,7 +868,7 @@ GENSC_SRC = $(PLATFORM_SRC)/native/sun/nio/fs/genSolarisConstants.c ...@@ -868,7 +868,7 @@ GENSC_SRC = $(PLATFORM_SRC)/native/sun/nio/fs/genSolarisConstants.c
GENSC_EXE = $(TEMPDIR)/genSolarisConstants GENSC_EXE = $(TEMPDIR)/genSolarisConstants
GENSC_COPYRIGHT_YEARS = $(shell $(CAT) $(GENSC_SRC) | \ GENSC_COPYRIGHT_YEARS = $(shell $(CAT) $(GENSC_SRC) | \
$(NAWK) '/^.*Copyright.*Sun/ { print $$3 }') $(NAWK) '/^.*Copyright.*Oracle/ { printf "%s %s",$$4,$$5 }')
$(GENSC_EXE) : $(GENSC_SRC) $(GENSC_EXE) : $(GENSC_SRC)
$(prep-target) $(prep-target)
...@@ -876,7 +876,7 @@ $(GENSC_EXE) : $(GENSC_SRC) ...@@ -876,7 +876,7 @@ $(GENSC_EXE) : $(GENSC_SRC)
$(SFS_GEN)/SolarisConstants.java: $(GENSC_EXE) $(SFS_GEN)/SolarisConstants.java: $(GENSC_EXE)
$(prep-target) $(prep-target)
NAWK="$(NAWK)" SH="$(SH)" $(SH) -e addNotices.sh $(GENSC_COPYRIGHT_YEARS) > $@ NAWK="$(NAWK)" SH="$(SH)" $(SH) -e addNotices.sh "$(GENSC_COPYRIGHT_YEARS)" > $@
$(GENSC_EXE) >> $@ $(GENSC_EXE) >> $@
.PHONY: sources .PHONY: sources
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
# a java comment block. If this script is invoked with a copyright # a java comment block. If this script is invoked with a copyright
# year/year range, the java comment block will contain a Sun copyright. # year/year range, the java comment block will contain a Sun copyright.
COPYRIGHT_YEARS=$1 COPYRIGHT_YEARS="$1"
cat <<__END__ cat <<__END__
/* /*
...@@ -36,10 +36,10 @@ __END__ ...@@ -36,10 +36,10 @@ __END__
if [ "x$COPYRIGHT_YEARS" != x ]; then if [ "x$COPYRIGHT_YEARS" != x ]; then
cat <<__END__ cat <<__END__
* Copyright $COPYRIGHT_YEARS Sun Microsystems, Inc. All Rights Reserved. * Copyright (c) $COPYRIGHT_YEARS Oracle and/or its affiliates. All rights reserved.
__END__ __END__
fi fi
$NAWK ' /^#.*Copyright.*Sun/ { next } $NAWK ' /^#.*Copyright.*Oracle/ { next }
/^#([^!]|$)/ { sub(/^#/, " *"); print } /^#([^!]|$)/ { sub(/^#/, " *"); print }
/^$/ { print " */"; exit } ' $0 /^$/ { print " */"; exit } ' $0
...@@ -36,7 +36,7 @@ SPEC=$1; shift ...@@ -36,7 +36,7 @@ SPEC=$1; shift
DST=$1; shift DST=$1; shift
eval `$NAWK <$SPEC ' eval `$NAWK <$SPEC '
/^[ \t]*copyright / { printf "COPYRIGHT_YEARS=%s\n", $2; } /^[ \t]*copyright / { printf "COPYRIGHT_YEARS=\"%s %s\"\n", $2, $3; }
/^[ \t]*package / { printf "PKG=%s\n", $2; } /^[ \t]*package / { printf "PKG=%s\n", $2; }
/^[ \t]*class / { printf "CLASS=%s\n", $2; } /^[ \t]*class / { printf "CLASS=%s\n", $2; }
'` '`
......
...@@ -25,7 +25,6 @@ ...@@ -25,7 +25,6 @@
MISC_FILES = \ MISC_FILES = \
$(CLASSBINDIR)/javax/swing/text/html/default.css \ $(CLASSBINDIR)/javax/swing/text/html/default.css \
$(CLASSBINDIR)/javax/swing/text/html/parser/html32.bdtd \
$(CLASSBINDIR)/javax/swing/text/rtf/charsets/NeXT.txt \ $(CLASSBINDIR)/javax/swing/text/rtf/charsets/NeXT.txt \
$(CLASSBINDIR)/javax/swing/text/rtf/charsets/ansi.txt \ $(CLASSBINDIR)/javax/swing/text/rtf/charsets/ansi.txt \
$(CLASSBINDIR)/javax/swing/text/rtf/charsets/cpg437.txt \ $(CLASSBINDIR)/javax/swing/text/rtf/charsets/cpg437.txt \
......
...@@ -59,9 +59,6 @@ $(CLASSBINDIR)/%.gif: $(SHARE_SRC)/classes/%.gif ...@@ -59,9 +59,6 @@ $(CLASSBINDIR)/%.gif: $(SHARE_SRC)/classes/%.gif
$(CLASSBINDIR)/%.css: $(SHARE_SRC)/classes/%.css $(CLASSBINDIR)/%.css: $(SHARE_SRC)/classes/%.css
$(install-file) $(install-file)
$(CLASSBINDIR)/%.bdtd: $(SHARE_SRC)/classes/%.bdtd
$(install-file)
$(CLASSBINDIR)/%.txt: $(SHARE_SRC)/classes/%.txt $(CLASSBINDIR)/%.txt: $(SHARE_SRC)/classes/%.txt
$(install-file) $(install-file)
...@@ -174,7 +174,7 @@ else ...@@ -174,7 +174,7 @@ else
# Check CYGWIN (should have already been done) # Check CYGWIN (should have already been done)
# Assumption here is that you are in a shell window via cygwin. # Assumption here is that you are in a shell window via cygwin.
proc_arch=`echo "$(PROCESSOR_IDENTIFIER)" | expand | cut -d' ' -f1 | sed -e 's@x86@X86@g' -e 's@Intel64@X64@g' -e 's@em64t@X64@g' -e 's@EM64T@X64@g' -e 's@amd64@X64@g' -e 's@AMD64@X64@g' -e 's@ia64@IA64@g'` proc_arch=`echo "${PROCESSOR_IDENTIFIER}" | expand | cut -d' ' -f1 | sed -e 's@x86@X86@g' -e 's@Intel64@X64@g' -e 's@em64t@X64@g' -e 's@EM64T@X64@g' -e 's@amd64@X64@g' -e 's@AMD64@X64@g' -e 's@ia64@IA64@g'`
if [ "${proc_arch}" = "X64" ] ; then if [ "${proc_arch}" = "X64" ] ; then
windows_arch=amd64 windows_arch=amd64
else else
......
...@@ -312,6 +312,7 @@ SUNWprivate_1.1 { ...@@ -312,6 +312,7 @@ SUNWprivate_1.1 {
Java_sun_awt_X11GraphicsEnvironment_initGLX; Java_sun_awt_X11GraphicsEnvironment_initGLX;
Java_sun_awt_X11GraphicsEnvironment_pRunningXinerama; Java_sun_awt_X11GraphicsEnvironment_pRunningXinerama;
Java_sun_awt_X11GraphicsEnvironment_getXineramaCenterPoint; Java_sun_awt_X11GraphicsEnvironment_getXineramaCenterPoint;
Java_sun_awt_X11GraphicsEnvironment_initXRender;
#Java_sun_awt_motif_MEmbedCanvasPeer_initXEmbedServer; #Java_sun_awt_motif_MEmbedCanvasPeer_initXEmbedServer;
#Java_sun_awt_motif_MEmbedCanvasPeer_destroyXEmbedServer; #Java_sun_awt_motif_MEmbedCanvasPeer_destroyXEmbedServer;
#Java_sun_awt_motif_MEmbedCanvasPeer_isXEmbedActive; #Java_sun_awt_motif_MEmbedCanvasPeer_isXEmbedActive;
...@@ -406,18 +407,53 @@ SUNWprivate_1.1 { ...@@ -406,18 +407,53 @@ SUNWprivate_1.1 {
Java_sun_java2d_x11_X11SurfaceData_initIDs; Java_sun_java2d_x11_X11SurfaceData_initIDs;
Java_sun_java2d_x11_X11SurfaceData_initOps; Java_sun_java2d_x11_X11SurfaceData_initOps;
Java_sun_java2d_x11_X11SurfaceData_initSurface; Java_sun_java2d_x11_X11SurfaceData_initSurface;
Java_sun_java2d_x11_X11SurfaceData_isDrawableValid;
Java_sun_java2d_x11_X11SurfaceData_isDgaAvailable; Java_sun_java2d_x11_X11SurfaceData_isDgaAvailable;
Java_sun_java2d_x11_X11SurfaceData_isShmPMAvailable; Java_sun_java2d_x11_X11SurfaceData_isShmPMAvailable;
Java_sun_java2d_x11_X11SurfaceData_setInvalid;
Java_sun_java2d_x11_X11SurfaceData_flushNativeSurface;
Java_sun_java2d_x11_X11SurfaceData_XCreateGC;
Java_sun_java2d_x11_X11SurfaceData_XResetClip;
Java_sun_java2d_x11_X11SurfaceData_XSetClip;
Java_sun_java2d_x11_X11SurfaceData_XSetCopyMode; Java_sun_java2d_x11_X11SurfaceData_XSetCopyMode;
Java_sun_java2d_x11_X11SurfaceData_XSetXorMode; Java_sun_java2d_x11_X11SurfaceData_XSetXorMode;
Java_sun_java2d_x11_X11SurfaceData_XSetForeground; Java_sun_java2d_x11_X11SurfaceData_XSetForeground;
Java_sun_java2d_x11_X11SurfaceData_XSetGraphicsExposures;
Java_sun_java2d_x11_XSurfaceData_initOps;
Java_sun_java2d_x11_XSurfaceData_XCreateGC;
Java_sun_java2d_x11_XSurfaceData_XResetClip;
Java_sun_java2d_x11_XSurfaceData_XSetClip;
Java_sun_java2d_x11_XSurfaceData_flushNativeSurface;
Java_sun_java2d_x11_XSurfaceData_isDrawableValid;
Java_sun_java2d_x11_XSurfaceData_setInvalid;
Java_sun_java2d_x11_XSurfaceData_XSetGraphicsExposures;
Java_sun_java2d_xr_XRSurfaceData_initXRPicture;
Java_sun_java2d_xr_XRSurfaceData_initIDs;
Java_sun_java2d_xr_XRSurfaceData_XRInitSurface;
Java_sun_java2d_xr_XRBackendNative_initIDs;
Java_sun_java2d_xr_XIDGenerator_bufferXIDs;
Java_sun_java2d_xr_XRBackendNative_freeGC;
Java_sun_java2d_xr_XRBackendNative_createGC;
Java_sun_java2d_xr_XRBackendNative_createPixmap;
Java_sun_java2d_xr_XRBackendNative_createPictureNative;
Java_sun_java2d_xr_XRBackendNative_freePicture;
Java_sun_java2d_xr_XRBackendNative_freePixmap;
Java_sun_java2d_xr_XRBackendNative_setPictureRepeat;
Java_sun_java2d_xr_XRBackendNative_setGCExposures;
Java_sun_java2d_xr_XRBackendNative_setGCForeground;
Java_sun_java2d_xr_XRBackendNative_copyArea;
Java_sun_java2d_xr_XRBackendNative_renderComposite;
Java_sun_java2d_xr_XRBackendNative_renderRectangle;
Java_sun_java2d_xr_XRBackendNative_XRenderRectanglesNative;
Java_sun_java2d_xr_XRBackendNative_XRSetTransformNative;
Java_sun_java2d_xr_XRBackendNative_XRCreateLinearGradientPaintNative;
Java_sun_java2d_xr_XRBackendNative_XRCreateRadialGradientPaintNative;
Java_sun_java2d_xr_XRBackendNative_setFilter;
Java_sun_java2d_xr_XRBackendNative_XRSetClipNative;
Java_sun_java2d_xr_XRBackendNative_putMaskNative;
Java_sun_java2d_xr_XRBackendNative_XRAddGlyphsNative;
Java_sun_java2d_xr_XRBackendNative_XRFreeGlyphsNative;
Java_sun_java2d_xr_XRBackendNative_XRenderCreateGlyphSetNative;
Java_sun_java2d_xr_XRBackendNative_XRenderCompositeTextNative;
Java_sun_java2d_xr_XRBackendNative_setGCMode;
Java_sun_java2d_xr_XRBackendNative_GCRectanglesNative;
Java_sun_java2d_xr_XRUtils_initFormatPtrs;
Java_sun_java2d_xr_XRBackendNative_renderCompositeTrapezoidsNative;
XRT_DrawGlyphList;
Java_sun_java2d_opengl_OGLContext_getOGLIdString; Java_sun_java2d_opengl_OGLContext_getOGLIdString;
Java_sun_java2d_opengl_OGLMaskFill_maskFill; Java_sun_java2d_opengl_OGLMaskFill_maskFill;
......
...@@ -425,6 +425,7 @@ SUNWprivate_1.1 { ...@@ -425,6 +425,7 @@ SUNWprivate_1.1 {
Java_sun_awt_X11GraphicsEnvironment_initDisplay; Java_sun_awt_X11GraphicsEnvironment_initDisplay;
Java_sun_awt_X11GraphicsEnvironment_pRunningXinerama; Java_sun_awt_X11GraphicsEnvironment_pRunningXinerama;
Java_sun_awt_X11GraphicsEnvironment_getXineramaCenterPoint; Java_sun_awt_X11GraphicsEnvironment_getXineramaCenterPoint;
Java_sun_awt_X11GraphicsEnvironment_initXRender;
......
...@@ -46,17 +46,20 @@ SUNWprivate_1.1 { ...@@ -46,17 +46,20 @@ SUNWprivate_1.1 {
Java_sun_java2d_x11_X11Renderer_XFillRoundRect; Java_sun_java2d_x11_X11Renderer_XFillRoundRect;
Java_sun_java2d_x11_X11Renderer_devCopyArea; Java_sun_java2d_x11_X11Renderer_devCopyArea;
Java_sun_java2d_x11_X11SurfaceData_initIDs; Java_sun_java2d_x11_X11SurfaceData_initIDs;
Java_sun_java2d_x11_X11SurfaceData_initOps;
Java_sun_java2d_x11_X11SurfaceData_isDrawableValid;
Java_sun_java2d_x11_X11SurfaceData_initSurface; Java_sun_java2d_x11_X11SurfaceData_initSurface;
Java_sun_java2d_x11_X11SurfaceData_setInvalid;
Java_sun_java2d_x11_X11SurfaceData_XCreateGC;
Java_sun_java2d_x11_X11SurfaceData_XResetClip;
Java_sun_java2d_x11_X11SurfaceData_XSetClip;
Java_sun_java2d_x11_X11SurfaceData_XSetCopyMode; Java_sun_java2d_x11_X11SurfaceData_XSetCopyMode;
Java_sun_java2d_x11_X11SurfaceData_XSetXorMode; Java_sun_java2d_x11_X11SurfaceData_XSetXorMode;
Java_sun_java2d_x11_X11SurfaceData_XSetForeground; Java_sun_java2d_x11_X11SurfaceData_XSetForeground;
Java_sun_java2d_x11_XSurfaceData_initOps;
Java_sun_java2d_x11_XSurfaceData_XCreateGC;
Java_sun_java2d_x11_XSurfaceData_XResetClip;
Java_sun_java2d_x11_XSurfaceData_XSetClip;
Java_sun_java2d_x11_XSurfaceData_flushNativeSurface;
Java_sun_java2d_x11_XSurfaceData_isDrawableValid;
Java_sun_java2d_x11_XSurfaceData_setInvalid;
Java_sun_java2d_x11_XSurfaceData_XSetGraphicsExposures;
X11SurfaceData_GetOps; X11SurfaceData_GetOps;
Java_java_awt_Font_initIDs; Java_java_awt_Font_initIDs;
Java_sun_font_FontConfigManager_getFontConfig; Java_sun_font_FontConfigManager_getFontConfig;
......
...@@ -113,7 +113,7 @@ CPPFLAGS += -I$(OPENWIN_HOME)/include \ ...@@ -113,7 +113,7 @@ CPPFLAGS += -I$(OPENWIN_HOME)/include \
# Libraries to link in. # Libraries to link in.
# #
ifeq ($(PLATFORM), solaris) ifeq ($(PLATFORM), solaris)
OTHER_LDLIBS = -L$(LIBDIR)/$(LIBARCH) -L$(OPENWIN_LIB) -L$(LIBDIR)/$(LIBARCH)/xawt -lmawt OTHER_LDLIBS = -L$(LIBDIR)/$(LIBARCH) -L$(OPENWIN_LIB) -L$(LIBDIR)/$(LIBARCH)/xawt -lmawt -L/usr/openwin/sfw/lib$(ISA_DIR) -lXrender
endif # PLATFORM endif # PLATFORM
ifeq ($(PLATFORM), linux) ifeq ($(PLATFORM), linux)
......
...@@ -80,4 +80,6 @@ FILES_c = \ ...@@ -80,4 +80,6 @@ FILES_c = \
swing_GTKEngine.c \ swing_GTKEngine.c \
swing_GTKStyle.c \ swing_GTKStyle.c \
rect.c \ rect.c \
sun_awt_X11_GtkFileDialogPeer.c sun_awt_X11_GtkFileDialogPeer.c \
XRSurfaceData.c \
XRBackendNative.c
...@@ -49,6 +49,11 @@ AUTO_JAVA_PRUNE = WrapperGenerator.java ...@@ -49,6 +49,11 @@ AUTO_JAVA_PRUNE = WrapperGenerator.java
LDFLAGS += -L$(OPENWIN_LIB) LDFLAGS += -L$(OPENWIN_LIB)
# For Xrender extension.
ifeq ($(PLATFORM), solaris)
LDFLAGS += -L/usr/openwin/sfw/lib$(ISA_DIR) -R/usr/openwin/sfw/lib$(ISA_DIR)
endif
ifeq ($(PLATFORM), linux) ifeq ($(PLATFORM), linux)
LDFLAGS += -lpthread LDFLAGS += -lpthread
dummy := $(shell $(MKDIR) -p $(LIB_LOCATION)) dummy := $(shell $(MKDIR) -p $(LIB_LOCATION))
...@@ -88,7 +93,7 @@ vpath %.c $(SHARE_SRC)/native/sun/java2d/opengl ...@@ -88,7 +93,7 @@ vpath %.c $(SHARE_SRC)/native/sun/java2d/opengl
vpath %.c $(PLATFORM_SRC)/native/sun/java2d/opengl vpath %.c $(PLATFORM_SRC)/native/sun/java2d/opengl
vpath %.c $(PLATFORM_SRC)/native/sun/java2d/x11 vpath %.c $(PLATFORM_SRC)/native/sun/java2d/x11
OTHER_LDLIBS = $(LIBM) -lawt -lXext -lX11 -ldl \ OTHER_LDLIBS = $(LIBM) -lawt -lXext -lX11 -lXrender -ldl \
$(LDFLAGS_COMMON) $(AWT_RUNPATH) $(OTHER_LDFLAGS) -lXtst -lXi $(LDFLAGS_COMMON) $(AWT_RUNPATH) $(OTHER_LDFLAGS) -lXtst -lXi
ifeq ($(PLATFORM), solaris) ifeq ($(PLATFORM), solaris)
...@@ -122,7 +127,7 @@ CPPFLAGS += -DXAWT -DXAWT_HACK \ ...@@ -122,7 +127,7 @@ CPPFLAGS += -DXAWT -DXAWT_HACK \
-I$(PLATFORM_SRC)/native/sun/awt/medialib \ -I$(PLATFORM_SRC)/native/sun/awt/medialib \
-I$(PLATFORM_SRC)/native/sun/font \ -I$(PLATFORM_SRC)/native/sun/font \
-I$(SHARE_SRC)/native/sun/awt \ -I$(SHARE_SRC)/native/sun/awt \
-I$(PLATFORM_SRC)/native/sun/awt -I$(PLATFORM_SRC)/native/sun/awt
ifeq ($(PLATFORM), linux) ifeq ($(PLATFORM), linux)
# Allows for builds on Debian GNU Linux, X11 is in a different place # Allows for builds on Debian GNU Linux, X11 is in a different place
......
...@@ -192,6 +192,7 @@ SUNWprivate_1.1 { ...@@ -192,6 +192,7 @@ SUNWprivate_1.1 {
Java_sun_font_X11FontManager_setNativeFontPath; Java_sun_font_X11FontManager_setNativeFontPath;
Java_sun_awt_X11GraphicsEnvironment_initDisplay; Java_sun_awt_X11GraphicsEnvironment_initDisplay;
Java_sun_awt_X11GraphicsEnvironment_initGLX; Java_sun_awt_X11GraphicsEnvironment_initGLX;
Java_sun_awt_X11GraphicsEnvironment_initXRender;
Java_sun_awt_X11GraphicsEnvironment_checkShmExt; Java_sun_awt_X11GraphicsEnvironment_checkShmExt;
Java_sun_awt_X11GraphicsEnvironment_getNumScreens; Java_sun_awt_X11GraphicsEnvironment_getNumScreens;
Java_sun_awt_X11GraphicsEnvironment_getDefaultScreenNum; Java_sun_awt_X11GraphicsEnvironment_getDefaultScreenNum;
...@@ -355,21 +356,52 @@ SUNWprivate_1.1 { ...@@ -355,21 +356,52 @@ SUNWprivate_1.1 {
Java_sun_java2d_x11_X11Renderer_XFillRect; Java_sun_java2d_x11_X11Renderer_XFillRect;
Java_sun_java2d_x11_X11Renderer_XFillRoundRect; Java_sun_java2d_x11_X11Renderer_XFillRoundRect;
Java_sun_java2d_x11_X11Renderer_devCopyArea; Java_sun_java2d_x11_X11Renderer_devCopyArea;
Java_sun_java2d_x11_X11SurfaceData_setInvalid;
Java_sun_java2d_x11_X11SurfaceData_initIDs; Java_sun_java2d_x11_X11SurfaceData_initIDs;
Java_sun_java2d_x11_X11SurfaceData_isDrawableValid;
Java_sun_java2d_x11_X11SurfaceData_isDgaAvailable; Java_sun_java2d_x11_X11SurfaceData_isDgaAvailable;
Java_sun_java2d_x11_X11SurfaceData_isShmPMAvailable; Java_sun_java2d_x11_X11SurfaceData_isShmPMAvailable;
Java_sun_java2d_x11_X11SurfaceData_initOps;
Java_sun_java2d_x11_X11SurfaceData_initSurface; Java_sun_java2d_x11_X11SurfaceData_initSurface;
Java_sun_java2d_x11_X11SurfaceData_flushNativeSurface;
Java_sun_java2d_x11_X11SurfaceData_XCreateGC;
Java_sun_java2d_x11_X11SurfaceData_XResetClip;
Java_sun_java2d_x11_X11SurfaceData_XSetClip;
Java_sun_java2d_x11_X11SurfaceData_XSetCopyMode; Java_sun_java2d_x11_X11SurfaceData_XSetCopyMode;
Java_sun_java2d_x11_X11SurfaceData_XSetXorMode; Java_sun_java2d_x11_X11SurfaceData_XSetXorMode;
Java_sun_java2d_x11_X11SurfaceData_XSetForeground; Java_sun_java2d_x11_X11SurfaceData_XSetForeground;
Java_sun_java2d_x11_X11SurfaceData_XSetGraphicsExposures;
Java_sun_java2d_x11_XSurfaceData_initOps;
Java_sun_java2d_x11_XSurfaceData_XCreateGC;
Java_sun_java2d_x11_XSurfaceData_XResetClip;
Java_sun_java2d_x11_XSurfaceData_XSetClip;
Java_sun_java2d_x11_XSurfaceData_flushNativeSurface;
Java_sun_java2d_x11_XSurfaceData_isDrawableValid;
Java_sun_java2d_x11_XSurfaceData_setInvalid;
Java_sun_java2d_x11_XSurfaceData_XSetGraphicsExposures;
Java_sun_java2d_xr_XRSurfaceData_initXRPicture;
Java_sun_java2d_xr_XRSurfaceData_initIDs;
Java_sun_java2d_xr_XRSurfaceData_XRInitSurface;
Java_sun_java2d_xr_XRBackendNative_initIDs;
Java_sun_java2d_xr_XRBackendNative_freeGC;
Java_sun_java2d_xr_XRBackendNative_createGC;
Java_sun_java2d_xr_XRBackendNative_createPixmap;
Java_sun_java2d_xr_XRBackendNative_createPictureNative;
Java_sun_java2d_xr_XRBackendNative_freePicture;
Java_sun_java2d_xr_XRBackendNative_freePixmap;
Java_sun_java2d_xr_XRBackendNative_setPictureRepeat;
Java_sun_java2d_xr_XRBackendNative_setGCExposures;
Java_sun_java2d_xr_XRBackendNative_setGCForeground;
Java_sun_java2d_xr_XRBackendNative_copyArea;
Java_sun_java2d_xr_XRBackendNative_renderComposite;
Java_sun_java2d_xr_XRBackendNative_renderRectangle;
Java_sun_java2d_xr_XRBackendNative_XRenderRectanglesNative;
Java_sun_java2d_xr_XRBackendNative_XRSetTransformNative;
Java_sun_java2d_xr_XRBackendNative_XRCreateLinearGradientPaintNative;
Java_sun_java2d_xr_XRBackendNative_XRCreateRadialGradientPaintNative;
Java_sun_java2d_xr_XRBackendNative_setFilter;
Java_sun_java2d_xr_XRBackendNative_XRSetClipNative;
Java_sun_java2d_xr_XRBackendNative_putMaskNative;
Java_sun_java2d_xr_XRBackendNative_XRAddGlyphsNative;
Java_sun_java2d_xr_XRBackendNative_XRFreeGlyphsNative;
Java_sun_java2d_xr_XRBackendNative_XRenderCreateGlyphSetNative;
Java_sun_java2d_xr_XRBackendNative_XRenderCompositeTextNative;
Java_sun_java2d_xr_XRBackendNative_setGCMode;
Java_sun_java2d_xr_XRBackendNative_GCRectanglesNative;
Java_sun_java2d_xr_XRBackendNative_renderCompositeTrapezoidsNative;
Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1arrow; Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1arrow;
Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1box; Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1box;
...@@ -397,8 +429,8 @@ SUNWprivate_1.1 { ...@@ -397,8 +429,8 @@ SUNWprivate_1.1 {
Java_com_sun_java_swing_plaf_gtk_GTKStyle_nativeGetClassValue; Java_com_sun_java_swing_plaf_gtk_GTKStyle_nativeGetClassValue;
Java_com_sun_java_swing_plaf_gtk_GTKStyle_nativeGetPangoFontName; Java_com_sun_java_swing_plaf_gtk_GTKStyle_nativeGetPangoFontName;
Java_sun_awt_X11_GtkFileDialogPeer_run; Java_sun_awt_X11_GtkFileDialogPeer_run;
Java_sun_awt_X11_GtkFileDialogPeer_quit; Java_sun_awt_X11_GtkFileDialogPeer_quit;
Java_sun_print_CUPSPrinter_initIDs; Java_sun_print_CUPSPrinter_initIDs;
Java_sun_print_CUPSPrinter_getCupsServer; Java_sun_print_CUPSPrinter_getCupsServer;
......
Manifest-Version: 1.0 Manifest-Version: 1.0
Specification-Title: Java Platform API Specification Specification-Title: Java Platform API Specification
Specification-Version: 1.6 Specification-Version: 1.6
Specification-Vendor: Sun Microsystems, Inc. Specification-Vendor: Oracle
Implementation-Title: Java Runtime Environment Implementation-Title: Java Runtime Environment
Implementation-Version: @@RELEASE@@ Implementation-Version: @@RELEASE@@
Implementation-Vendor: Sun Microsystems, Inc. Implementation-Vendor: @@COMPANY_NAME@@
...@@ -2259,7 +2259,6 @@ com/sun/java/swing/plaf/gtk/GTKLookAndFeel$1FontLazyValue ...@@ -2259,7 +2259,6 @@ com/sun/java/swing/plaf/gtk/GTKLookAndFeel$1FontLazyValue
com/sun/java/swing/plaf/gtk/GTKLookAndFeel$2 com/sun/java/swing/plaf/gtk/GTKLookAndFeel$2
com/sun/java/swing/plaf/gtk/GTKLookAndFeel$3 com/sun/java/swing/plaf/gtk/GTKLookAndFeel$3
javax/swing/plaf/synth/SynthPanelUI javax/swing/plaf/synth/SynthPanelUI
sun/swing/plaf/synth/SynthUI
javax/swing/plaf/synth/SynthConstants javax/swing/plaf/synth/SynthConstants
javax/swing/plaf/synth/SynthContext javax/swing/plaf/synth/SynthContext
javax/swing/plaf/synth/SynthBorder javax/swing/plaf/synth/SynthBorder
...@@ -2271,6 +2270,7 @@ javax/swing/plaf/basic/BasicBorders$FieldBorder ...@@ -2271,6 +2270,7 @@ javax/swing/plaf/basic/BasicBorders$FieldBorder
javax/swing/plaf/synth/SynthMenuBarUI javax/swing/plaf/synth/SynthMenuBarUI
javax/swing/plaf/synth/DefaultMenuLayout javax/swing/plaf/synth/DefaultMenuLayout
javax/swing/plaf/synth/SynthMenuUI javax/swing/plaf/synth/SynthMenuUI
javax/swing/plaf/synth/SynthUI
com/sun/java/swing/plaf/gtk/GTKIconFactory com/sun/java/swing/plaf/gtk/GTKIconFactory
com/sun/java/swing/plaf/gtk/GTKIconFactory$MenuArrowIcon com/sun/java/swing/plaf/gtk/GTKIconFactory$MenuArrowIcon
com/sun/java/swing/plaf/gtk/GTKIconFactory$DelegatingIcon com/sun/java/swing/plaf/gtk/GTKIconFactory$DelegatingIcon
......
...@@ -2360,7 +2360,6 @@ com/sun/java/swing/plaf/gtk/GTKLookAndFeel$1FontLazyValue ...@@ -2360,7 +2360,6 @@ com/sun/java/swing/plaf/gtk/GTKLookAndFeel$1FontLazyValue
com/sun/java/swing/plaf/gtk/GTKLookAndFeel$2 com/sun/java/swing/plaf/gtk/GTKLookAndFeel$2
com/sun/java/swing/plaf/gtk/GTKLookAndFeel$3 com/sun/java/swing/plaf/gtk/GTKLookAndFeel$3
javax/swing/plaf/synth/SynthPanelUI javax/swing/plaf/synth/SynthPanelUI
sun/swing/plaf/synth/SynthUI
javax/swing/plaf/synth/SynthConstants javax/swing/plaf/synth/SynthConstants
javax/swing/plaf/synth/SynthContext javax/swing/plaf/synth/SynthContext
javax/swing/plaf/synth/SynthBorder javax/swing/plaf/synth/SynthBorder
...@@ -2373,6 +2372,7 @@ javax/swing/plaf/basic/BasicBorders$FieldBorder ...@@ -2373,6 +2372,7 @@ javax/swing/plaf/basic/BasicBorders$FieldBorder
javax/swing/plaf/synth/SynthMenuBarUI javax/swing/plaf/synth/SynthMenuBarUI
javax/swing/plaf/synth/DefaultMenuLayout javax/swing/plaf/synth/DefaultMenuLayout
javax/swing/plaf/synth/SynthMenuUI javax/swing/plaf/synth/SynthMenuUI
javax/swing/plaf/synth/SynthUI
com/sun/java/swing/plaf/gtk/GTKIconFactory com/sun/java/swing/plaf/gtk/GTKIconFactory
com/sun/java/swing/plaf/gtk/GTKIconFactory$MenuArrowIcon com/sun/java/swing/plaf/gtk/GTKIconFactory$MenuArrowIcon
com/sun/java/swing/plaf/gtk/GTKIconFactory$DelegatingIcon com/sun/java/swing/plaf/gtk/GTKIconFactory$DelegatingIcon
......
/*
* Copyright (c) 2002, 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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.
*/
/*
* (C) Copyright IBM Corp. 2000 - All Rights Reserved
*
* The original version of this source code and documentation is
* copyrighted and owned by IBM. These materials are provided
* under terms of a License Agreement between IBM and Sun.
* This technology is protected by multiple US and International
* patents. This notice and attribution to IBM may not be removed.
*
*/
package com.sun.inputmethods.internal.indicim;
import java.awt.Image;
import java.awt.im.spi.InputMethod;
import java.awt.im.spi.InputMethodDescriptor;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
public class DevanagariInputMethodDescriptor implements InputMethodDescriptor {
static final Locale HINDI = new Locale("hi", "IN");
public DevanagariInputMethodDescriptor() {
}
/**
* @see java.awt.im.spi.InputMethodDescriptor#getAvailableLocales
*/
public Locale[] getAvailableLocales() {
return new Locale[] { HINDI };
}
/**
* @see java.awt.im.spi.InputMethodDescriptor#hasDynamicLocaleList
*/
public boolean hasDynamicLocaleList() {
return false;
}
/**
* @see java.awt.im.spi.InputMethodDescriptor#getInputMethodDisplayName
*/
public synchronized String getInputMethodDisplayName(Locale inputLocale, Locale displayLanguage) {
try {
ResourceBundle resources = ResourceBundle.getBundle("com.sun.inputmethods.internal.indicim.resources.DisplayNames", displayLanguage);
return resources.getString("DisplayName.Devanagari");
} catch (MissingResourceException mre) {
return "Devanagari Input Method";
}
}
/**
* @see java.awt.im.spi.InputMethodDescriptor#getInputMethodIcon
*/
public Image getInputMethodIcon(Locale inputLocale) {
return null;
}
/**
* @see java.awt.im.spi.InputMethodDescriptor#createInputMethod
*/
public InputMethod createInputMethod() throws Exception {
IndicInputMethodImpl impl = new IndicInputMethodImpl(
DevanagariTables.keyboardMap,
DevanagariTables.joinWithNukta,
DevanagariTables.nuktaForm,
DevanagariTables.substitutionTable);
return new IndicInputMethod(HINDI, impl);
}
public String toString() {
return getClass().getName();
}
}
/*
* Copyright (c) 2002, 2003, 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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.
*/
/*
* (C) Copyright IBM Corp. 2000 - All Rights Reserved
*
* The original version of this source code and documentation is
* copyrighted and owned by IBM. These materials are provided
* under terms of a License Agreement between IBM and Sun.
* This technology is protected by multiple US and International
* patents. This notice and attribution to IBM may not be removed.
*
*/
package com.sun.inputmethods.internal.indicim;
class DevanagariTables {
static final char[] keyboardMap = {
/* 00 */ '\u0000',
/* 01 */ '\u0001',
/* 02 */ '\u0002',
/* 03 */ '\u0003',
/* 04 */ '\u0004',
/* 05 */ '\u0005',
/* 06 */ '\u0006',
/* 07 */ '\u0007',
/* 08 */ '\u0008',
/* 09 */ '\u0009',
/* 0A */ '\012',
/* 0B */ '\u000B',
/* 0C */ '\u000C',
/* 0D */ '\015',
/* 0E */ '\u000E',
/* 0F */ '\u000F',
/* 10 */ '\u0010',
/* 11 */ '\u0011',
/* 12 */ '\u0012',
/* 13 */ '\u0013',
/* 14 */ '\u0014',
/* 15 */ '\u0015',
/* 16 */ '\u0016',
/* 17 */ '\u0017',
/* 18 */ '\u0018',
/* 19 */ '\u0019',
/* 1A */ '\u001A',
/* 1B */ '\u001B',
/* 1C */ '\u001C',
/* 1D */ '\u001D',
/* 1E */ '\u001E',
/* 1F */ '\u001F',
/* 20 */ '\u0020',
/* 21 */ '\u090D', // '!'
/* 22 */ '\u0920', // '"'
/* 23 */ '\uFF00', // '#'
/* 24 */ '\uFF01', // '$'
/* 25 */ '\uFF02', // '%'
/* 26 */ '\uFF04', // '&'
/* 27 */ '\u091F', // '''
/* 28 */ '\u0028', // '('
/* 29 */ '\u0029', // ')'
/* 2A */ '\uFF05', // '*'
/* 2B */ '\u090B', // '+'
/* 2C */ '\u002C', // ','
/* 2D */ '\u002D', // '-'
/* 2E */ '\u002E', // '.'
/* 2F */ '\u092F', // '/'
/* 30 */ '\u0966', // '0'
/* 31 */ '\u0967', // '1'
/* 32 */ '\u0968', // '2'
/* 33 */ '\u0969', // '3'
/* 34 */ '\u096A', // '4'
/* 35 */ '\u096B', // '5'
/* 36 */ '\u096C', // '6'
/* 37 */ '\u096D', // '7'
/* 38 */ '\u096E', // '8'
/* 39 */ '\u096F', // '9'
/* 3A */ '\u091B', // ':'
/* 3B */ '\u091A', // ';'
/* 3C */ '\u0937', // '<'
/* 3D */ '\u0943', // '='
/* 3E */ '\u0964', // '>'
/* 3F */ '\u095F', // '?'
/* 40 */ '\u0945', // '@'
/* 41 */ '\u0913', // 'A'
/* 42 */ '\u0934', // 'B'
/* 43 */ '\u0923', // 'C'
/* 44 */ '\u0905', // 'D'
/* 45 */ '\u0906', // 'E'
/* 46 */ '\u0907', // 'F'
/* 47 */ '\u0909', // 'G'
/* 48 */ '\u092B', // 'H'
/* 49 */ '\u0918', // 'I'
/* 4A */ '\u0931', // 'J'
/* 4B */ '\u0916', // 'K'
/* 4C */ '\u0925', // 'L'
/* 4D */ '\u0936', // 'M'
/* 4E */ '\u0933', // 'N'
/* 4F */ '\u0927', // 'O'
/* 50 */ '\u091D', // 'P'
/* 51 */ '\u0914', // 'Q'
/* 52 */ '\u0908', // 'R'
/* 53 */ '\u090F', // 'S'
/* 54 */ '\u090A', // 'T'
/* 55 */ '\u0919', // 'U'
/* 56 */ '\u0929', // 'V'
/* 57 */ '\u0910', // 'W'
/* 58 */ '\u0901', // 'X'
/* 59 */ '\u092D', // 'Y'
/* 5A */ '\u090E', // 'Z'
/* 5B */ '\u0921', // '['
/* 5C */ '\u0949', // '\'
/* 5D */ '\u093C', // ']'
/* 5E */ '\uFF03', // '^'
/* 5F */ '\u0903', // '_'
/* 60 */ '\u094A', // '`'
/* 61 */ '\u094B', // 'a'
/* 62 */ '\u0935', // 'b'
/* 63 */ '\u092E', // 'c'
/* 64 */ '\u094D', // 'd'
/* 65 */ '\u093E', // 'e'
/* 66 */ '\u093F', // 'f'
/* 67 */ '\u0941', // 'g'
/* 68 */ '\u092A', // 'h'
/* 69 */ '\u0917', // 'i'
/* 6A */ '\u0930', // 'j'
/* 6B */ '\u0915', // 'k'
/* 6C */ '\u0924', // 'l'
/* 6D */ '\u0938', // 'm'
/* 6E */ '\u0932', // 'n'
/* 6F */ '\u0926', // 'o'
/* 70 */ '\u091C', // 'p'
/* 71 */ '\u094C', // 'q'
/* 72 */ '\u0940', // 'r'
/* 73 */ '\u0947', // 's'
/* 74 */ '\u0942', // 't'
/* 75 */ '\u0939', // 'u'
/* 76 */ '\u0928', // 'v'
/* 77 */ '\u0948', // 'w'
/* 78 */ '\u0902', // 'x'
/* 79 */ '\u092C', // 'y'
/* 7A */ '\u0946', // 'z'
/* 7B */ '\u0922', // '{'
/* 7C */ '\u0911', // '|'
/* 7D */ '\u091E', // '}'
/* 7E */ '\u0912', // '~'
/* 7F */ '\u007F' //
};
// the character substitutions for the meta characters.
static final char[] RA_SUB = {'\u094D', '\u0930'};
static final char[] RA_SUP = {'\u0930', '\u094D'};
static final char[] CONJ_JA_NYA = {'\u091C', '\u094D', '\u091E'};
static final char[] CONJ_TA_RA = {'\u0924', '\u094D', '\u0930'};
static final char[] CONJ_KA_SSA = {'\u0915', '\u094D', '\u0937'};
static final char[] CONJ_SHA_RA = {'\u0936', '\u094D', '\u0930'};
static final char[][] substitutionTable = {
RA_SUB, RA_SUP, CONJ_JA_NYA, CONJ_TA_RA, CONJ_KA_SSA, CONJ_SHA_RA
};
// The following characters followed by Nukta should be replaced
// by the corresponding character as defined in ISCII91
static final char SIGN_CANDRABINDU = '\u0901';
static final char LETTER_I = '\u0907';
static final char LETTER_II = '\u0908';
static final char LETTER_VOCALIC_R = '\u090B';
static final char LETTER_KA = '\u0915';
static final char LETTER_KHA = '\u0916';
static final char LETTER_GA = '\u0917';
static final char LETTER_JA = '\u091C';
static final char LETTER_DDA = '\u0921';
static final char LETTER_DDHA = '\u0922';
static final char LETTER_PHA = '\u092B';
static final char VOWEL_SIGN_I = '\u093F';
static final char VOWEL_SIGN_II = '\u0940';
static final char VOWEL_SIGN_VOCALIC_R = '\u0943';
static final char DANDA = '\u0964';
// The follwing characters replace the above characters followed by Nukta. These
// are defined in one to one correspondence order.
static final char SIGN_OM = '\u0950';
static final char LETTER_VOCALIC_L = '\u090C';
static final char LETTER_VOCALIC_LL = '\u0961';
static final char LETTER_VOCALIC_RR = '\u0960';
static final char LETTER_QA = '\u0958';
static final char LETTER_KHHA = '\u0959';
static final char LETTER_GHHA = '\u095A';
static final char LETTER_ZA = '\u095B';
static final char LETTER_DDDHA = '\u095C';
static final char LETTER_RHA = '\u095D';
static final char LETTER_FA = '\u095E';
static final char VOWEL_SIGN_VOCALIC_L = '\u0962';
static final char VOWEL_SIGN_VOCALIC_LL = '\u0963';
static final char VOWEL_SIGN_VOCALIC_RR = '\u0944';
static final char SIGN_AVAGRAHA = '\u093D';
static final char[] joinWithNukta = {
SIGN_CANDRABINDU,
LETTER_I,
LETTER_II,
LETTER_VOCALIC_R ,
LETTER_KA,
LETTER_KHA,
LETTER_GA,
LETTER_JA,
LETTER_DDA,
LETTER_DDHA,
LETTER_PHA,
VOWEL_SIGN_I,
VOWEL_SIGN_II,
VOWEL_SIGN_VOCALIC_R,
DANDA
};
static final char[] nuktaForm = {
SIGN_OM,
LETTER_VOCALIC_L,
LETTER_VOCALIC_LL,
LETTER_VOCALIC_RR,
LETTER_QA,
LETTER_KHHA,
LETTER_GHHA,
LETTER_ZA,
LETTER_DDDHA,
LETTER_RHA,
LETTER_FA,
VOWEL_SIGN_VOCALIC_L,
VOWEL_SIGN_VOCALIC_LL,
VOWEL_SIGN_VOCALIC_RR,
SIGN_AVAGRAHA
};
}
/*
* Copyright (c) 2002, 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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.
*/
/*
* (C) Copyright IBM Corp. 2000 - All Rights Reserved
*
* The original version of this source code and documentation is
* copyrighted and owned by IBM. These materials are provided
* under terms of a License Agreement between IBM and Sun.
* This technology is protected by multiple US and International
* patents. This notice and attribution to IBM may not be removed.
*
*/
package com.sun.inputmethods.internal.indicim;
import java.awt.im.spi.InputMethod;
import java.awt.im.spi.InputMethodContext;
import java.awt.AWTEvent;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.lang.Character.Subset;
import java.util.Locale;
class IndicInputMethod implements InputMethod {
private IndicInputMethodImpl impl;
private Locale locale;
IndicInputMethod(Locale theLocale, IndicInputMethodImpl theImplementation) {
locale = theLocale;
impl = theImplementation;
}
/**
* Sets the input method context, which is used to dispatch input method
* events to the client component and to request information from
* the client component.
* <p>
* This method is called once immediately after instantiating this input
* method.
*
* @param context the input method context for this input method
* @exception NullPointerException if <code>context</code> is null
*/
public void setInputMethodContext(InputMethodContext context) {
impl.setInputMethodContext(context);
}
/**
* Attempts to set the input locale. If the input method supports the
* desired locale, it changes its behavior to support input for the locale
* and returns true.
* Otherwise, it returns false and does not change its behavior.
* <p>
* This method is called
* <ul>
* <li>by {@link java.awt.im.InputContext#selectInputMethod InputContext.selectInputMethod},
* <li>when switching to this input method through the user interface if the user
* specified a locale or if the previously selected input method's
* {@link java.awt.im.spi.InputMethod#getLocale getLocale} method
* returns a non-null value.
* </ul>
*
* @param locale locale to input
* @return whether the specified locale is supported
* @exception NullPointerException if <code>locale</code> is null
*/
public boolean setLocale(Locale locale) {
if (locale.getLanguage().equals(this.locale.getLanguage())) {
//System.out.println("returning true for locale " + locale);
return true;
}
else {
//System.out.println("returning false for locale " + locale);
return false;
}
}
/**
* Returns the current input locale. Might return null in exceptional cases.
* <p>
* This method is called
* <ul>
* <li>by {@link java.awt.im.InputContext#getLocale InputContext.getLocale} and
* <li>when switching from this input method to a different one through the
* user interface.
* </ul>
*
* @return the current input locale, or null
*/
public Locale getLocale() {
return locale;
}
/**
* Sets the subsets of the Unicode character set that this input method
* is allowed to input. Null may be passed in to indicate that all
* characters are allowed.
* <p>
* This method is called
* <ul>
* <li>immediately after instantiating this input method,
* <li>when switching to this input method from a different one, and
* <li>by {@link java.awt.im.InputContext#setCharacterSubsets InputContext.setCharacterSubsets}.
* </ul>
*
* @param subsets the subsets of the Unicode character set from which
* characters may be input
*/
public void setCharacterSubsets(Subset[] subsets) {
}
/**
* Enables or disables this input method for composition,
* depending on the value of the parameter <code>enable</code>.
* <p>
* An input method that is enabled for composition interprets incoming
* events for both composition and control purposes, while a
* disabled input method does not interpret events for composition.
* Note however that events are passed on to the input method regardless
* whether it is enabled or not, and that an input method that is disabled
* for composition may still interpret events for control purposes,
* including to enable or disable itself for composition.
* <p>
* This method is called
* <ul>
* <li>by {@link java.awt.im.InputContext#setCompositionEnabled InputContext.setCompositionEnabled},
* <li>when switching to this input method from a different one using the
* user interface or
* {@link java.awt.im.InputContext#selectInputMethod InputContext.selectInputMethod},
* if the previously selected input method's
* {@link java.awt.im.spi.InputMethod#isCompositionEnabled isCompositionEnabled}
* method returns without throwing an exception.
* </ul>
*
* @param enable whether to enable the input method for composition
* @throws UnsupportedOperationException if this input method does not
* support the enabling/disabling operation
* @see #isCompositionEnabled
*/
public void setCompositionEnabled(boolean enable) {
throw new UnsupportedOperationException();
}
/**
* Determines whether this input method is enabled.
* An input method that is enabled for composition interprets incoming
* events for both composition and control purposes, while a
* disabled input method does not interpret events for composition.
* <p>
* This method is called
* <ul>
* <li>by {@link java.awt.im.InputContext#isCompositionEnabled InputContext.isCompositionEnabled} and
* <li>when switching from this input method to a different one using the
* user interface or
* {@link java.awt.im.InputContext#selectInputMethod InputContext.selectInputMethod}.
* </ul>
*
* @return <code>true</code> if this input method is enabled for
* composition; <code>false</code> otherwise.
* @throws UnsupportedOperationException if this input method does not
* support checking whether it is enabled for composition
* @see #setCompositionEnabled
*/
public boolean isCompositionEnabled() {
return true;
}
/**
* Starts the reconversion operation. The input method obtains the
* text to be reconverted from the current client component using the
* {@link java.awt.im.InputMethodRequests#getSelectedText InputMethodRequests.getSelectedText}
* method. It can use other <code>InputMethodRequests</code>
* methods to request additional information required for the
* reconversion operation. The composed and committed text
* produced by the operation is sent to the client component as a
* sequence of <code>InputMethodEvent</code>s. If the given text
* cannot be reconverted, the same text should be sent to the
* client component as committed text.
* <p>
* This method is called by
* {@link java.awt.im.InputContext#reconvert() InputContext.reconvert}.
*
* @throws UnsupportedOperationException if the input method does not
* support the reconversion operation.
*/
public void reconvert() {
throw new UnsupportedOperationException("This input method does not reconvert.");
}
/**
* Dispatches the event to the input method. If input method support is
* enabled for the focussed component, incoming events of certain types
* are dispatched to the current input method for this component before
* they are dispatched to the component's methods or event listeners.
* The input method decides whether it needs to handle the event. If it
* does, it also calls the event's <code>consume</code> method; this
* causes the event to not get dispatched to the component's event
* processing methods or event listeners.
* <p>
* Events are dispatched if they are instances of InputEvent or its
* subclasses.
* This includes instances of the AWT classes KeyEvent and MouseEvent.
* <p>
* This method is called by {@link java.awt.im.InputContext#dispatchEvent InputContext.dispatchEvent}.
*
* @param event the event being dispatched to the input method
* @exception NullPointerException if <code>event</code> is null
*/
public void dispatchEvent(AWTEvent event) {
if (event instanceof KeyEvent) {
KeyEvent keyEvent = (KeyEvent) event;
if (event.getID() == KeyEvent.KEY_TYPED) {
impl.handleKeyTyped(keyEvent);
}
//System.out.println("handled event " + event);
}
else {
//System.out.println("did not handle event " + event);
}
}
/**
* Notifies this input method of changes in the client window
* location or state. This method is called while this input
* method is the current input method of its input context and
* notifications for it are enabled (see {@link
* InputMethodContext#enableClientWindowNotification
* InputMethodContext.enableClientWindowNotification}). Calls
* to this method are temporarily suspended if the input context's
* {@link java.awt.im.InputContext#removeNotify removeNotify}
* method is called, and resume when the input method is activated
* for a new client component. It is called in the following
* situations:
* <ul>
* <li>
* when the window containing the current client component changes
* in location, size, visibility, iconification state, or when the
* window is closed.</li>
* <li>
* from <code> enableClientWindowNotification(inputMethod,
* true)</code> if the current client component exists,</li>
* <li>
* when activating the input method for the first time after it
* called
* <code>enableClientWindowNotification(inputMethod,
* true)</code> if during the call no current client component was
* available,</li>
* <li>
* when activating the input method for a new client component
* after the input context's removeNotify method has been
* called.</li>
* </ul>
* @param bounds client window's {@link
* java.awt.Component#getBounds bounds} on the screen; or null if
* the client window is iconified or invisible
*/
public void notifyClientWindowChange(Rectangle bounds) {
}
/**
* Activates the input method for immediate input processing.
* <p>
* If an input method provides its own windows, it should make sure
* at this point that all necessary windows are open and visible.
* <p>
* This method is called
* <ul>
* <li>by {@link java.awt.im.InputContext#dispatchEvent InputContext.dispatchEvent}
* when a client component receives a FOCUS_GAINED event,
* <li>when switching to this input method from a different one using the
* user interface or
* {@link java.awt.im.InputContext#selectInputMethod InputContext.selectInputMethod}.
* </ul>
* The method is only called when the input method is inactive.
* A newly instantiated input method is assumed to be inactive.
*/
public void activate() {
//System.out.println("activated");
}
/**
* Deactivates the input method.
* The isTemporary argument has the same meaning as in
* {@link java.awt.event.FocusEvent#isTemporary FocusEvent.isTemporary}.
* <p>
* If an input method provides its own windows, only windows that relate
* to the current composition (such as a lookup choice window) should be
* closed at this point.
* It is possible that the input method will be immediately activated again
* for a different client component, and closing and reopening more
* persistent windows (such as a control panel) would create unnecessary
* screen flicker.
* Before an instance of a different input method class is activated,
* {@link #hideWindows} is called on the current input method.
* <p>
* This method is called
* <ul>
* <li>by {@link java.awt.im.InputContext#dispatchEvent InputContext.dispatchEvent}
* when a client component receives a FOCUS_LOST event,
* <li>when switching from this input method to a different one using the
* user interface or
* {@link java.awt.im.InputContext#selectInputMethod InputContext.selectInputMethod},
* <li>before {@link #removeNotify removeNotify} if the current client component is
* removed.
* </ul>
* The method is only called when the input method is active.
*
* @param isTemporary whether the focus change is temporary
*/
public void deactivate(boolean isTemporary) {
//System.out.println("deactivated");
}
/**
* Closes or hides all windows opened by this input method instance or
* its class.
* <p>
* This method is called
* <ul>
* <li>before calling {@link #activate activate} on an instance of a different input
* method class,
* <li>before calling {@link #dispose dispose} on this input method.
* </ul>
* The method is only called when the input method is inactive.
*/
public void hideWindows() {
}
/**
* Notifies the input method that a client component has been
* removed from its containment hierarchy, or that input method
* support has been disabled for the component.
* <p>
* This method is called by {@link java.awt.im.InputContext#removeNotify InputContext.removeNotify}.
* <p>
* The method is only called when the input method is inactive.
*/
public void removeNotify() {
}
/**
* Ends any input composition that may currently be going on in this
* context. Depending on the platform and possibly user preferences,
* this may commit or delete uncommitted text. Any changes to the text
* are communicated to the active component using an input method event.
*
* <p>
* A text editing component may call this in a variety of situations,
* for example, when the user moves the insertion point within the text
* (but outside the composed text), or when the component's text is
* saved to a file or copied to the clipboard.
* <p>
* This method is called
* <ul>
* <li>by {@link java.awt.im.InputContext#endComposition InputContext.endComposition},
* <li>by {@link java.awt.im.InputContext#dispatchEvent InputContext.dispatchEvent}
* when switching to a different client component
* <li>when switching from this input method to a different one using the
* user interface or
* {@link java.awt.im.InputContext#selectInputMethod InputContext.selectInputMethod}.
* </ul>
*/
public void endComposition() {
impl.endComposition();
}
/**
* Disposes of the input method and releases the resources used by it.
* In particular, the input method should dispose windows and close files that are no
* longer needed.
* <p>
* This method is called by {@link java.awt.im.InputContext#dispose InputContext.dispose}.
* <p>
* The method is only called when the input method is inactive.
* No method of this interface is called on this instance after dispose.
*/
public void dispose() {
}
/**
* Returns a control object from this input method, or null. A
* control object provides methods that control the behavior of the
* input method or obtain information from the input method. The type
* of the object is an input method specific class. Clients have to
* compare the result against known input method control object
* classes and cast to the appropriate class to invoke the methods
* provided.
* <p>
* This method is called by
* {@link java.awt.im.InputContext#getInputMethodControlObject InputContext.getInputMethodControlObject}.
*
* @return a control object from this input method, or null
*/
public Object getControlObject() {
return null;
}
}
/*
* Copyright (c) 2002, 2004, 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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.
*/
/*
* (C) Copyright IBM Corp. 2000 - All Rights Reserved
*
* The original version of this source code and documentation is
* copyrighted and owned by IBM. These materials are provided
* under terms of a License Agreement between IBM and Sun.
* This technology is protected by multiple US and International
* patents. This notice and attribution to IBM may not be removed.
*
*/
package com.sun.inputmethods.internal.indicim;
import java.awt.im.spi.InputMethodContext;
import java.awt.event.KeyEvent;
import java.awt.event.InputMethodEvent;
import java.awt.font.TextAttribute;
import java.awt.font.TextHitInfo;
import java.text.AttributedCharacterIterator;
import java.util.Hashtable;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
class IndicInputMethodImpl {
protected char[] KBD_MAP;
private static final char SUBSTITUTION_BASE = '\uff00';
// Indexed by map value - SUBSTITUTION_BASE
protected char[][] SUBSTITUTION_TABLE;
// Invalid character.
private static final char INVALID_CHAR = '\uffff';
// Unmapped versions of some interesting characters.
private static final char KEY_SIGN_VIRAMA = '\u0064'; // or just 'd'??
private static final char KEY_SIGN_NUKTA = '\u005d'; // or just ']'??
// Two succeeding viramas are replaced by one virama and one ZWNJ.
// Viram followed by Nukta is replaced by one VIRAMA and one ZWJ
private static final char ZWJ = '\u200d';
private static final char ZWNJ = '\u200c';
// Backspace
private static final char BACKSPACE = '\u0008';
// Sorted list of characters which can be followed by Nukta
protected char[] JOIN_WITH_NUKTA;
// Nukta form of the above characters
protected char[] NUKTA_FORM;
private int log2;
private int power;
private int extra;
// cached TextHitInfo. Only one type of TextHitInfo is required.
private static final TextHitInfo ZERO_TRAILING_HIT_INFO = TextHitInfo.trailing(0);
/**
* Returns the index of the given character in the JOIN_WITH_NUKTA array.
* If character is not found, -1 is returned.
*/
private int nuktaIndex(char ch) {
if (JOIN_WITH_NUKTA == null) {
return -1;
}
int probe = power;
int index = 0;
if (JOIN_WITH_NUKTA[extra] <= ch) {
index = extra;
}
while (probe > (1 << 0)) {
probe >>= 1;
if (JOIN_WITH_NUKTA[index + probe] <= ch) {
index += probe;
}
}
if (JOIN_WITH_NUKTA[index] != ch) {
index = -1;
}
return index;
}
/**
* Returns the equivalent character for hindi locale.
* @param originalChar The original character.
*/
private char getMappedChar( char originalChar )
{
if (originalChar <= KBD_MAP.length) {
return KBD_MAP[originalChar];
}
return originalChar;
}//getMappedChar()
// Array used to hold the text to be sent.
// If the last character was not committed it is stored in text[0].
// The variable totalChars give an indication of whether the last
// character was committed or not. If at any time ( but not within a
// a call to dispatchEvent ) totalChars is not equal to 0 ( it can
// only be 1 otherwise ) the last character was not committed.
private char [] text = new char[4];
// this is always 0 before and after call to dispatchEvent. This character assumes
// significance only within a call to dispatchEvent.
private int committedChars = 0;// number of committed characters
// the total valid characters in variable text currently.
private int totalChars = 0;//number of total characters ( committed + composed )
private boolean lastCharWasVirama = false;
private InputMethodContext context;
//
// Finds the high bit by binary searching
// through the bits in n.
//
private static byte highBit(int n)
{
if (n <= 0) {
return -32;
}
byte bit = 0;
if (n >= 1 << 16) {
n >>= 16;
bit += 16;
}
if (n >= 1 << 8) {
n >>= 8;
bit += 8;
}
if (n >= 1 << 4) {
n >>= 4;
bit += 4;
}
if (n >= 1 << 2) {
n >>= 2;
bit += 2;
}
if (n >= 1 << 1) {
n >>= 1;
bit += 1;
}
return bit;
}
IndicInputMethodImpl(char[] keyboardMap, char[] joinWithNukta, char[] nuktaForm,
char[][] substitutionTable) {
KBD_MAP = keyboardMap;
JOIN_WITH_NUKTA = joinWithNukta;
NUKTA_FORM = nuktaForm;
SUBSTITUTION_TABLE = substitutionTable;
if (JOIN_WITH_NUKTA != null) {
int log2 = highBit(JOIN_WITH_NUKTA.length);
power = 1 << log2;
extra = JOIN_WITH_NUKTA.length - power;
} else {
power = extra = 0;
}
}
void setInputMethodContext(InputMethodContext context) {
this.context = context;
}
void handleKeyTyped(KeyEvent kevent) {
char keyChar = kevent.getKeyChar();
char currentChar = getMappedChar(keyChar);
// The Explicit and Soft Halanta case.
if ( lastCharWasVirama ) {
switch (keyChar) {
case KEY_SIGN_NUKTA:
currentChar = ZWJ;
break;
case KEY_SIGN_VIRAMA:
currentChar = ZWNJ;
break;
default:
}//endSwitch
}//endif
if (currentChar == INVALID_CHAR) {
kevent.consume();
return;
}
if (currentChar == BACKSPACE) {
lastCharWasVirama = false;
if (totalChars > 0) {
totalChars = committedChars = 0;
} else {
return;
}
}
else if (keyChar == KEY_SIGN_NUKTA) {
int nuktaIndex = nuktaIndex(text[0]);
if (nuktaIndex != -1) {
text[0] = NUKTA_FORM[nuktaIndex];
} else {
// the last character was committed, commit just Nukta.
// Note : the lastChar must have been committed if it is not one of
// the characters which combine with nukta.
// the state must be totalChars = committedChars = 0;
text[totalChars++] = currentChar;
}
committedChars += 1;
}
else {
int nuktaIndex = nuktaIndex(currentChar);
if (nuktaIndex != -1) {
// Commit everything but currentChar
text[totalChars++] = currentChar;
committedChars = totalChars-1;
} else {
if (currentChar >= SUBSTITUTION_BASE) {
char[] sub = SUBSTITUTION_TABLE[currentChar - SUBSTITUTION_BASE];
System.arraycopy(sub, 0, text, totalChars, sub.length);
totalChars += sub.length;
} else {
text[totalChars++] = currentChar;
}
committedChars = totalChars;
}
}
ACIText aText = new ACIText( text, 0, totalChars, committedChars );
int composedCharLength = totalChars - committedChars;
TextHitInfo caret=null,visiblePosition=null;
switch( composedCharLength ) {
case 0:
break;
case 1:
visiblePosition = caret = ZERO_TRAILING_HIT_INFO;
break;
default:
assert false : "The code should not reach here. There is no case where there can be more than one character pending.";
}
context.dispatchInputMethodEvent(InputMethodEvent.INPUT_METHOD_TEXT_CHANGED,
aText,
committedChars,
caret,
visiblePosition);
if (totalChars == 0) {
text[0] = INVALID_CHAR;
} else {
text[0] = text[totalChars - 1];// make text[0] hold the last character
}
lastCharWasVirama = keyChar == KEY_SIGN_VIRAMA && !lastCharWasVirama;
totalChars -= committedChars;
committedChars = 0;
// state now text[0] = last character
// totalChars = ( last character committed )? 0 : 1;
// committedChars = 0;
kevent.consume();// prevent client from getting this event.
}//dispatchEvent()
void endComposition() {
if( totalChars != 0 ) {// if some character is not committed.
ACIText aText = new ACIText( text, 0, totalChars, totalChars );
context.dispatchInputMethodEvent( InputMethodEvent.INPUT_METHOD_TEXT_CHANGED,
aText, totalChars, null, null );
totalChars = committedChars = 0;
text[0] = INVALID_CHAR;
lastCharWasVirama = false;
}//end if
}//endComposition()
// custom AttributedCharacterIterator -- much lightweight since currently there is no
// attribute defined on the text being generated by the input method.
private class ACIText implements AttributedCharacterIterator {
private char [] text = null;
private int committed = 0;
private int index = 0;
ACIText( char [] chArray, int offset, int length, int committed ) {
this.text = new char[length];
this.committed = committed;
System.arraycopy( chArray, offset, text, 0, length );
}//c'tor
// CharacterIterator methods.
public char first() {
return _setIndex( 0 );
}
public char last() {
if( text.length == 0 ) {
return _setIndex( text.length );
}
return _setIndex( text.length - 1 );
}
public char current() {
if( index == text.length )
return DONE;
return text[index];
}
public char next() {
if( index == text.length ) {
return DONE;
}
return _setIndex( index + 1 );
}
public char previous() {
if( index == 0 )
return DONE;
return _setIndex( index - 1 );
}
public char setIndex(int position) {
if( position < 0 || position > text.length ) {
throw new IllegalArgumentException();
}
return _setIndex( position );
}
public int getBeginIndex() {
return 0;
}
public int getEndIndex() {
return text.length;
}
public int getIndex() {
return index;
}
public Object clone() {
try {
ACIText clone = (ACIText) super.clone();
return clone;
} catch (CloneNotSupportedException e) {
throw new InternalError();
}
}
// AttributedCharacterIterator methods.
public int getRunStart() {
return index >= committed ? committed : 0;
}
public int getRunStart(AttributedCharacterIterator.Attribute attribute) {
return (index >= committed &&
attribute == TextAttribute.INPUT_METHOD_UNDERLINE) ? committed : 0;
}
public int getRunStart(Set<? extends Attribute> attributes) {
return (index >= committed &&
attributes.contains(TextAttribute.INPUT_METHOD_UNDERLINE)) ? committed : 0;
}
public int getRunLimit() {
return index < committed ? committed : text.length;
}
public int getRunLimit(AttributedCharacterIterator.Attribute attribute) {
return (index < committed &&
attribute == TextAttribute.INPUT_METHOD_UNDERLINE) ? committed : text.length;
}
public int getRunLimit(Set<? extends Attribute> attributes) {
return (index < committed &&
attributes.contains(TextAttribute.INPUT_METHOD_UNDERLINE)) ? committed : text.length;
}
public Map getAttributes() {
Hashtable result = new Hashtable();
if (index >= committed && committed < text.length) {
result.put(TextAttribute.INPUT_METHOD_UNDERLINE,
TextAttribute.UNDERLINE_LOW_ONE_PIXEL);
}
return result;
}
public Object getAttribute(AttributedCharacterIterator.Attribute attribute) {
if (index >= committed &&
committed < text.length &&
attribute == TextAttribute.INPUT_METHOD_UNDERLINE) {
return TextAttribute.UNDERLINE_LOW_ONE_PIXEL;
}
return null;
}
public Set getAllAttributeKeys() {
HashSet result = new HashSet();
if (committed < text.length) {
result.add(TextAttribute.INPUT_METHOD_UNDERLINE);
}
return result;
}
// private methods
/**
* This is always called with valid i ( 0 < i <= text.length )
*/
private char _setIndex( int i ) {
index = i;
if( i == text.length ) {
return DONE;
}
return text[i];
}//_setIndex()
}//end of inner class
}
#
# Default Input method display names for Indic input methods
#
DisplayName.Devanagari = Devanagari Input Method
#
# Default Input method display names for Indic input methods
#
DisplayName.Devanagari = Devanagari Input Method
#
# Default Input method display names for Indic input methods
#
DisplayName.Devanagari = Devanagari Input Method
#
# Default Input method display names for Indic input methods
#
DisplayName.Devanagari = Devanagari Input Method
#
# Default Input method display names for Indic input methods
#
DisplayName.Devanagari = Devanagari Input Method
#
# Default Input method display names for Indic input methods
#
DisplayName.Devanagari = \u30c7\u30fc\u30f4\u30a1\u30ca\u30fc\u30ac\u30ea\u30fc\u30a4\u30f3\u30d7\u30c3\u30c8\u30e1\u30bd\u30c3\u30c9
#
# Default Input method display names for Indic input methods
#
DisplayName.Devanagari = Devanagari \uc785\ub825 \uba54\uc18c\ub4dc
#
# Default Input method display names for Indic input methods
#
DisplayName.Devanagari = Devanagari Input Method
#
# Default Input method display names for Indic input methods
#
DisplayName.Devanagari = Devanagari \u8f93\u5165\u6cd5
#
# Default Input method display names for Indic input methods
#
DisplayName.Devanagari = Devanagari \u8f38\u5165\u6cd5
/*
* Copyright (c) 2002, 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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.
*/
/*
*
* (C) Copyright IBM Corp. 2000 - All Rights Reserved
*
* The original version of this source code and documentation is
* copyrighted and owned by IBM. These materials are provided
* under terms of a License Agreement between IBM and Sun.
* This technology is protected by multiple US and International
* patents. This notice and attribution to IBM may not be removed.
*
*/
package com.sun.inputmethods.internal.thaiim;
import java.awt.im.spi.InputMethod;
import java.awt.im.spi.InputMethodContext;
import java.awt.AWTEvent;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.lang.Character.Subset;
import java.util.Locale;
class ThaiInputMethod implements InputMethod {
private ThaiInputMethodImpl impl;
private Locale locale;
ThaiInputMethod(Locale theLocale, ThaiInputMethodImpl theImplementation) {
locale = theLocale;
impl = theImplementation;
}
/**
* Sets the input method context, which is used to dispatch input method
* events to the client component and to request information from
* the client component.
* <p>
* This method is called once immediately after instantiating this input
* method.
*
* @param context the input method context for this input method
* @exception NullPointerException if <code>context</code> is null
*/
public void setInputMethodContext(InputMethodContext context) {
impl.setInputMethodContext(context);
}
/**
* Attempts to set the input locale. If the input method supports the
* desired locale, it changes its behavior to support input for the locale
* and returns true.
* Otherwise, it returns false and does not change its behavior.
* <p>
* This method is called
* <ul>
* <li>by {@link java.awt.im.InputContext#selectInputMethod InputContext.selectInputMethod},
* <li>when switching to this input method through the user interface if the user
* specified a locale or if the previously selected input method's
* {@link java.awt.im.spi.InputMethod#getLocale getLocale} method
* returns a non-null value.
* </ul>
*
* @param locale locale to input
* @return whether the specified locale is supported
* @exception NullPointerException if <code>locale</code> is null
*/
public boolean setLocale(Locale locale) {
if (locale.getLanguage().equals(this.locale.getLanguage())) {
//System.out.println("returning true for locale " + locale);
return true;
}
else {
//System.out.println("returning false for locale " + locale);
return false;
}
}
/**
* Returns the current input locale. Might return null in exceptional cases.
* <p>
* This method is called
* <ul>
* <li>by {@link java.awt.im.InputContext#getLocale InputContext.getLocale} and
* <li>when switching from this input method to a different one through the
* user interface.
* </ul>
*
* @return the current input locale, or null
*/
public Locale getLocale() {
return locale;
}
/**
* Sets the subsets of the Unicode character set that this input method
* is allowed to input. Null may be passed in to indicate that all
* characters are allowed.
* <p>
* This method is called
* <ul>
* <li>immediately after instantiating this input method,
* <li>when switching to this input method from a different one, and
* <li>by {@link java.awt.im.InputContext#setCharacterSubsets InputContext.setCharacterSubsets}.
* </ul>
*
* @param subsets the subsets of the Unicode character set from which
* characters may be input
*/
public void setCharacterSubsets(Subset[] subsets) {
}
/**
* Enables or disables this input method for composition,
* depending on the value of the parameter <code>enable</code>.
* <p>
* An input method that is enabled for composition interprets incoming
* events for both composition and control purposes, while a
* disabled input method does not interpret events for composition.
* Note however that events are passed on to the input method regardless
* whether it is enabled or not, and that an input method that is disabled
* for composition may still interpret events for control purposes,
* including to enable or disable itself for composition.
* <p>
* This method is called
* <ul>
* <li>by {@link java.awt.im.InputContext#setCompositionEnabled InputContext.setCompositionEnabled},
* <li>when switching to this input method from a different one using the
* user interface or
* {@link java.awt.im.InputContext#selectInputMethod InputContext.selectInputMethod},
* if the previously selected input method's
* {@link java.awt.im.spi.InputMethod#isCompositionEnabled isCompositionEnabled}
* method returns without throwing an exception.
* </ul>
*
* @param enable whether to enable the input method for composition
* @throws UnsupportedOperationException if this input method does not
* support the enabling/disabling operation
* @see #isCompositionEnabled
*/
public void setCompositionEnabled(boolean enable) {
throw new UnsupportedOperationException();
}
/**
* Determines whether this input method is enabled.
* An input method that is enabled for composition interprets incoming
* events for both composition and control purposes, while a
* disabled input method does not interpret events for composition.
* <p>
* This method is called
* <ul>
* <li>by {@link java.awt.im.InputContext#isCompositionEnabled InputContext.isCompositionEnabled} and
* <li>when switching from this input method to a different one using the
* user interface or
* {@link java.awt.im.InputContext#selectInputMethod InputContext.selectInputMethod}.
* </ul>
*
* @return <code>true</code> if this input method is enabled for
* composition; <code>false</code> otherwise.
* @throws UnsupportedOperationException if this input method does not
* support checking whether it is enabled for composition
* @see #setCompositionEnabled
*/
public boolean isCompositionEnabled() {
return true;
}
/**
* Starts the reconversion operation. The input method obtains the
* text to be reconverted from the current client component using the
* {@link java.awt.im.InputMethodRequests#getSelectedText InputMethodRequests.getSelectedText}
* method. It can use other <code>InputMethodRequests</code>
* methods to request additional information required for the
* reconversion operation. The composed and committed text
* produced by the operation is sent to the client component as a
* sequence of <code>InputMethodEvent</code>s. If the given text
* cannot be reconverted, the same text should be sent to the
* client component as committed text.
* <p>
* This method is called by
* {@link java.awt.im.InputContext#reconvert() InputContext.reconvert}.
*
* @throws UnsupportedOperationException if the input method does not
* support the reconversion operation.
*/
public void reconvert() {
throw new UnsupportedOperationException("This input method does not reconvert.");
}
/**
* Dispatches the event to the input method. If input method support is
* enabled for the focussed component, incoming events of certain types
* are dispatched to the current input method for this component before
* they are dispatched to the component's methods or event listeners.
* The input method decides whether it needs to handle the event. If it
* does, it also calls the event's <code>consume</code> method; this
* causes the event to not get dispatched to the component's event
* processing methods or event listeners.
* <p>
* Events are dispatched if they are instances of InputEvent or its
* subclasses.
* This includes instances of the AWT classes KeyEvent and MouseEvent.
* <p>
* This method is called by {@link java.awt.im.InputContext#dispatchEvent InputContext.dispatchEvent}.
*
* @param event the event being dispatched to the input method
* @exception NullPointerException if <code>event</code> is null
*/
public void dispatchEvent(AWTEvent event) {
if (event instanceof KeyEvent) {
KeyEvent keyEvent = (KeyEvent) event;
if (event.getID() == KeyEvent.KEY_TYPED) {
//System.out.println("handled event " + event);
impl.handleKeyTyped(keyEvent);
}
}
else {
//System.out.println("did not handle event " + event);
}
}
/**
* Notifies this input method of changes in the client window
* location or state. This method is called while this input
* method is the current input method of its input context and
* notifications for it are enabled (see {@link
* InputMethodContext#enableClientWindowNotification
* InputMethodContext.enableClientWindowNotification}). Calls
* to this method are temporarily suspended if the input context's
* {@link java.awt.im.InputContext#removeNotify removeNotify}
* method is called, and resume when the input method is activated
* for a new client component. It is called in the following
* situations:
* <ul>
* <li>
* when the window containing the current client component changes
* in location, size, visibility, iconification state, or when the
* window is closed.</li>
* <li>
* from <code> enableClientWindowNotification(inputMethod,
* true)</code> if the current client component exists,</li>
* <li>
* when activating the input method for the first time after it
* called
* <code>enableClientWindowNotification(inputMethod,
* true)</code> if during the call no current client component was
* available,</li>
* <li>
* when activating the input method for a new client component
* after the input context's removeNotify method has been
* called.</li>
* </ul>
* @param bounds client window's {@link
* java.awt.Component#getBounds bounds} on the screen; or null if
* the client window is iconified or invisible
*/
public void notifyClientWindowChange(Rectangle bounds) {
}
/**
* Activates the input method for immediate input processing.
* <p>
* If an input method provides its own windows, it should make sure
* at this point that all necessary windows are open and visible.
* <p>
* This method is called
* <ul>
* <li>by {@link java.awt.im.InputContext#dispatchEvent InputContext.dispatchEvent}
* when a client component receives a FOCUS_GAINED event,
* <li>when switching to this input method from a different one using the
* user interface or
* {@link java.awt.im.InputContext#selectInputMethod InputContext.selectInputMethod}.
* </ul>
* The method is only called when the input method is inactive.
* A newly instantiated input method is assumed to be inactive.
*/
public void activate() {
//System.out.println("activated");
}
/**
* Deactivates the input method.
* The isTemporary argument has the same meaning as in
* {@link java.awt.event.FocusEvent#isTemporary FocusEvent.isTemporary}.
* <p>
* If an input method provides its own windows, only windows that relate
* to the current composition (such as a lookup choice window) should be
* closed at this point.
* It is possible that the input method will be immediately activated again
* for a different client component, and closing and reopening more
* persistent windows (such as a control panel) would create unnecessary
* screen flicker.
* Before an instance of a different input method class is activated,
* {@link #hideWindows} is called on the current input method.
* <p>
* This method is called
* <ul>
* <li>by {@link java.awt.im.InputContext#dispatchEvent InputContext.dispatchEvent}
* when a client component receives a FOCUS_LOST event,
* <li>when switching from this input method to a different one using the
* user interface or
* {@link java.awt.im.InputContext#selectInputMethod InputContext.selectInputMethod},
* <li>before {@link #removeNotify removeNotify} if the current client component is
* removed.
* </ul>
* The method is only called when the input method is active.
*
* @param isTemporary whether the focus change is temporary
*/
public void deactivate(boolean isTemporary) {
//System.out.println("deactivated");
}
/**
* Closes or hides all windows opened by this input method instance or
* its class.
* <p>
* This method is called
* <ul>
* <li>before calling {@link #activate activate} on an instance of a different input
* method class,
* <li>before calling {@link #dispose dispose} on this input method.
* </ul>
* The method is only called when the input method is inactive.
*/
public void hideWindows() {
}
/**
* Notifies the input method that a client component has been
* removed from its containment hierarchy, or that input method
* support has been disabled for the component.
* <p>
* This method is called by {@link java.awt.im.InputContext#removeNotify InputContext.removeNotify}.
* <p>
* The method is only called when the input method is inactive.
*/
public void removeNotify() {
}
/**
* Ends any input composition that may currently be going on in this
* context. Depending on the platform and possibly user preferences,
* this may commit or delete uncommitted text. Any changes to the text
* are communicated to the active component using an input method event.
*
* <p>
* A text editing component may call this in a variety of situations,
* for example, when the user moves the insertion point within the text
* (but outside the composed text), or when the component's text is
* saved to a file or copied to the clipboard.
* <p>
* This method is called
* <ul>
* <li>by {@link java.awt.im.InputContext#endComposition InputContext.endComposition},
* <li>by {@link java.awt.im.InputContext#dispatchEvent InputContext.dispatchEvent}
* when switching to a different client component
* <li>when switching from this input method to a different one using the
* user interface or
* {@link java.awt.im.InputContext#selectInputMethod InputContext.selectInputMethod}.
* </ul>
*/
public void endComposition() {
impl.endComposition();
}
/**
* Disposes of the input method and releases the resources used by it.
* In particular, the input method should dispose windows and close files that are no
* longer needed.
* <p>
* This method is called by {@link java.awt.im.InputContext#dispose InputContext.dispose}.
* <p>
* The method is only called when the input method is inactive.
* No method of this interface is called on this instance after dispose.
*/
public void dispose() {
}
/**
* Returns a control object from this input method, or null. A
* control object provides methods that control the behavior of the
* input method or obtain information from the input method. The type
* of the object is an input method specific class. Clients have to
* compare the result against known input method control object
* classes and cast to the appropriate class to invoke the methods
* provided.
* <p>
* This method is called by
* {@link java.awt.im.InputContext#getInputMethodControlObject InputContext.getInputMethodControlObject}.
*
* @return a control object from this input method, or null
*/
public Object getControlObject() {
return null;
}
}
/*
* Copyright (c) 2002, 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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.
*/
/*
*
* (C) Copyright IBM Corp. 2000 - All Rights Reserved
*
* The original version of this source code and documentation is
* copyrighted and owned by IBM. These materials are provided
* under terms of a License Agreement between IBM and Sun.
* This technology is protected by multiple US and International
* patents. This notice and attribution to IBM may not be removed.
*
*/
package com.sun.inputmethods.internal.thaiim;
import java.awt.Image;
import java.awt.im.spi.InputMethod;
import java.awt.im.spi.InputMethodDescriptor;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
public class ThaiInputMethodDescriptor implements InputMethodDescriptor {
static final Locale THAI = new Locale("th");
public ThaiInputMethodDescriptor() {
}
/**
* @see java.awt.im.spi.InputMethodDescriptor#getAvailableLocales
*/
public Locale[] getAvailableLocales() {
return new Locale[] { THAI };
}
/**
* @see java.awt.im.spi.InputMethodDescriptor#hasDynamicLocaleList
*/
public boolean hasDynamicLocaleList() {
return false;
}
/**
* @see java.awt.im.spi.InputMethodDescriptor#getInputMethodDisplayName
*/
public synchronized String getInputMethodDisplayName(Locale inputLocale, Locale displayLanguage) {
try {
ResourceBundle resources = ResourceBundle.getBundle(
"com.sun.inputmethods.internal.thaiim.resources.DisplayNames", displayLanguage);
return resources.getString("DisplayName.Thai");
} catch (MissingResourceException mre) {
return "Thai Input Method";
}
}
/**
* @see java.awt.im.spi.InputMethodDescriptor#getInputMethodIcon
*/
public Image getInputMethodIcon(Locale inputLocale) {
return null;
}
/**
* @see java.awt.im.spi.InputMethodDescriptor#createInputMethod
*/
public InputMethod createInputMethod() throws Exception {
ThaiInputMethodImpl impl = new ThaiInputMethodImpl();
return new ThaiInputMethod(THAI, impl);
}
public String toString() {
return getClass().getName();
}
}
/*
* Copyright (c) 2002, 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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.
*/
/*
*
* (C) Copyright IBM Corp. 2000 - All Rights Reserved
*
* The original version of this source code and documentation is
* copyrighted and owned by IBM. These materials are provided
* under terms of a License Agreement between IBM and Sun.
* This technology is protected by multiple US and International
* patents. This notice and attribution to IBM may not be removed.
*
*/
package com.sun.inputmethods.internal.thaiim;
import java.awt.im.InputMethodRequests;
import java.awt.im.spi.InputMethodContext;
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.awt.event.InputMethodEvent;
import java.awt.font.TextAttribute;
import java.awt.font.TextHitInfo;
import java.text.AttributedCharacterIterator;
import java.text.AttributedString;
class ThaiInputMethodImpl {
private static final char[] keyboardMap = {
/* 00 */ '\u0000',
/* 01 */ '\u0001',
/* 02 */ '\u0002',
/* 03 */ '\u0003',
/* 04 */ '\u0004',
/* 05 */ '\u0005',
/* 06 */ '\u0006',
/* 07 */ '\u0007',
/* 08 */ '\u0008',
/* 09 */ '\u0009',
/* 0A */ '\012',
/* 0B */ '\u000B',
/* 0C */ '\u000C',
/* 0D */ '\015',
/* 0E */ '\u000E',
/* 0F */ '\u000F',
/* 10 */ '\u0010',
/* 11 */ '\u0011',
/* 12 */ '\u0012',
/* 13 */ '\u0013',
/* 14 */ '\u0014',
/* 15 */ '\u0015',
/* 16 */ '\u0016',
/* 17 */ '\u0017',
/* 18 */ '\u0018',
/* 19 */ '\u0019',
/* 1A */ '\u001A',
/* 1B */ '\u001B',
/* 1C */ '\u001C',
/* 1D */ '\u001D',
/* 1E */ '\u001E',
/* 1F */ '\u001F',
/* 20 */ '\u0020',
/* 21 */ '\u0e45', // '!'
/* 22 */ '\u002e', // '"'
/* 23 */ '\u0e52', // '#'
/* 24 */ '\u0e53', // '$'
/* 25 */ '\u0e54', // '%'
/* 26 */ '\u0e4e', // '&'
/* 27 */ '\u0e07', // '''
/* 28 */ '\u0e56', // '('
/* 29 */ '\u0e57', // ')'
/* 2A */ '\u0e55', // '*'
/* 2B */ '\u0e59', // '+'
/* 2C */ '\u0e21', // ','
/* 2D */ '\u0e02', // '-'
/* 2E */ '\u0e43', // '.'
/* 2F */ '\u0e1d', // '/'
/* 30 */ '\u0e08', // '0'
/* 31 */ '\u0e3f', // '1'
/* 32 */ '\u002f', // '2'
/* 33 */ '\u002d', // '3'
/* 34 */ '\u0e20', // '4'
/* 35 */ '\u0e16', // '5'
/* 36 */ '\u0e38', // '6'
/* 37 */ '\u0e36', // '7'
/* 38 */ '\u0e04', // '8'
/* 39 */ '\u0e15', // '9'
/* 3A */ '\u0e0b', // ':'
/* 3B */ '\u0e27', // ';'
/* 3C */ '\u0e12', // '<'
/* 3D */ '\u0e0a', // '='
/* 3E */ '\u0e2c', // '>'
/* 3F */ '\u0e26', // '?'
/* 40 */ '\u0e51', // '@'
/* 41 */ '\u0e24', // 'A'
/* 42 */ '\u0e3a', // 'B'
/* 43 */ '\u0e09', // 'C'
/* 44 */ '\u0e0f', // 'D'
/* 45 */ '\u0e0e', // 'E'
/* 46 */ '\u0e42', // 'F'
/* 47 */ '\u0e0c', // 'G'
/* 48 */ '\u0e47', // 'H'
/* 49 */ '\u0e13', // 'I'
/* 4A */ '\u0e4b', // 'J'
/* 4B */ '\u0e29', // 'K'
/* 4C */ '\u0e28', // 'L'
/* 4D */ '\u003f', // 'M'
/* 4E */ '\u0e4c', // 'N'
/* 4F */ '\u0e2f', // 'O'
/* 50 */ '\u0e0d', // 'P'
/* 51 */ '\u0e50', // 'Q'
/* 52 */ '\u0e11', // 'R'
/* 53 */ '\u0e06', // 'S'
/* 54 */ '\u0e18', // 'T'
/* 55 */ '\u0e4a', // 'U'
/* 56 */ '\u0e2e', // 'V'
/* 57 */ '\u0022', // 'W'
/* 58 */ '\u0029', // 'X'
/* 59 */ '\u0e4d', // 'Y'
/* 5A */ '\u0028', // 'Z'
/* 5B */ '\u0e1a', // '['
/* 5C */ '\u0e05', // '\'
/* 5D */ '\u0e25', // ']'
/* 5E */ '\u0e39', // '^'
/* 5F */ '\u0e58', // '_'
/* 60 */ '\u0e4f', // '`'
/* 61 */ '\u0e1f', // 'a'
/* 62 */ '\u0e34', // 'b'
/* 63 */ '\u0e41', // 'c'
/* 64 */ '\u0e01', // 'd'
/* 65 */ '\u0e33', // 'e'
/* 66 */ '\u0e14', // 'f'
/* 67 */ '\u0e40', // 'g'
/* 68 */ '\u0e49', // 'h'
/* 69 */ '\u0e23', // 'i'
/* 6A */ '\u0e48', // 'j'
/* 6B */ '\u0e32', // 'k'
/* 6C */ '\u0e2a', // 'l'
/* 6D */ '\u0e17', // 'm'
/* 6E */ '\u0e37', // 'n'
/* 6F */ '\u0e19', // 'o'
/* 70 */ '\u0e22', // 'p'
/* 71 */ '\u0e46', // 'q'
/* 72 */ '\u0e1e', // 'r'
/* 73 */ '\u0e2b', // 's'
/* 74 */ '\u0e30', // 't'
/* 75 */ '\u0e35', // 'u'
/* 76 */ '\u0e2d', // 'v'
/* 77 */ '\u0e44', // 'w'
/* 78 */ '\u0e1b', // 'x'
/* 79 */ '\u0e31', // 'y'
/* 7A */ '\u0e1c', // 'z'
/* 7B */ '\u0e10', // '{'
/* 7C */ '\u0e03', // '|'
/* 7D */ '\u002c', // '}'
/* 7E */ '\u0e5b', // '~'
/* 7F */ '\u007F' //
};
// cached TextHitInfo. Only one type of TextHitInfo is required.
private static final TextHitInfo ZERO_TRAILING_HIT_INFO = TextHitInfo.trailing(0);
private ThaiRules rules;
/**
* Returns the equivalent character for thai locale.
* @param originalChar The original character.
*/
private char getMappedChar( char originalChar )
{
if (originalChar <= keyboardMap.length) {
return keyboardMap[originalChar];
}
return originalChar;
}//getMappedChar()
private InputMethodContext context;
void setInputMethodContext(InputMethodContext context) {
this.context = context;
rules = new ThaiRules((InputMethodRequests)context);
}
void handleKeyTyped(KeyEvent kevent) {
char keyChar = kevent.getKeyChar();
char currentChar = getMappedChar(keyChar);
if (!Character.UnicodeBlock.THAI.equals(Character.UnicodeBlock.of(currentChar))) {
// don't care
return;
} else if (rules.isInputValid(currentChar)) {
Character tmp = new Character(currentChar);
String tmp2 = tmp.toString();
context.dispatchInputMethodEvent(InputMethodEvent.INPUT_METHOD_TEXT_CHANGED,
(new AttributedString(tmp2)).getIterator(),
1,
ZERO_TRAILING_HIT_INFO,
ZERO_TRAILING_HIT_INFO);
} else {
// input sequence is not allowed
Toolkit.getDefaultToolkit().beep();
}
kevent.consume();// prevent client from getting this event.
return;
}//dispatchEvent()
void endComposition() {
}//endComposition()
}
/*
* Copyright (c) 2002, 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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.
*/
package com.sun.inputmethods.internal.thaiim;
import java.awt.im.InputMethodRequests;
public class ThaiRules {
public static final char BASE = 0x0e00;
public static final byte NON = 0;
public static final byte CONS = 1;
public static final byte LV = 2;
public static final byte FV1 = 3;
public static final byte FV2 = 4;
public static final byte FV3 = 5;
public static final byte FV4 = 6;
/* Note that FV4 is added. It is not in WTT.
* We need it for SARA AM since it has a
* weired characteristic to share the same
* cell with whatever consonant preceeds it.
*/
public static final byte BV1 = 7;
public static final byte BV2 = 8;
public static final byte BD = 9;
public static final byte TONE = 10;
public static final byte AD1 = 11;
public static final byte AD2 = 12;
public static final byte AD3 = 13;
public static final byte AV1 = 14;
public static final byte AV2 = 15;
public static final byte AV3 = 16;
/**
* Constants for validity checking and auto correction
*/
public static final byte STRICT = 0;
public static final byte LOOSE = 1;
public static final byte NOREPLACE = 2;
public static final byte[] CHARTYPE = {
/* 0e00 UNUSED */ NON,
/* THAI CHARACTER KO KAI */ CONS,
/* THAI CHARACTER KHO KHAI */ CONS,
/* THAI CHARACTER KHO KHUAT */ CONS,
/* THAI CHARACTER KHO KHWAI */ CONS,
/* THAI CHARACTER KHO KHON */ CONS,
/* THAI CHARACTER KHO RAKHANG */ CONS,
/* THAI CHARACTER NGO NGU */ CONS,
/* THAI CHARACTER CHO CHAN */ CONS,
/* THAI CHARACTER CHO CHING */ CONS,
/* THAI CHARACTER CHO CHANG */ CONS,
/* THAI CHARACTER SO SO */ CONS,
/* THAI CHARACTER CHO CHOE */ CONS,
/* THAI CHARACTER YO YING */ CONS,
/* THAI CHARACTER DO CHADA */ CONS,
/* THAI CHARACTER TO PATAK */ CONS,
/* THAI CHARACTER THO THAN */ CONS,
/* THAI CHARACTER THO NANGMONTHO */ CONS,
/* THAI CHARACTER THO PHUTHAO */ CONS,
/* THAI CHARACTER NO NEN */ CONS,
/* THAI CHARACTER DO DEK */ CONS,
/* THAI CHARACTER TO TAO */ CONS,
/* THAI CHARACTER THO THUNG */ CONS,
/* THAI CHARACTER THO THAHAN */ CONS,
/* THAI CHARACTER THO THONG */ CONS,
/* THAI CHARACTER NO NU */ CONS,
/* THAI CHARACTER BO BAIMAI */ CONS,
/* THAI CHARACTER PO PLA */ CONS,
/* THAI CHARACTER PHO PHUNG */ CONS,
/* THAI CHARACTER FO FA */ CONS,
/* THAI CHARACTER PHO PHAN */ CONS,
/* THAI CHARACTER FO FAN */ CONS,
/* THAI CHARACTER PHO SAMPHAO */ CONS,
/* THAI CHARACTER MO MA */ CONS,
/* THAI CHARACTER YO YAK */ CONS,
/* THAI CHARACTER RO RUA */ CONS,
/* THAI CHARACTER RU */ FV3,
/* THAI CHARACTER LO LING */ CONS,
/* THAI CHARACTER LU */ FV3,
/* THAI CHARACTER WO WAEN */ CONS,
/* THAI CHARACTER SO SALA */ CONS,
/* THAI CHARACTER SO RUSI */ CONS,
/* THAI CHARACTER SO SUA */ CONS,
/* THAI CHARACTER HO HIP */ CONS,
/* THAI CHARACTER LO CHULA */ CONS,
/* THAI CHARACTER O ANG */ CONS,
/* THAI CHARACTER HO NOKHUK */ CONS,
/* THAI CHARACTER PAIYANNOI */ NON,
/* THAI CHARACTER SARA A */ FV1,
/* THAI CHARACTER MAI HAN-AKAT */ AV2,
/* THAI CHARACTER SARA AA */ FV1,
/* THAI CHARACTER SARA AM */ FV4,
/* THAI CHARACTER SARA I */ AV1,
/* THAI CHARACTER SARA II */ AV3,
/* THAI CHARACTER SARA UE */ AV2,
/* THAI CHARACTER SARA UEE */ AV3,
/* THAI CHARACTER SARA U */ BV1,
/* THAI CHARACTER SARA UU */ BV2,
/* THAI CHARACTER PHINTHU */ BD,
/* 0e3b UNUSED */ NON,
/* 0e3c UNUSED */ NON,
/* 0e3d UNUSED */ NON,
/* 0e3e UNUSED */ NON,
/* THAI CURRENCY SYMBOL BAHT */ NON,
/* THAI CHARACTER SARA E */ LV,
/* THAI CHARACTER SARA AE */ LV,
/* THAI CHARACTER SARA O */ LV,
/* THAI CHARACTER SARA AI MAIMUAN */ LV,
/* THAI CHARACTER SARA AI MAIMALAI */ LV,
/* THAI CHARACTER LAKKHANGYAO */ FV2,
/* THAI CHARACTER MAIYAMOK */ NON,
/* THAI CHARACTER MAITAIKHU */ AD2,
/* THAI CHARACTER MAI EK */ TONE,
/* THAI CHARACTER MAI THO */ TONE,
/* THAI CHARACTER MAI TRI */ TONE,
/* THAI CHARACTER MAI CHATTAWA */ TONE,
/* THAI CHARACTER THANTHAKHAT */ AD1,
/* THAI CHARACTER NIKHAHIT */ AD3,
/* THAI CHARACTER YAMAKKAN */ AD3,
/* THAI CHARACTER FONGMAN */ NON,
/* THAI DIGIT ZERO */ NON,
/* THAI DIGIT ONE */ NON,
/* THAI DIGIT TWO */ NON,
/* THAI DIGIT THREE */ NON,
/* THAI DIGIT FOUR */ NON,
/* THAI DIGIT FIVE */ NON,
/* THAI DIGIT SIX */ NON,
/* THAI DIGIT SEVEN */ NON,
/* THAI DIGIT EIGHT */ NON,
/* THAI DIGIT NINE */ NON,
/* THAI CHARACTER ANGKHANKHU */ NON,
/* THAI CHARACTER KHOMUT */ NON
};
private InputMethodRequests requests;
ThaiRules(InputMethodRequests requests) {
this.requests = requests;
}
public static byte getCharType(char c) {
byte cType;
int ci = ((int) c) - (int) BASE;
if (ci < 0 || ci >= CHARTYPE.length)
cType = NON;
else
cType = CHARTYPE[ci];
return cType;
}
private static boolean isValid(char c1, char c2, int[] validityArray) {
return ((validityArray[getCharType(c1)]
& (1 << getCharType(c2))) != 0);
}
/**
* VALIDITY is a bit matrix defining whether one
* character is allowed to be typed in after the
* previous one (array index). Determining the
* validity is done by bit-anding the 2nd char
* type's mask (obtained by 1 << chartype) with
* the array element indexed by the first char
* type. If the result is non-zero, the 2nd
* character is allowed to follow the first.
*/
/* Please note that the bits in the comment below
* are displayed least significant bit first.
* The actual value reflexs this representation
* when the bits are swapped.
*/
private static final int[] INPUTVALIDITY = {
/* NON 1110 010 0 0000 0000 0 */ 0x00027,
/* CONS 1111 111 1 1111 1111 1 */ 0x1ffff,
/* LV 0100 000 0 0000 0000 0 */ 0x00002,
/* FV1 1110 010 0 0000 0000 0 */ 0x00027,
/* FV2 1110 010 0 0000 0000 0 */ 0x00027,
/* FV3 1110 110 0 0000 0000 0 */ 0x00037,
/* FV4 1110 010 0 0000 0000 0 */ 0x00027,
/* BV1 1110 010 0 0011 0000 0 */ 0x00c27,
/* BV2 1110 010 0 0010 0000 0 */ 0x00427,
/* BD 1110 010 0 0000 0000 0 */ 0x00027,
/* TONE 1111 011 0 0000 0000 0 */ 0x0006f,
/* AD1 1110 010 0 0000 0000 0 */ 0x00027,
/* AD2 1110 010 0 0000 0000 0 */ 0x00027,
/* AD3 1110 010 0 0000 0000 0 */ 0x00027,
/* AV1 1110 010 0 0011 0000 0 */ 0x00c27,
/* AV2 1110 010 0 0010 0000 0 */ 0x00427,
/* AV3 1110 010 0 0010 0100 0 */ 0x02427
};
private static final int[] COMPOSABLE = {
/* NON 0000 000 0 0000 0000 0 */ 0x00000,
/* CONS 0000 001 1 1111 1111 1 */ 0x1ffc0,
/* LV 0000 000 0 0000 0000 0 */ 0x00000,
/* FV1 0000 000 0 0000 0000 0 */ 0x00000,
/* FV2 0000 000 0 0000 0000 0 */ 0x00000,
/* FV3 0000 000 0 0000 0000 0 */ 0x00000,
/* FV4 0000 000 0 0000 0000 0 */ 0x00000,
/* BV1 0000 000 0 0011 0000 0 */ 0x00c00,
/* BV2 0000 000 0 0010 0000 0 */ 0x00400,
/* BD 0000 000 0 0000 0000 0 */ 0x00000,
/* TONE 0000 001 0 0000 0000 0 */ 0x00040,
/* AD1 0000 000 0 0000 0000 0 */ 0x00000,
/* AD2 0000 000 0 0000 0000 0 */ 0x00000,
/* AD3 0000 000 0 0000 0000 0 */ 0x00000,
/* AV1 0000 000 0 0011 0000 0 */ 0x00c00,
/* AV2 0000 000 0 0010 0000 0 */ 0x00400,
/* AV3 0000 000 0 0010 0100 0 */ 0x02400
};
private static final int[] REPLACABLE = {
/* NON 0000 000 0 0000 0000 0 */ 0x00000,
/* CONS 0000 000 0 0000 0000 0 */ 0x00000,
/* LV 0000 000 0 0000 0000 0 */ 0x00000,
/* FV1 0000 000 0 0000 0000 0 */ 0x00000,
/* FV2 0000 000 0 0000 0000 0 */ 0x00000,
/* FV3 0000 000 0 0000 0000 0 */ 0x00000,
/* FV4 0000 001 1 1001 1111 1 */ 0x1f9c0,
/* BV1 0000 001 1 1100 1111 1 */ 0x1f3c0,
/* BV2 0000 001 1 1101 1111 1 */ 0x1fbc0,
/* BD 0000 001 1 1111 1111 1 */ 0x1ffc0,
/* TONE 0000 000 0 0111 1100 0 */ 0x03e00,
/* AD1 0000 001 0 1111 1101 1 */ 0x1bf40,
/* AD2 0000 001 1 1111 1111 1 */ 0x1ffc0,
/* AD3 0000 001 1 1111 1111 0 */ 0x0ffc0,
/* AV1 0000 001 1 1100 1111 1 */ 0x1f3c0,
/* AV2 0000 001 1 1101 1111 1 */ 0x1fbc0,
/* AV3 0000 001 1 1101 1011 1 */ 0x1dbc0
};
private static final int[] SWAPPABLE = {
/* NON 0000 000 0 0000 0000 0 */ 0x00000,
/* CONS 0000 000 0 0000 0000 0 */ 0x00000,
/* LV 0000 000 0 0000 0000 0 */ 0x00000,
/* FV1 0000 000 0 0000 0000 0 */ 0x00000,
/* FV2 0000 000 0 0000 0000 0 */ 0x00000,
/* FV3 0000 000 0 0000 0000 0 */ 0x00000,
/* FV4 0000 000 0 0010 0000 0 */ 0x00400,
/* BV1 0000 000 0 0000 0000 0 */ 0x00000,
/* BV2 0000 000 0 0000 0000 0 */ 0x00000,
/* BD 0000 000 0 0000 0000 0 */ 0x00000,
/* TONE 0000 000 1 1000 0011 1 */ 0x1c180,
/* AD1 0000 000 1 0000 0010 0 */ 0x04080,
/* AD2 0000 000 0 0000 0000 0 */ 0x00000,
/* AD3 0000 000 0 0000 0000 1 */ 0x10000,
/* AV1 0000 000 0 0000 0000 0 */ 0x00000,
/* AV2 0000 000 0 0000 0000 0 */ 0x00000,
/* AV3 0000 000 0 0000 0000 0 */ 0x00000
};
public static boolean isInputValid(char c1, char c2) {
return isValid(c1, c2, INPUTVALIDITY);
}
public static boolean isComposable(char c1, char c2) {
return isValid(c1, c2, COMPOSABLE);
}
public static boolean isSwappable(char c1, char c2) {
return isValid(c1, c2, SWAPPABLE);
}
public static boolean isReplacable(char c1, char c2) {
return isValid(c1, c2, REPLACABLE);
}
public static boolean isForward(char c) {
return (getCharType(c) < FV4);
}
public static boolean isDead(char c) {
return (getCharType(c) > FV3);
}
public boolean isInputValid(char current) {
int offset = requests.getInsertPositionOffset();
if (offset == 0) {
byte charType = getCharType(current);
return ((charType < FV1) || (charType == FV3));
}
else {
char prev = requests.getCommittedText(offset-1, offset, null).first();
if(isForward(current)) {
if (isInputValid(prev, current)) {
if (getCharType(prev) == TONE &&
getCharType(current) == FV1) {
if (offset == 1) {
return true;
} else {
char pprev =
requests.getCommittedText(offset-2, offset-1, null).first();
return isInputValid(pprev, current);
}
} else {
return true;
}
} else if (prev == '\u0e32' && // SARA AA
current == '\u0e30') { // SARA A
return true;
} else if (prev == '\u0e4d' && // NIKAHIT
current == '\u0e32') { // SARA AA
// Special compose to SARA AM
return true;
} else {
return false;
}
} else {
if(isInputValid(prev, current)) {
if (getCharType(prev) == TONE &&
getCharType(current) == FV4) {
return (offset != 1);
} else {
return true;
}
} else {
return false;
}
}
}
}
}
#
# Default Input method display names for Thai input methods
#
DisplayName.Thai = Thai Input Method
...@@ -20,9 +20,9 @@ You should have received a copy of the GNU General Public License version ...@@ -20,9 +20,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
<head> <head>
<title>Jarsigner Signing Mechanism Package</title> <title>Jarsigner Signing Mechanism Package</title>
......
...@@ -35,6 +35,7 @@ import javax.swing.table.*; ...@@ -35,6 +35,7 @@ import javax.swing.table.*;
import static com.sun.java.swing.plaf.windows.TMSchema.*; import static com.sun.java.swing.plaf.windows.TMSchema.*;
import static com.sun.java.swing.plaf.windows.XPStyle.*; import static com.sun.java.swing.plaf.windows.XPStyle.*;
import sun.swing.table.*; import sun.swing.table.*;
import sun.swing.SwingUtilities2;
public class WindowsTableHeaderUI extends BasicTableHeaderUI { public class WindowsTableHeaderUI extends BasicTableHeaderUI {
...@@ -163,18 +164,13 @@ public class WindowsTableHeaderUI extends BasicTableHeaderUI { ...@@ -163,18 +164,13 @@ public class WindowsTableHeaderUI extends BasicTableHeaderUI {
return this; return this;
} }
private int viewIndexForColumn(TableColumn aColumn) {
if (aColumn != null) {
return header.getTable().convertColumnIndexToView(
aColumn.getModelIndex());
}
return -1;
}
public void paint(Graphics g) { public void paint(Graphics g) {
Dimension size = getSize(); Dimension size = getSize();
State state = State.NORMAL; State state = State.NORMAL;
if (column == viewIndexForColumn(header.getDraggedColumn())) { TableColumn draggedColumn = header.getDraggedColumn();
if (draggedColumn != null &&
column == SwingUtilities2.convertColumnIndexToView(
header.getColumnModel(), draggedColumn.getModelIndex())) {
state = State.PRESSED; state = State.PRESSED;
} else if (isSelected || hasFocus || hasRollover) { } else if (isSelected || hasFocus || hasRollover) {
state = State.HOT; state = State.HOT;
......
...@@ -22,9 +22,9 @@ You should have received a copy of the GNU General Public License version ...@@ -22,9 +22,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</head> </head>
<body bgcolor="white"> <body bgcolor="white">
......
...@@ -22,9 +22,9 @@ You should have received a copy of the GNU General Public License version ...@@ -22,9 +22,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</head> </head>
<body bgcolor="white"> <body bgcolor="white">
......
...@@ -22,9 +22,9 @@ You should have received a copy of the GNU General Public License version ...@@ -22,9 +22,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</head> </head>
<body bgcolor="white"> <body bgcolor="white">
......
...@@ -22,9 +22,9 @@ You should have received a copy of the GNU General Public License version ...@@ -22,9 +22,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</head> </head>
<body bgcolor="white"> <body bgcolor="white">
......
...@@ -22,9 +22,9 @@ You should have received a copy of the GNU General Public License version ...@@ -22,9 +22,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</head> </head>
<body bgcolor="white"> <body bgcolor="white">
......
...@@ -22,9 +22,9 @@ You should have received a copy of the GNU General Public License version ...@@ -22,9 +22,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</head> </head>
<body bgcolor="white"> <body bgcolor="white">
......
...@@ -22,9 +22,9 @@ You should have received a copy of the GNU General Public License version ...@@ -22,9 +22,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</head> </head>
<body bgcolor="white"> <body bgcolor="white">
......
...@@ -22,9 +22,9 @@ You should have received a copy of the GNU General Public License version ...@@ -22,9 +22,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</head> </head>
<body bgcolor="white"> <body bgcolor="white">
......
...@@ -22,9 +22,9 @@ You should have received a copy of the GNU General Public License version ...@@ -22,9 +22,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</head> </head>
<body bgcolor="white"> <body bgcolor="white">
......
...@@ -22,9 +22,9 @@ You should have received a copy of the GNU General Public License version ...@@ -22,9 +22,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</head> </head>
<body bgcolor="white"> <body bgcolor="white">
......
...@@ -21,9 +21,9 @@ You should have received a copy of the GNU General Public License version ...@@ -21,9 +21,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</HEAD> </HEAD>
<BODY> <BODY>
......
...@@ -21,9 +21,9 @@ You should have received a copy of the GNU General Public License version ...@@ -21,9 +21,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</HEAD> </HEAD>
<BODY> <BODY>
......
...@@ -21,9 +21,9 @@ You should have received a copy of the GNU General Public License version ...@@ -21,9 +21,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</HEAD> </HEAD>
<BODY> <BODY>
......
...@@ -21,9 +21,9 @@ You should have received a copy of the GNU General Public License version ...@@ -21,9 +21,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</HEAD> </HEAD>
<BODY> <BODY>
......
...@@ -21,9 +21,9 @@ You should have received a copy of the GNU General Public License version ...@@ -21,9 +21,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</HEAD> </HEAD>
<BODY> <BODY>
......
...@@ -21,9 +21,9 @@ You should have received a copy of the GNU General Public License version ...@@ -21,9 +21,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</HEAD> </HEAD>
<BODY> <BODY>
......
...@@ -21,9 +21,9 @@ You should have received a copy of the GNU General Public License version ...@@ -21,9 +21,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</HEAD> </HEAD>
<BODY> <BODY>
......
...@@ -21,9 +21,9 @@ You should have received a copy of the GNU General Public License version ...@@ -21,9 +21,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</HEAD> </HEAD>
<BODY> <BODY>
......
...@@ -24,9 +24,9 @@ You should have received a copy of the GNU General Public License version ...@@ -24,9 +24,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</head> </head>
......
...@@ -22,9 +22,9 @@ You should have received a copy of the GNU General Public License version ...@@ -22,9 +22,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</head> </head>
......
...@@ -23,9 +23,9 @@ You should have received a copy of the GNU General Public License version ...@@ -23,9 +23,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
......
...@@ -28,9 +28,9 @@ You should have received a copy of the GNU General Public License version ...@@ -28,9 +28,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
<title>javax.sql.rowset.providers Package</title> <title>javax.sql.rowset.providers Package</title>
</head> </head>
......
...@@ -21,9 +21,9 @@ You should have received a copy of the GNU General Public License version ...@@ -21,9 +21,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
......
...@@ -25,9 +25,9 @@ You should have received a copy of the GNU General Public License version ...@@ -25,9 +25,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
<style type="text/css"> <style type="text/css">
......
...@@ -25,9 +25,9 @@ You should have received a copy of the GNU General Public License version ...@@ -25,9 +25,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
<style type="text/css"> <style type="text/css">
......
...@@ -25,9 +25,9 @@ You should have received a copy of the GNU General Public License version ...@@ -25,9 +25,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
<style type="text/css"> <style type="text/css">
......
...@@ -18,9 +18,9 @@ You should have received a copy of the GNU General Public License version ...@@ -18,9 +18,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
<html> <html>
......
...@@ -343,6 +343,10 @@ public class Font implements java.io.Serializable ...@@ -343,6 +343,10 @@ public class Font implements java.io.Serializable
* Identify a font resource of type TRUETYPE. * Identify a font resource of type TRUETYPE.
* Used to specify a TrueType font resource to the * Used to specify a TrueType font resource to the
* {@link #createFont} method. * {@link #createFont} method.
* The TrueType format was extended to become the OpenType
* format, which adds support for fonts with Postscript outlines,
* this tag therefore references these fonts, as well as those
* with TrueType outlines.
* @since 1.3 * @since 1.3
*/ */
......
...@@ -222,6 +222,25 @@ public class DefaultPersistenceDelegate extends PersistenceDelegate { ...@@ -222,6 +222,25 @@ public class DefaultPersistenceDelegate extends PersistenceDelegate {
// Write out the properties of this instance. // Write out the properties of this instance.
private void initBean(Class type, Object oldInstance, Object newInstance, Encoder out) { private void initBean(Class type, Object oldInstance, Object newInstance, Encoder out) {
for (Field field : type.getFields()) {
int mod = field.getModifiers();
if (Modifier.isFinal(mod) || Modifier.isStatic(mod) || Modifier.isTransient(mod)) {
continue;
}
try {
Expression oldGetExp = new Expression(field, "get", new Object[] { oldInstance });
Expression newGetExp = new Expression(field, "get", new Object[] { newInstance });
Object oldValue = oldGetExp.getValue();
Object newValue = newGetExp.getValue();
out.writeExpression(oldGetExp);
if (!equals(newValue, out.get(oldValue))) {
out.writeStatement(new Statement(field, "set", new Object[] { oldInstance, oldValue }));
}
}
catch (Exception exception) {
out.getExceptionListener().exceptionThrown(exception);
}
}
BeanInfo info; BeanInfo info;
try { try {
info = Introspector.getBeanInfo(type); info = Introspector.getBeanInfo(type);
......
...@@ -700,56 +700,6 @@ class java_beans_beancontext_BeanContextSupport_PersistenceDelegate extends java ...@@ -700,56 +700,6 @@ class java_beans_beancontext_BeanContextSupport_PersistenceDelegate extends java
// AWT // AWT
/**
* The persistence delegate for {@link Dimension}.
* It is impossible to use {@link DefaultPersistenceDelegate}
* because all getters have return types that differ from parameter types
* of the constructor {@link Dimension#Dimension(int, int)}.
*
* @author Sergey A. Malenkov
*/
final class java_awt_Dimension_PersistenceDelegate extends PersistenceDelegate {
protected boolean mutatesTo(Object oldInstance, Object newInstance) {
return oldInstance.equals(newInstance);
}
protected Expression instantiate(Object oldInstance, Encoder out) {
Dimension dimension = (Dimension) oldInstance;
Object[] args = new Object[] {
dimension.width,
dimension.height,
};
return new Expression(dimension, dimension.getClass(), "new", args);
}
}
/**
* The persistence delegate for {@link GridBagConstraints}.
* It is impossible to use {@link DefaultPersistenceDelegate}
* because this class does not have any properties.
*
* @author Sergey A. Malenkov
*/
final class java_awt_GridBagConstraints_PersistenceDelegate extends PersistenceDelegate {
protected Expression instantiate(Object oldInstance, Encoder out) {
GridBagConstraints gbc = (GridBagConstraints) oldInstance;
Object[] args = new Object[] {
gbc.gridx,
gbc.gridy,
gbc.gridwidth,
gbc.gridheight,
gbc.weightx,
gbc.weighty,
gbc.anchor,
gbc.fill,
gbc.insets,
gbc.ipadx,
gbc.ipady,
};
return new Expression(gbc, gbc.getClass(), "new", args);
}
}
/** /**
* The persistence delegate for {@link Insets}. * The persistence delegate for {@link Insets}.
* It is impossible to use {@link DefaultPersistenceDelegate} * It is impossible to use {@link DefaultPersistenceDelegate}
...@@ -774,54 +724,6 @@ final class java_awt_Insets_PersistenceDelegate extends PersistenceDelegate { ...@@ -774,54 +724,6 @@ final class java_awt_Insets_PersistenceDelegate extends PersistenceDelegate {
} }
} }
/**
* The persistence delegate for {@link Point}.
* It is impossible to use {@link DefaultPersistenceDelegate}
* because all getters have return types that differ from parameter types
* of the constructor {@link Point#Point(int, int)}.
*
* @author Sergey A. Malenkov
*/
final class java_awt_Point_PersistenceDelegate extends PersistenceDelegate {
protected boolean mutatesTo(Object oldInstance, Object newInstance) {
return oldInstance.equals(newInstance);
}
protected Expression instantiate(Object oldInstance, Encoder out) {
Point point = (Point) oldInstance;
Object[] args = new Object[] {
point.x,
point.y,
};
return new Expression(point, point.getClass(), "new", args);
}
}
/**
* The persistence delegate for {@link Rectangle}.
* It is impossible to use {@link DefaultPersistenceDelegate}
* because all getters have return types that differ from parameter types
* of the constructor {@link Rectangle#Rectangle(int, int, int, int)}.
*
* @author Sergey A. Malenkov
*/
final class java_awt_Rectangle_PersistenceDelegate extends PersistenceDelegate {
protected boolean mutatesTo(Object oldInstance, Object newInstance) {
return oldInstance.equals(newInstance);
}
protected Expression instantiate(Object oldInstance, Encoder out) {
Rectangle rectangle = (Rectangle) oldInstance;
Object[] args = new Object[] {
rectangle.x,
rectangle.y,
rectangle.width,
rectangle.height,
};
return new Expression(rectangle, rectangle.getClass(), "new", args);
}
}
/** /**
* The persistence delegate for {@link Font}. * The persistence delegate for {@link Font}.
* It is impossible to use {@link DefaultPersistenceDelegate} * It is impossible to use {@link DefaultPersistenceDelegate}
......
...@@ -407,7 +407,20 @@ public class XMLEncoder extends Encoder { ...@@ -407,7 +407,20 @@ public class XMLEncoder extends Encoder {
os.writeObject(this); os.writeObject(this);
*/ */
mark(oldStm); mark(oldStm);
statementList(oldStm.getTarget()).add(oldStm); Object target = oldStm.getTarget();
if (target instanceof Field) {
String method = oldStm.getMethodName();
Object[] args = oldStm.getArguments();
if ((method == null) || (args == null)) {
}
else if (method.equals("get") && (args.length == 1)) {
target = args[0];
}
else if (method.equals("set") && (args.length == 2)) {
target = args[0];
}
}
statementList(target).add(oldStm);
} }
catch (Exception e) { catch (Exception e) {
getExceptionListener().exceptionThrown(new Exception("XMLEncoder: discarding statement " + oldStm, e)); getExceptionListener().exceptionThrown(new Exception("XMLEncoder: discarding statement " + oldStm, e));
...@@ -703,7 +716,9 @@ public class XMLEncoder extends Encoder { ...@@ -703,7 +716,9 @@ public class XMLEncoder extends Encoder {
statements.add(exp); statements.add(exp);
} }
outputValue(target, outer, false); outputValue(target, outer, false);
outputValue(value, outer, isArgument); if (expression) {
outputValue(value, outer, isArgument);
}
return; return;
} }
if (expression && (d.refs > 1)) { if (expression && (d.refs > 1)) {
...@@ -722,8 +737,10 @@ public class XMLEncoder extends Encoder { ...@@ -722,8 +737,10 @@ public class XMLEncoder extends Encoder {
} }
else if ((!expression && methodName.startsWith("set") && args.length == 1) || else if ((!expression && methodName.startsWith("set") && args.length == 1) ||
(expression && methodName.startsWith("get") && args.length == 0)) { (expression && methodName.startsWith("get") && args.length == 0)) {
attributes = attributes + " property=" + if (3 < methodName.length()) {
quote(Introspector.decapitalize(methodName.substring(3))); attributes = attributes + " property=" +
quote(Introspector.decapitalize(methodName.substring(3)));
}
} }
else if (!methodName.equals("new") && !methodName.equals("newInstance")) { else if (!methodName.equals("new") && !methodName.equals("newInstance")) {
attributes = attributes + " method=" + quote(methodName); attributes = attributes + " method=" + quote(methodName);
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
SINCE=1.4 SINCE=1.4
PACKAGE=java.nio.channels PACKAGE=java.nio.channels
# This year should only change if the generated source is modified. # This year should only change if the generated source is modified.
COPYRIGHT_YEARS=2000-2007 COPYRIGHT_YEARS="2000, 2007,"
SUPER=java.io.IOException SUPER=java.io.IOException
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
SINCE=1.4 SINCE=1.4
PACKAGE=java.nio.charset PACKAGE=java.nio.charset
# This year should only change if the generated source is modified. # This year should only change if the generated source is modified.
COPYRIGHT_YEARS=2000-2007 COPYRIGHT_YEARS="2000, 2007,"
SUPER=java.io.IOException SUPER=java.io.IOException
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
SINCE=1.4 SINCE=1.4
PACKAGE=java.nio PACKAGE=java.nio
# This year should only change if the generated source is modified. # This year should only change if the generated source is modified.
COPYRIGHT_YEARS=2000-2007 COPYRIGHT_YEARS="2000, 2007,"
SUPER=RuntimeException SUPER=RuntimeException
......
...@@ -21,9 +21,9 @@ You should have received a copy of the GNU General Public License version ...@@ -21,9 +21,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</head> </head>
......
...@@ -21,9 +21,9 @@ You should have received a copy of the GNU General Public License version ...@@ -21,9 +21,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</head> </head>
......
...@@ -21,9 +21,9 @@ You should have received a copy of the GNU General Public License version ...@@ -21,9 +21,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</head> </head>
......
...@@ -21,9 +21,9 @@ You should have received a copy of the GNU General Public License version ...@@ -21,9 +21,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</head> </head>
......
...@@ -21,9 +21,9 @@ You should have received a copy of the GNU General Public License version ...@@ -21,9 +21,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</head> </head>
......
...@@ -21,9 +21,9 @@ You should have received a copy of the GNU General Public License version ...@@ -21,9 +21,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</head> </head>
......
...@@ -21,9 +21,9 @@ You should have received a copy of the GNU General Public License version ...@@ -21,9 +21,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</head> </head>
......
...@@ -21,9 +21,9 @@ You should have received a copy of the GNU General Public License version ...@@ -21,9 +21,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</head> </head>
......
...@@ -21,9 +21,9 @@ You should have received a copy of the GNU General Public License version ...@@ -21,9 +21,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</head> </head>
......
...@@ -21,9 +21,9 @@ You should have received a copy of the GNU General Public License version ...@@ -21,9 +21,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</head> </head>
......
...@@ -21,9 +21,9 @@ You should have received a copy of the GNU General Public License version ...@@ -21,9 +21,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</head> </head>
......
...@@ -21,9 +21,9 @@ You should have received a copy of the GNU General Public License version ...@@ -21,9 +21,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</head> </head>
......
...@@ -21,9 +21,9 @@ You should have received a copy of the GNU General Public License version ...@@ -21,9 +21,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</head> </head>
......
...@@ -22,9 +22,9 @@ You should have received a copy of the GNU General Public License version ...@@ -22,9 +22,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
......
...@@ -18,9 +18,9 @@ You should have received a copy of the GNU General Public License version ...@@ -18,9 +18,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
......
...@@ -18,9 +18,9 @@ You should have received a copy of the GNU General Public License version ...@@ -18,9 +18,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
......
...@@ -18,9 +18,9 @@ You should have received a copy of the GNU General Public License version ...@@ -18,9 +18,9 @@ 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, 2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
CA 95054 USA or visit www.sun.com if you need additional information or or visit www.oracle.com if you need additional information or have any
have any questions. questions.
--> -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册