8sa1-gcc/libjava/classpath/javax/swing/text/DefaultEditorKit.java
Matthias Klose cd6d4007aa re PR libgcj/37636 (java tools are unable to find resource files)
libjava/ChangeLog:

2008-10-21  Andrew John Hughes  <gnu_andrew@member.fsf.org>

        * sources.am, Makfile.in: Regenerate.

2008-10-17  Matthias Klose  <doko@ubuntu.com>

	* configure.ac: Fix bashisms.
	* configure: Regenerate.

2008-10-15  Matthias Klose  <doko@ubuntu.com>

	* configure.ac: Disable build of gjdoc, if configured without
	--with-antlr-jar or if no antlr.jar found.
	* configure: Regenerate.

2008-10-09  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* classpath/configure.ac,
	* classpath/m4/ac_prog_antlr.m4,
	* classpath/m4/ac_prog_java.m4,
	* classpath/tools/Makefile.am:
	Ported --regen-gjdoc-parser patch and
	cantlr support from GNU Classpath.

2008-10-06  Andrew Haley  <aph@redhat.com>

	* java/lang/Thread.java (Thread): Always create the ThreadLocalMap
	when creating a thread.
	(getThreadLocals) Don't lazily create the ThreadLocalMap.

2008-09-28  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* classpath/java/lang/ThreadLocalMap.java,
	* java/lang/ThreadLocalMap$Entry.h,
	* java/lang/ThreadLocalMap.h,
	* lib/java/lang/ThreadLocalMap.class,
	* lib/java/lang/ThreadLocalMap$Entry.class:
	Add the new files for the ThreadLocal patch.

2008-09-28  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* classpath/ChangeLog,
	* classpath/java/lang/InheritableThreadLocal.java,
	* classpath/java/lang/Thread.java,
	* classpath/java/lang/ThreadLocal.java:
	Merge Daniel Frampton's ThreadLocal patch.
	* gcj/javaprims.h: Updated.
	* java/lang/Thread.h: Regenerated.
	* java/lang/Thread.java:
	Replace WeakIdentityHashMap with ThreadLocalMap.
	(getThreadLocals()): Likewise.
	* java/lang/ThreadLocal.h: Regenerated.
	* java/lang/ThreadLocal.java:
	(computeNextHash()): New method.
	(ThreadLocal()): Initialise fastHash.
	(internalGet()): Updated to match Classpath's get().
	(internalSet(Object)): Likewise for set(Object).
	(internalRemove()): Likewise for remove().
	
2008-09-25  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* classpath/configure,
	* classpath/configure.ac:
	Resynchronise with Classpath's configure.
	* classpath/examples/Makefile.in:
	Add equivalent support for building as in
	tools/Makefile.in.
	* classpath/java/nio/Buffer.java,
	* classpath/java/nio/ByteBuffer.java,
	* classpath/java/nio/ByteBufferImpl.java,
	* classpath/java/nio/CharBuffer.java,
	* classpath/java/nio/CharBufferImpl.java,
	* classpath/java/nio/CharSequenceBuffer.java,
	* classpath/java/nio/CharViewBufferImpl.java,
	* classpath/java/nio/DirectByteBufferImpl.java,
	* classpath/java/nio/DoubleBuffer.java,
	* classpath/java/nio/DoubleBufferImpl.java,
	* classpath/java/nio/DoubleViewBufferImpl.java,
	* classpath/java/nio/FloatBuffer.java,
	* classpath/java/nio/FloatBufferImpl.java,
	* classpath/java/nio/FloatViewBufferImpl.java,
	* classpath/java/nio/IntBuffer.java,
	* classpath/java/nio/IntBufferImpl.java,
	* classpath/java/nio/IntViewBufferImpl.java,
	* classpath/java/nio/LongBuffer.java,
	* classpath/java/nio/LongBufferImpl.java,
	* classpath/java/nio/LongViewBufferImpl.java,
	* classpath/java/nio/MappedByteBuffer.java,
	* classpath/java/nio/MappedByteBufferImpl.java,
	* classpath/java/nio/ShortBuffer.java,
	* classpath/java/nio/ShortBufferImpl.java,
	* classpath/java/nio/ShortViewBufferImpl.java:
	Replace use of gnu.classpath.Pointer with gnu.gcj.RawData,
	and fix some formatting issues.
	* classpath/tools/gnu/classpath/tools/gjdoc/expr/JavaLexer.java,
	* classpath/tools/gnu/classpath/tools/gjdoc/expr/JavaLexer.smap,
	* classpath/tools/gnu/classpath/tools/gjdoc/expr/JavaRecognizer.java,
	* classpath/tools/gnu/classpath/tools/gjdoc/expr/JavaRecognizer.smap,
	* classpath/tools/gnu/classpath/tools/gjdoc/expr/JavaTokenTypes.java,
	* classpath/tools/gnu/classpath/tools/gjdoc/expr/JavaTokenTypes.txt:
	Regenerated (later version of antlr).
	* java/nio/Buffer.h: Regenerated.
	* java/nio/Buffer.java: Ported changes from Classpath.
	* java/nio/ByteBuffer.h,
	* java/nio/CharBuffer.h: Regenerated.
	* java/nio/DirectByteBufferImpl.java: Ported changes from
	Classpath.
	* java/nio/DoubleBuffer.h,
	* java/nio/FloatBuffer.h,
	* java/nio/IntBuffer.h,
	* java/nio/LongBuffer.h,
	* java/nio/MappedByteBuffer.h,
	* java/nio/MappedByteBufferImpl.h: Regenerated.
	* java/nio/MappedByteBufferImpl.java: Ported changes from
	Classpath.
	* java/nio/ShortBuffer.h: Regenerated.

2008-09-24  Matthias Klose  <doko@ubuntu.com>

	* configure.ac: Search for antlr.jar, if not configured.
	* configure: Regenerate.

2008-09-24  Matthias Klose  <doko@ubuntu.com>

	* Makefile.am: Build a gjdoc binary, if enabled.
	* configure.ac: Add options --disable-gjdoc, --with-antlr-jar=file.
	* Makefile.in, */Makefile.in, configure: Regenerate.

2008-09-22  Andrew Haley  <aph@redhat.com>

	* java/lang/String.java (toString(char[], int, int)): New method.

2008-09-14  Matthias Klose  <doko@ubuntu.com>

	Import GNU Classpath (libgcj-import-20080914).

	* Regenerate class and header files.
	* Regenerate auto* files.
	* configure.ac: Don't pass --disable-gjdoc to classpath.
	* sources.am: Regenerated.
	* HACKING: Mention to build gjdoc in maintainer builds.
	* gnu/classpath/Configuration.java: Update classpath version.
	* gcj/javaprims.h: Update.

2008-09-08  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* Makefile.am: Replace natStringBuffer.cc
	and natStringBuilder.cc with natAbstractStringBuffer.cc.
	* Makefile.in: Regenerated.
	* java/lang/AbstractStringBuffer.java:
	(append(int)): Made native.
	(regionMatches(int,String)): Likewise.
	* java/lang/StringBuffer.h: Regenerated.
	* java/lang/StringBuffer.java: Remerged with GNU Classpath.
	* java/lang/StringBuilder.h: Regenerated.
	* java/lang/StringBuilder.java: Remerged with GNU Classpath.
	* java/lang/natAbstractStringBuffer.cc: Provide common
	native methods for StringBuffer and StringBuilder.
	* java/lang/natStringBuffer.cc,
	* java/lang/natStringBuilder.cc: Removed.

2008-09-04  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* Makefile.in,
	* classpath/configure: Regenerated.
	* gnu/gcj/util/natDebug.cc,
	* gnu/gcj/xlib/natColormap.cc,
	* gnu/gcj/xlib/natDisplay.cc,
	* gnu/gcj/xlib/natDrawable.cc,
	* gnu/gcj/xlib/natFont.cc,
	* gnu/gcj/xlib/natWMSizeHints.cc,
	* gnu/gcj/xlib/natWindow.cc,
	* gnu/gcj/xlib/natXImage.cc:
	Add :: prefix to namespaces.
	* java/io/CharArrayWriter.h,
	* java/lang/StringBuffer.h:
	Regenerated using patched gjavah.
	* java/lang/natStringBuffer.cc:
	Fix naming of append(jint).
	* java/sql/Timestamp.h: Regenerated
	using patched gjavah.
	* jni.cc: Rename p to functions
	to match change in GNU Classpath.
	* scripts/makemake.tcl: Switch
	gnu.java.math to BC compilation.
	* sources.am: Regenerated.

2008-08-21  Andrew John Hughes  <gnu_andrew@member.fsf.org>
	
	* Makefile.in: Updated location of Configuration.java.
	* classpath/lib/gnu/java/locale/LocaleData.class: Regenerated.

2008-08-18  Andrew John Hughes  <gnu_andrew@member.fsf.org>
	
	* Makefile.in: Updated with new Java files.
	* classpath/configure: Regenerated.
	* classpath/tools/Makefile.am: Add missing
	use of GJDOC_EX so --disable-gjdoc works.
	* classpath/tools/Makefile.in: Regenerated.

2008-08-15  Matthias Klose  <doko@ubuntu.com>

	Import GNU Classpath (libgcj-import-20080811).

	* Regenerate class and header files.
	* Regenerate auto* files.
	* configure.ac: Don't pass --with-fastjar to classpath, substitute new
	dummy value in classpath/gnu/classpath/Configuration.java.in, pass
	--disable-gjdoc to classpath.
	* scripts/makemake.tcl:
	* sources.am: Regenerated.
	* java/lang/AbstractStringBuffer.java, gnu/java/lang/VMCPStringBuilder.java:
	New, copied from classpath, use System instead of VMSystem.
	* java/lang/StringBuffer.java: Merge from classpath.
	* java/lang/ClassLoader.java: Merge from classpath.
	* gcj/javaprims.h: Update class definitions,
	remove _Jv_jobjectRefType, jobjectRefType definitions.

libjava/classpath/ChangeLog.gcj:

2008-10-21  Matthias Klose  <doko@ubuntu.com>

        * classpath/tools/gnu/classpath/tools/gjdoc/expr/Java*: Move from ...
        * classpath/tools/generated/gnu/classpath/tools/gjdoc/expr/ ... here.
        * Update .class files.
        
2008-10-21  Andrew John Hughes  <gnu_andrew@member.fsf.org>

        * tools/Makefile.am:
        Always generate parser in the srcdir.

2008-10-21  Matthias Klose  <doko@ubuntu.com>

        * doc/Makefile.am (MAINTAINERCLEANFILES): Add gjdoc.1.
        * doc/Makefile.in: Regenerate.

2008-10-20  Matthias Klose  <doko@ubuntu.com>

	* configure.ac: Don't check for working java, if not configured
        with --enable-java-maintainer-mode.
	* configure: Regenerate.

2008-10-19  Matthias Klose  <doko@ubuntu.com>

	* m4/ac_prog_java.m4: Revert previous change.
	* m4/ac_prog_javac.m4: Apply it here.
	* configure: Regenerate.

2008-10-19  Matthias Klose  <doko@ubuntu.com>

	* m4/ac_prog_javac.m4: Don't check for working javac, if not configured
	with --enable-java-maintainer-mode.
	* configure: Regenerate.
	* Makefile.in, */Makefile.in: Regenerate.

2008-09-30  Matthias Klose  <doko@ubuntu.com>

	* m4/ac_prog_antlr.m4: Check for cantlr binary as well.

2008-09-29  Matthias Klose  <doko@ubuntu.com>

	* m4/ac_prog_antlr.m4: Check for antlr binary as well.

2008-09-28  Matthias Klose  <doko@ubuntu.com>

	* PR libgcj/37636. Revert:
	2008-02-20  Matthias Klose  <doko@ubuntu.com>

	* tools/Makefile.am ($(TOOLS_ZIP)): Revert part of previous change,
	Do copy resource files in JAVA_MAINTAINER_MODE only.
	* tools/Makefile.in: Regenerate.

2008-09-14  Matthias Klose  <doko@ubuntu.com>

	* m4/ac_prog_javac_works.m4, m4/ac_prog_javac.m4, m4/acinclude.m4:
	Revert local changes.
	* m4/ac_prog_antlr.m4: Check for an runantlr binary.
	* tools/Makefile.am, lib/Makefile.am: Revert local changes (JCOMPILER).
	* tools/Makefile.am: Remove USE_JAVAC_FLAGS, pass ANTLR_JAR in
	GLIBJ_CLASSPATH.

2008-09-14  Matthias Klose  <doko@ubuntu.com>

	Revert:
	Daniel Frampton  <zyridium at zyridium.net>

	* AUTHORS: Added.
	* java/lang/InheritableThreadLocal.java,
	* java/lang/Thread.java,
	* java/lang/ThreadLocal.java:
	Modified to use java.lang.ThreadLocalMap.
	* java/lang/ThreadLocalMap.java:
	New cheaper ThreadLocal-specific WeakHashMap.

2008-08-15  Matthias Klose  <doko@ubuntu.com>

	* m4/acinclude.m4 (CLASSPATH_JAVAC_MEM_CHECK): Remove unknown
	args for javac.

libjava/classpath/ChangeLog:

2008-10-20  Andrew John Hughes  <gnu_andrew@member.fsf.org>

        * m4/ac_prog_antlr.m4:
        Remove redundant checks.
        * tools/Makefile.am:
        Use gjdoc_gendir when calling antlr.

2008-10-15  Andrew John Hughes  <gnu_andrew@member.fsf.org>

        * configure.ac:
        Remove superfluous AC_PROG_JAVA call.

2008-10-06  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* m4/ac_prog_antlr:
	Check for cantlr as well.
	* tools/Makefile.am:
	Only build GJDoc parser when both
	CREATE_GJDOC and CREATE_GJDOC_PARSER
	are on.
	
2008-10-02  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* configure.ac:
	Add regen-gjdoc-parser option,
	and separate antlr tests.
	* m4/ac_prog_antlr.m4:
	Turn single test into AC_LIB_ANTLR
	and AC_PROG_ANTLR.
	* m4/ac_prog_java.m4:
	Quote tests.
	* tools/Makefile.am:
	Support CREATE_GJDOC_PARSER option.

2008-09-14  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* examples/Makefile.am:
        Check lib directly as well as glibj.zip
        for boot classes.
	* m4/acinclude.m4:
        Only require the class files to be built
        to allow the tools and examples to be built,
        not the installation of glibj.zip.
	* tools/Makefile.am:
	Check lib directly as well as glibj.zip
	for boot classes.

2008-09-13  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* examples/Makefile.am,
	* lib/Makefile.am:
	Add GCJ rules.
	* m4/ac_prog_javac.m4:
	Check whether JAVAC is gcj.
	* m4/ac_prog_javac_works.m4:
	Add GCJ rules.
	* m4/acinclude.m4:
	Don't bother checking for -J
	if using GCJ.
	* tools/Makefile.am:
	Add GCJ rules.

2007-08-23  Daniel Frampton  <zyridium@zyridium.net>

	* AUTHORS: Added.
	* java/lang/InheritableThreadLocal.java,
	* java/lang/Thread.java,
	* java/lang/ThreadLocal.java:
	Modified to use java.lang.ThreadLocalMap.
	* java/lang/ThreadLocalMap.java:
	New cheaper ThreadLocal-specific WeakHashMap.

2008-02-07  Ian Rogers  <ian.rogers@manchester.ac.uk>

	* java/util/zip/ZipEntry.java:
	Use byte fields instead of integer fields,
	store the time as well as the DOS time and
	don't retain a global Calendar instance.
	(setDOSTime(int)): Set KNOWN_DOSTIME instead
	of KNOWN_TIME, and unset KNOWN_TIME.
	(getDOSTime()): Compute DOS time from UNIX time
	only when needed.
	(clone()): Provide cloning via the ZipEntry constructor
	where possible.
	(setTime(long)): Don't compute DOS time at this point.
	(getCalendar()): Removed.
	
2008-09-09  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* tools/gnu/classpath/tools/getopt/Parser.java:
	(setHeader(String)): Make synchronized.
	(setFooter(String)): Likewise.
	* tools/gnu/classpath/tools/rmic/SourceGiopRmicCompiler.java,
	(reset()): Make synchronized.
	(name(Class)): Likewise.
	
2008-09-04  Robert Schuster  <robertschuster@fsfe.org>

	* gnu/java/nio/charset/ByteDecodeLoopHelper:
	(arrayDecodeLoop): Added new break label, escape to that label.
	* gnu/java/nio/charset/ByteEncodeLoopHelper:
	(arrayDecodeLoop): Added new break label, escape to that label.

2008-09-04  Robert Schuster  <robertschuster@fsfe.org>

	* java/text/DecimalFormat.java:
	(scanFix): Use 'i + 1' when looking at following character.
	(scanNegativePattern): Dito.

2008-09-02  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* tools/gnu/classpath/tools/javah/ClassWrapper.java:
	(makeVtable()): Populate methodNameMap.
	(printMethods(CniPrintStream)): Always use pre-populated
	methodNameMap for bridge targets.

2008-09-01  Mario Torre  <neugens@aicas.com>

	* gnu/java/awt/peer/x/XImage.java (XImageProducer): remove @Override
	annotation to allow compilation on javac < 1.6 and ecj < 3.4.

2008-09-01  Mario Torre  <neugens@aicas.com>

	* gnu/java/awt/peer/x/XGraphicsDevice.java (getDisplay): fix to support
	new Escher API.
	* gnu/java/awt/peer/x/XImage.java (getSource): method implemented.
	* gnu/java/awt/peer/x/XImage.java (XImageProducer): implement ImageProducer
	for getSource.
	 
2008-09-01  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* gnu/java/util/regex/BacktrackStack.java,
	* gnu/java/util/regex/CharIndexed.java,
	* gnu/java/util/regex/CharIndexedCharArray.java,
	* gnu/java/util/regex/CharIndexedCharSequence.java,
	* gnu/java/util/regex/CharIndexedInputStream.java,
	* gnu/java/util/regex/CharIndexedString.java,
	* gnu/java/util/regex/CharIndexedStringBuffer.java,
	* gnu/java/util/regex/RE.java,
	* gnu/java/util/regex/REException.java,
	* gnu/java/util/regex/REFilterInputStream.java,
	* gnu/java/util/regex/REMatch.java,
	* gnu/java/util/regex/REMatchEnumeration.java,
	* gnu/java/util/regex/RESyntax.java,
	* gnu/java/util/regex/REToken.java,
	* gnu/java/util/regex/RETokenAny.java,
	* gnu/java/util/regex/RETokenBackRef.java,
	* gnu/java/util/regex/RETokenChar.java,
	* gnu/java/util/regex/RETokenEnd.java,
	* gnu/java/util/regex/RETokenEndOfPreviousMatch.java,
	* gnu/java/util/regex/RETokenEndSub.java,
	* gnu/java/util/regex/RETokenIndependent.java,
	* gnu/java/util/regex/RETokenLookAhead.java,
	* gnu/java/util/regex/RETokenLookBehind.java,
	* gnu/java/util/regex/RETokenNamedProperty.java,
	* gnu/java/util/regex/RETokenOneOf.java,
	* gnu/java/util/regex/RETokenPOSIX.java,
	* gnu/java/util/regex/RETokenRange.java,
	* gnu/java/util/regex/RETokenRepeated.java,
	* gnu/java/util/regex/RETokenStart.java,
	* gnu/java/util/regex/RETokenWordBoundary.java,
	* gnu/java/util/regex/UncheckedRE.java:
	Fix indentation.

2008-09-01  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* gnu/java/util/regex/RETokenStart.java:
	(getMaximumLength()): Add Override annotation.
	(matchThis(CharIndexed, REMatch)): Likewise.
	(returnsFixedLengthMatches()): Renamed from
	returnsFixedLengthmatches and added Override
	annotation.
	(findFixedLengthMatches(CharIndexed,REMatch,int)):
	Add Override annotation.
	(dump(CPStringBuilder)): Likewise.
	* gnu/javax/print/ipp/IppRequest.java:
	(RequestWriter.writeOperationAttributes(AttributeSet)):
	Throw exception, don't just create and drop it.
	* javax/management/MBeanServerPermission.java:
	(MBeanServerPermissionCollection.add(Permission)): Compare
	against individual Strings not the entire array, and
	store the result of replace.
	* javax/swing/text/html/StyleSheet.java:
	(setBaseFontSize(size)): Store result of trim().

2008-09-01  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* javax/tools/FileObject.java:
	(openReader(boolean)): Document new parameter.
	
2008-03-27  Michael Franz  <mvfranz@gmail.com>

	PR classpath/35690:
	* javax/tools/FileObject.java:
	(toUri()): Fix case from toURI.
	(openReader(boolean)): Add missing boolean argument.
	
2008-08-26  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	PR classpath/35487:
	* gnu/javax/management/Server.java:
	(beans): Change to ConcurrentHashMap.
	(defaultDomain): Make final.
	(outer): Likewise.
	(LazyListenersHolder): Added to wrap
	listeners, also now a ConcurrentHashMap,
	providing lazy initialisation safely.
	(sequenceNumber): Documented.
	(getBean(ObjectName)): Remove redundant cast.
	(addNotificationListener(ObjectName,NotificationListener,
	NotificationFilter,Object)): Remove map initialisation
	and use holder.
	(getObjectInstance(ObjectName)): Remove redundant cast.
	(registerMBean(Object,ObjectName)): Add bean atomically.
	(removeNotificationListener(ObjectName,NotificationListener)):
	Simplified.
	(removeNotificationListener(ObjectName,NotificationListener,
	NotificationFilter,Object)): Likewise.
	(notify(ObjectName,String)): Documented.
	
2008-08-26  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* gnu/javax/management/Server.java:
	Genericised.

2008-08-26  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* gnu/javax/management/Translator.java:
	Genericised.

2008-08-26  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* javax/management/DefaultLoaderRepository.java,
	* javax/management/JMX.java,
	* javax/management/MBeanAttributeInfo.java,
	* javax/management/MBeanConstructorInfo.java,
	* javax/management/MBeanOperationInfo.java,
	* javax/management/MBeanServerDelegate.java:
	Fix warnings due to generics.

2008-08-25  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* javax/management/MBeanPermission.java,
	* javax/management/MBeanServerDelegate.java,
	* javax/management/MBeanServerFactory.java,
	* javax/management/MBeanServerInvocationHandler.java,
	* javax/management/MBeanServerPermission.java:
	Fix warnings due to use of non-generic collections.

2008-08-25  Mario Torre  <neugens@aicas.com>

	* gnu/javax/rmi/CORBA/RmiUtilities.java (readValue): check if sender is
	null to avoid NPE.
	
2008-08-22  Mario Torre  <neugens@aicas.com>
 
	* gnu/CORBA/OrbFunctional.java (set_parameters): Fix
	NullPointerException checking when param is null. 

2008-08-23  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* java/util/regex/Matcher.java:
	(reset()): Reset append position so
	we don't try and append to the end of
	the old input.
	
2008-08-22  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	PR classpath/32028:
	* m4/acinclude.m4:
	Also allow versions of GJDoc from 0.8* on, as
	CVS is 0.8.0-pre.
	
2008-08-21  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	PR classpath/32028:
	* m4/acinclude.m4:
	(CLASSPATH_WITH_GJDOC): Ensure version 0.7.9 is
	being used.
	
2008-08-20  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* tools/Makefile.am:
	Add taglets subdirectory to list of excluded
	paths when GJDoc is not compiled.
	
2008-08-19  David P Grove  <groved@us.ibm.com>

	* scripts/check_jni_methods.sh.in:
	Fix build issue on AIX by splitting generation
	of method list.
	
2008-08-18  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* native/jni/gstreamer-peer/gst_native_pipeline.c:
	(get_free_space(int)): Use #else not #elif when
	there is no condition.

2008-08-17  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	PR classpath/31895:
	* java/text/DecimalFormat.java:
	(setCurrency(Currency)): Update prefixes and
	suffixes when currency changes.
	* java/text/DecimalFormatSymbols.java:
	(DecimalFormatSymbols(Locale)): Set locale earlier
	so it can be used by setCurrency(Currency).
	(setCurrency(Currency)): Set the symbol correctly using
	the locale of the instance.
	* java/util/Currency.java:
	Throw error instead of just printing a message.

2008-08-17  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* javax/activation/ActivationDataFlavor.java:
	Suppress warnings from public API.
	(mimeType): Made final.
	(representationClass): Added generic type and
	made final.
	(normalizeMimeTypeParameter(String,String)):
	Use CPStringBuilder.
	* javax/activation/CommandInfo.java:
	(verb): Made final.
	(className): Made final.
	* javax/activation/DataHandler.java:
	(dataSource): Made final.
	* javax/activation/FileDataSource.java:
	(file): Made final.
	* javax/activation/MailcapCommandMap.java:
	Use generics on collections and CPStringBuilder
	instead of StringBuffer.
	* javax/activation/MimeType.java:
	(toString()): Use CPStringBuilder.
	(getBaseType()): Likewise.
	* javax/activation/MimeTypeParameterList.java:
	Use generics on collections and CPStringBuilder
	instead of StringBuffer.
	* javax/activation/MimeTypeParseException.java:
	(MimeTypeParseException(String,String)): Use
	CPStringBuilder.
	* javax/activation/MimetypesFileTypeMap.java:
	Use generics on collections and CPStringBuilder
	instead of StringBuffer.	
	* javax/activation/URLDataSource.java:
	(url): Made final.

2008-08-17  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* gnu/javax/activation/viewers/ImageViewer.java,
	* gnu/javax/activation/viewers/TextEditor.java,
	* gnu/javax/activation/viewers/TextViewer.java,
	* javax/activation/ActivationDataFlavor.java,
	* javax/activation/CommandInfo.java,
	* javax/activation/CommandMap.java,
	* javax/activation/CommandObject.java,
	* javax/activation/DataContentHandler.java,
	* javax/activation/DataContentHandlerFactory.java,
	* javax/activation/DataHandler.java,
	* javax/activation/DataHandlerDataSource.java,
	* javax/activation/DataSource.java,
	* javax/activation/DataSourceDataContentHandler.java,
	* javax/activation/FileDataSource.java,
	* javax/activation/FileTypeMap.java,
	* javax/activation/MailcapCommandMap.java,
	* javax/activation/MimeType.java,
	* javax/activation/MimeTypeParameterList.java,
	* javax/activation/MimeTypeParseException.java,
	* javax/activation/MimetypesFileTypeMap.java,
	* javax/activation/ObjectDataContentHandler.java,
	* javax/activation/URLDataSource.java,
	* javax/activation/UnsupportedDataTypeException.java,
	* javax/activation/package.html,
	* resource/META-INF/mailcap.default,
	* resource/META-INF/mimetypes.default:
	Import GNU JAF CVS as of 17/08/2008.

2006-04-25  Archit Shah  <ashah@redhat.com>

	* javax/activation/MimeTypeParameterList.java:
	Insert ';' separator before parameter list.

2005-06-29  Xavier Poinsard  <xpoinsard@openpricer.com>

	* javax/activation/ObjectDataContentHandler.java:
	Fixed typo.

2005-05-28  Chris Burdess  <dog@bluezoo.org>

	* javax/activation/CommandMap.java, 
	* javax/activation/MailcapCommandMap.java:
	Updated to JAF 1.1.

2004-06-09  Chris Burdess  <dog@bluezoo.org>

	* javax/activation/MailcapCommandMap.java:
	Fixed bug whereby x-java prefix was not
	attempted.

2008-08-17  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* AUTHORS: Added Laszlo.

2008-04-20  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	PR classpath/30436:
	* java/util/Scanner.java:
	Fix package to be java.util and correct
	indentation.

2007-07-25  Laszlo Andras Hernadi  <e0327023@student.tuwien.ac.at>

	PR classpath/30436:
	* java/util/Scanner.java:
	Initial implementation.

2008-08-17  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* java/util/regex/Matcher.java:
	(toMatchResult()): Implemented.
	
2008-08-13  Joshua Sumali  <jsumali@redhat.com>

	* doc/Makefile.am (gjdoc.pod): Generate gjdoc pod from cp-tools.texinfo
	instead of invoke.texi. Remove invoke.texi from EXTRA_DIST.
	* doc/invoke.texi: Removed and merged into ...
	* doc/cp-tools.texinfo: Here

2008-08-12  Robert Schuster  <robertschuster@fsfe.org>

	* native/jni/java-net/local.c
	(local_bind): Removed fprintf call, fixed access outside
	of array bounds.

From-SVN: r141271
2008-10-21 17:55:01 +00:00

1703 lines
43 KiB
Java

/* DefaultEditorKit.java --
Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath 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 for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package javax.swing.text;
import gnu.java.lang.CPStringBuilder;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import javax.swing.Action;
import javax.swing.SwingConstants;
/**
* The default implementation of {@link EditorKit}. This <code>EditorKit</code>
* a plain text <code>Document</code> and several commands that together
* make up a basic editor, like cut / copy + paste.
*
* @author original author unknown
* @author Roman Kennke (roman@kennke.org)
* @author Robert Schuster (robertschuster@fsfe.org)
*/
public class DefaultEditorKit extends EditorKit
{
static class SelectionPreviousWordAction
extends TextAction
{
SelectionPreviousWordAction()
{
super(selectionPreviousWordAction);
}
public void actionPerformed(ActionEvent event)
{
try
{
JTextComponent t = getTextComponent(event);
if (t != null)
{
int offs = Utilities.getPreviousWord(t, t.getCaretPosition());
Caret c = t.getCaret();
c.moveDot(offs);
c.setMagicCaretPosition(t.modelToView(offs).getLocation());
}
}
catch(BadLocationException ble)
{
// Can't happen.
}
}
}
static class SelectionNextWordAction
extends TextAction
{
SelectionNextWordAction()
{
super(selectionNextWordAction);
}
public void actionPerformed(ActionEvent event)
{
try
{
JTextComponent t = getTextComponent(event);
if (t != null)
{
int offs = Utilities.getNextWord(t, t.getCaretPosition());
Caret c = t.getCaret();
c.moveDot(offs);
c.setMagicCaretPosition(t.modelToView(offs).getLocation());
}
}
catch(BadLocationException ble)
{
// Can't happen.
}
}
}
static class SelectionBeginWordAction extends TextAction
{
SelectionBeginWordAction()
{
super(selectionBeginWordAction);
}
public void actionPerformed(ActionEvent event)
{
try
{
JTextComponent t = getTextComponent(event);
if (t != null)
{
int offs = Utilities.getWordStart(t, t.getCaretPosition());
Caret c = t.getCaret();
c.moveDot(offs);
c.setMagicCaretPosition(t.modelToView(offs).getLocation());
}
}
catch(BadLocationException ble)
{
// Can't happen.
}
}
}
static class SelectionEndWordAction extends TextAction
{
SelectionEndWordAction()
{
super(selectionEndWordAction);
}
public void actionPerformed(ActionEvent event)
{
try
{
JTextComponent t = getTextComponent(event);
if (t != null)
{
int offs = Utilities.getWordEnd(t, t.getCaretPosition());
Caret c = t.getCaret();
c.moveDot(offs);
c.setMagicCaretPosition(t.modelToView(offs).getLocation());
}
}
catch(BadLocationException ble)
{
// Can't happen.
}
}
}
static class BeginWordAction extends TextAction
{
BeginWordAction()
{
super(beginWordAction);
}
public void actionPerformed(ActionEvent event)
{
try
{
JTextComponent t = getTextComponent(event);
if (t != null)
{
int offs = Utilities.getWordStart(t, t.getCaretPosition());
Caret c = t.getCaret();
c.setDot(offs);
c.setMagicCaretPosition(t.modelToView(offs).getLocation());
}
}
catch(BadLocationException ble)
{
// Can't happen.
}
}
}
static class EndWordAction extends TextAction
{
EndWordAction()
{
super(endWordAction);
}
public void actionPerformed(ActionEvent event)
{
try
{
JTextComponent t = getTextComponent(event);
if (t != null)
{
int offs = Utilities.getWordEnd(t, t.getCaretPosition());
Caret c = t.getCaret();
c.setDot(offs);
c.setMagicCaretPosition(t.modelToView(offs).getLocation());
}
}
catch(BadLocationException ble)
{
// Can't happen.
}
}
}
static class PreviousWordAction
extends TextAction
{
PreviousWordAction()
{
super(previousWordAction);
}
public void actionPerformed(ActionEvent event)
{
try
{
JTextComponent t = getTextComponent(event);
if (t != null)
{
int offs = Utilities.getPreviousWord(t, t.getCaretPosition());
Caret c = t.getCaret();
c.setDot(offs);
c.setMagicCaretPosition(t.modelToView(offs).getLocation());
}
}
catch(BadLocationException ble)
{
// Can't happen.
}
}
}
static class NextWordAction
extends TextAction
{
NextWordAction()
{
super(nextWordAction);
}
public void actionPerformed(ActionEvent event)
{
try
{
JTextComponent t = getTextComponent(event);
if (t != null)
{
int offs = Utilities.getNextWord(t, t.getCaretPosition());
Caret c = t.getCaret();
c.setDot(offs);
c.setMagicCaretPosition(t.modelToView(offs).getLocation());
}
}
catch(BadLocationException ble)
{
// Can't happen.
}
}
}
static class SelectAllAction
extends TextAction
{
SelectAllAction()
{
super(selectAllAction);
}
public void actionPerformed(ActionEvent event)
{
JTextComponent t = getTextComponent(event);
if (t != null)
{
int offs = t.getDocument().getLength();
Caret c = t.getCaret();
c.setDot(0);
c.moveDot(offs);
try
{
c.setMagicCaretPosition(t.modelToView(offs).getLocation());
}
catch(BadLocationException ble)
{
// Can't happen.
}
}
}
}
static class SelectionBeginAction
extends TextAction
{
SelectionBeginAction()
{
super(selectionBeginAction);
}
public void actionPerformed(ActionEvent event)
{
JTextComponent t = getTextComponent(event);
if (t != null)
{
Caret c = t.getCaret();
c.moveDot(0);
try
{
c.setMagicCaretPosition(t.modelToView(0).getLocation());
}
catch(BadLocationException ble)
{
// Can't happen.
}
}
}
}
static class SelectionEndAction
extends TextAction
{
SelectionEndAction()
{
super(selectionEndAction);
}
public void actionPerformed(ActionEvent event)
{
JTextComponent t = getTextComponent(event);
if (t != null)
{
int offs = t.getDocument().getLength();
Caret c = t.getCaret();
c.moveDot(offs);
try
{
c.setMagicCaretPosition(t.modelToView(offs).getLocation());
}
catch(BadLocationException ble)
{
// Can't happen.
}
}
}
}
static class SelectionBeginLineAction
extends TextAction
{
SelectionBeginLineAction()
{
super(selectionBeginLineAction);
}
public void actionPerformed(ActionEvent event)
{
JTextComponent t = getTextComponent(event);
if (t != null)
{
Caret c = t.getCaret();
try
{
int offs = Utilities.getRowStart(t, c.getDot());
c.setMagicCaretPosition(t.modelToView(offs).getLocation());
}
catch(BadLocationException ble)
{
// Can't happen.
}
}
}
}
static class SelectionEndLineAction
extends TextAction
{
SelectionEndLineAction()
{
super(selectionEndLineAction);
}
public void actionPerformed(ActionEvent event)
{
JTextComponent t = getTextComponent(event);
if (t != null)
{
Caret c = t.getCaret();
try
{
int offs = Utilities.getRowEnd(t, c.getDot());
c.setMagicCaretPosition(t.modelToView(offs).getLocation());
}
catch(BadLocationException ble)
{
// Can't happen.
}
}
}
}
static class SelectLineAction extends TextAction
{
SelectLineAction()
{
super(selectLineAction);
}
public void actionPerformed(ActionEvent event)
{
JTextComponent t = getTextComponent(event);
if (t != null)
{
Caret c = t.getCaret();
try
{
int offs1 = Utilities.getRowStart(t, c.getDot());
int offs2 = Utilities.getRowEnd(t, c.getDot());
c.setDot(offs2);
c.moveDot(offs1);
c.setMagicCaretPosition(t.modelToView(offs2).getLocation());
}
catch(BadLocationException ble)
{
// Can't happen.
}
}
}
}
static class SelectWordAction extends TextAction
{
SelectWordAction()
{
super(selectWordAction);
}
public void actionPerformed(ActionEvent event)
{
JTextComponent t = getTextComponent(event);
if (t != null)
{
Caret c = t.getCaret();
int dot = c.getDot();
try
{
int wordStart = Utilities.getWordStart(t, dot);
if (dot == wordStart)
{
// Current cursor position is on the first character in a word.
c.setDot(wordStart);
c.moveDot(Utilities.getWordEnd(t, wordStart));
}
else
{
// Current cursor position is not on the first character
// in a word.
int nextWord = Utilities.getNextWord(t, dot);
int previousWord = Utilities.getPreviousWord(t, dot);
int previousWordEnd = Utilities.getWordEnd(t, previousWord);
// Cursor position is in the space between two words. In such a
// situation just select the space.
if (dot >= previousWordEnd && dot <= nextWord)
{
c.setDot(previousWordEnd);
c.moveDot(nextWord);
}
else
{
// Cursor position is inside a word. Just select it then.
c.setDot(previousWord);
c.moveDot(previousWordEnd);
}
}
// If the position was updated change the magic caret position
// as well.
if (c.getDot() != dot)
c.setMagicCaretPosition(t.modelToView(c.getDot()).getLocation());
}
catch(BadLocationException ble)
{
// Can't happen.
}
}
}
}
static class SelectionDownAction
extends TextAction.VerticalMovementAction
{
SelectionDownAction()
{
super(selectionDownAction, SwingConstants.SOUTH);
}
protected void actionPerformedImpl(Caret c, int offs)
{
c.moveDot(offs);
}
}
static class SelectionUpAction
extends TextAction.VerticalMovementAction
{
SelectionUpAction()
{
super(selectionUpAction, SwingConstants.NORTH);
}
protected void actionPerformedImpl(Caret c, int offs)
{
c.moveDot(offs);
}
}
static class SelectionForwardAction
extends TextAction.HorizontalMovementAction
{
SelectionForwardAction()
{
super(selectionForwardAction, SwingConstants.EAST);
}
protected void actionPerformedImpl(Caret c, int offs)
{
c.moveDot(offs);
}
}
static class SelectionBackwardAction
extends TextAction.HorizontalMovementAction
{
SelectionBackwardAction()
{
super(selectionBackwardAction, SwingConstants.WEST);
}
protected void actionPerformedImpl(Caret c, int offs)
{
c.moveDot(offs);
}
}
static class DownAction
extends TextAction.VerticalMovementAction
{
DownAction()
{
super(downAction, SwingConstants.SOUTH);
}
protected void actionPerformedImpl(Caret c, int offs)
{
c.setDot(offs);
}
}
static class UpAction
extends TextAction.VerticalMovementAction
{
UpAction()
{
super(upAction, SwingConstants.NORTH);
}
protected void actionPerformedImpl(Caret c, int offs)
{
c.setDot(offs);
}
}
static class ForwardAction
extends TextAction.HorizontalMovementAction
{
ForwardAction()
{
super(forwardAction, SwingConstants.EAST);
}
protected void actionPerformedImpl(Caret c, int offs)
{
c.setDot(offs);
}
}
static class BackwardAction
extends TextAction.HorizontalMovementAction
{
BackwardAction()
{
super(backwardAction, SwingConstants.WEST);
}
protected void actionPerformedImpl(Caret c, int offs)
{
c.setDot(offs);
}
}
static class DeletePrevCharAction
extends TextAction
{
DeletePrevCharAction()
{
super(deletePrevCharAction);
}
public void actionPerformed(ActionEvent event)
{
JTextComponent t = getTextComponent(event);
if (t != null)
{
try
{
int pos = t.getSelectionStart();
int len = t.getSelectionEnd() - pos;
if (len > 0)
t.getDocument().remove(pos, len);
else if (pos > 0)
{
pos--;
t.getDocument().remove(pos, 1);
Caret c = t.getCaret();
c.setDot(pos);
c.setMagicCaretPosition(t.modelToView(pos).getLocation());
}
}
catch (BadLocationException e)
{
// FIXME: we're not authorized to throw this.. swallow it?
}
}
}
}
static class DeleteNextCharAction
extends TextAction
{
DeleteNextCharAction()
{
super(deleteNextCharAction);
}
public void actionPerformed(ActionEvent event)
{
JTextComponent t = getTextComponent(event);
if (t != null)
{
try
{
int pos = t.getSelectionStart();
int len = t.getSelectionEnd() - pos;
if (len > 0)
t.getDocument().remove(pos, len);
else if (pos < t.getDocument().getLength())
t.getDocument().remove(pos, 1);
Caret c = t.getCaret();
c.setDot(pos);
c.setMagicCaretPosition(t.modelToView(pos).getLocation());
}
catch (BadLocationException e)
{
// FIXME: we're not authorized to throw this.. swallow it?
}
}
}
}
static class EndLineAction
extends TextAction
{
EndLineAction()
{
super(endLineAction);
}
public void actionPerformed(ActionEvent event)
{
JTextComponent t = getTextComponent(event);
if (t != null)
{
try
{
int offs = Utilities.getRowEnd(t, t.getCaretPosition());
if (offs > -1)
{
Caret c = t.getCaret();
c.setDot(offs);
c.setMagicCaretPosition(t.modelToView(offs).getLocation());
}
}
catch (BadLocationException ble)
{
// Nothing to do here
}
}
}
}
static class BeginLineAction
extends TextAction
{
BeginLineAction()
{
super(beginLineAction);
}
public void actionPerformed(ActionEvent event)
{
JTextComponent t = getTextComponent(event);
if (t != null)
{
try
{
int offs = Utilities.getRowStart(t, t.getCaretPosition());
if (offs > -1)
{
Caret c = t.getCaret();
c.setDot(offs);
c.setMagicCaretPosition(t.modelToView(offs).getLocation());
}
}
catch (BadLocationException ble)
{
// Do nothing here.
}
}
}
}
static class BeginAction extends TextAction
{
BeginAction()
{
super(beginAction);
}
public void actionPerformed(ActionEvent event)
{
JTextComponent t = getTextComponent(event);
if (t != null)
{
Caret c = t.getCaret();
c.setDot(0);
try
{
c.setMagicCaretPosition(t.modelToView(0).getLocation());
}
catch(BadLocationException ble)
{
// Can't happen.
}
}
}
}
static class EndAction extends TextAction
{
EndAction()
{
super(endAction);
}
public void actionPerformed(ActionEvent event)
{
JTextComponent t = getTextComponent(event);
if (t != null)
{
int offs = t.getDocument().getLength();
Caret c = t.getCaret();
c.setDot(offs);
try
{
c.setMagicCaretPosition(t.modelToView(offs).getLocation());
}
catch(BadLocationException ble)
{
// Can't happen.
}
}
}
}
/**
* Creates a beep on the PC speaker.
*
* @see Toolkit#beep()
*/
public static class BeepAction extends TextAction
{
/**
* Creates a new <code>BeepAction</code>.
*/
public BeepAction()
{
super(beepAction);
}
/**
* Performs the <code>Action</code>.
*
* @param event the action event describing the user action
*/
public void actionPerformed(ActionEvent event)
{
Toolkit.getDefaultToolkit().beep();
}
}
/**
* Copies the selected content into the system clipboard.
*
* @see Toolkit#getSystemClipboard()
* @see CutAction
* @see PasteAction
*/
public static class CopyAction extends TextAction
{
/**
* Create a new <code>CopyAction</code>.
*/
public CopyAction()
{
super(copyAction);
}
/**
* Performs the <code>Action</code>.
*
* @param event the action event describing the user action
*/
public void actionPerformed(ActionEvent event)
{
JTextComponent target = getTextComponent(event);
if (target != null)
target.copy();
}
}
/**
* Copies the selected content into the system clipboard and deletes the
* selection.
*
* @see Toolkit#getSystemClipboard()
* @see CopyAction
* @see PasteAction
*/
public static class CutAction extends TextAction
{
/**
* Create a new <code>CutAction</code>.
*/
public CutAction()
{
super(cutAction);
}
/**
* Performs the <code>Action</code>.
*
* @param event the action event describing the user action
*/
public void actionPerformed(ActionEvent event)
{
JTextComponent target = getTextComponent(event);
if (target != null)
target.cut();
}
}
/**
* Copies content from the system clipboard into the editor.
*
* @see Toolkit#getSystemClipboard()
* @see CopyAction
* @see CutAction
*/
public static class PasteAction extends TextAction
{
/**
* Create a new <code>PasteAction</code>.
*/
public PasteAction()
{
super(pasteAction);
}
/**
* Performs the <code>Action</code>.
*
* @param event the action event describing the user action
*/
public void actionPerformed(ActionEvent event)
{
JTextComponent target = getTextComponent(event);
if (target != null)
target.paste();
}
}
/**
* This action is executed as default action when a KEY_TYPED
* event is received and no keymap entry exists for that. The purpose
* of this action is to filter out a couple of characters. This includes
* the control characters and characters with the ALT-modifier.
*
* If an event does not get filtered, it is inserted into the document
* of the text component. If there is some text selected in the text
* component, this text will be replaced.
*/
public static class DefaultKeyTypedAction
extends TextAction
{
/**
* Creates a new <code>DefaultKeyTypedAction</code>.
*/
public DefaultKeyTypedAction()
{
super(defaultKeyTypedAction);
}
/**
* Performs the <code>Action</code>.
*
* @param event the action event describing the user action
*/
public void actionPerformed(ActionEvent event)
{
// first we filter the following events:
// - control characters
// - key events with the ALT modifier
JTextComponent target = getTextComponent(event);
if ((target != null) && (event != null))
{
if ((target.isEditable()) && (target.isEnabled()))
{
String content = event.getActionCommand();
int mod = event.getModifiers();
if ((content != null) && (content.length() > 0)
&& (mod & ActionEvent.ALT_MASK) == 0
&& (mod & ActionEvent.CTRL_MASK) == 0)
{
char c = content.charAt(0);
if ((c >= 0x20) && (c != 0x7F))
{
target.replaceSelection(content);
}
}
}
}
}
}
/**
* This action inserts a newline character into the document
* of the text component. This is typically triggered by hitting
* ENTER on the keyboard.
*/
public static class InsertBreakAction extends TextAction
{
/**
* Creates a new <code>InsertBreakAction</code>.
*/
public InsertBreakAction()
{
super(insertBreakAction);
}
/**
* Performs the <code>Action</code>.
*
* @param event the action event describing the user action
*/
public void actionPerformed(ActionEvent event)
{
JTextComponent t = getTextComponent(event);
if (t != null)
t.replaceSelection("\n");
}
}
/**
* Places content into the associated editor. If there currently is a
* selection, this selection is replaced.
*/
// FIXME: Figure out what this Action is supposed to do. Obviously text
// that is entered by the user is inserted through DefaultKeyTypedAction.
public static class InsertContentAction extends TextAction
{
/**
* Creates a new <code>InsertContentAction</code>.
*/
public InsertContentAction()
{
super(insertContentAction);
}
/**
* Performs the <code>Action</code>.
*
* @param event the action event describing the user action
*/
public void actionPerformed(ActionEvent event)
{
// FIXME: Figure out what this Action is supposed to do. Obviously text
// that is entered by the user is inserted through DefaultKeyTypedAction.
}
}
/**
* Inserts a TAB character into the text editor.
*/
public static class InsertTabAction extends TextAction
{
/**
* Creates a new <code>TabAction</code>.
*/
public InsertTabAction()
{
super(insertTabAction);
}
/**
* Performs the <code>Action</code>.
*
* @param event the action event describing the user action
*/
public void actionPerformed(ActionEvent event)
{
JTextComponent t = getTextComponent(event);
if (t != null)
t.replaceSelection("\t");
}
}
/**
* The serial version of DefaultEditorKit.
*/
private static final long serialVersionUID = 9017245433028523428L;
/**
* The name of the <code>Action</code> that moves the caret one character
* backwards.
*
* @see #getActions()
*/
public static final String backwardAction = "caret-backward";
/**
* The name of the <code>Action</code> that creates a beep in the speaker.
*
* @see #getActions()
*/
public static final String beepAction = "beep";
/**
* The name of the <code>Action</code> that moves the caret to the beginning
* of the <code>Document</code>.
*
* @see #getActions()
*/
public static final String beginAction = "caret-begin";
/**
* The name of the <code>Action</code> that moves the caret to the beginning
* of the current line.
*
* @see #getActions()
*/
public static final String beginLineAction = "caret-begin-line";
/**
* The name of the <code>Action</code> that moves the caret to the beginning
* of the current paragraph.
*
* @see #getActions()
*/
public static final String beginParagraphAction = "caret-begin-paragraph";
/**
* The name of the <code>Action</code> that moves the caret to the beginning
* of the current word.
*
* @see #getActions()
*/
public static final String beginWordAction = "caret-begin-word";
/**
* The name of the <code>Action</code> that copies the selected content
* into the system clipboard.
*
* @see #getActions()
*/
public static final String copyAction = "copy-to-clipboard";
/**
* The name of the <code>Action</code> that copies the selected content
* into the system clipboard and removes the selection.
*
* @see #getActions()
*/
public static final String cutAction = "cut-to-clipboard";
/**
* The name of the <code>Action</code> that is performed by default if
* a key is typed and there is no keymap entry.
*
* @see #getActions()
*/
public static final String defaultKeyTypedAction = "default-typed";
/**
* The name of the <code>Action</code> that deletes the character that
* follows the current caret position.
*
* @see #getActions()
*/
public static final String deleteNextCharAction = "delete-next";
/**
* The name of the <code>Action</code> that deletes the character that
* precedes the current caret position.
*
* @see #getActions()
*/
public static final String deletePrevCharAction = "delete-previous";
/**
* The name of the <code>Action</code> that moves the caret one line down.
*
* @see #getActions()
*/
public static final String downAction = "caret-down";
/**
* The name of the <code>Action</code> that moves the caret to the end
* of the <code>Document</code>.
*
* @see #getActions()
*/
public static final String endAction = "caret-end";
/**
* The name of the <code>Action</code> that moves the caret to the end
* of the current line.
*
* @see #getActions()
*/
public static final String endLineAction = "caret-end-line";
/**
* When a document is read and an CRLF is encountered, then we add a property
* with this name and a value of &quot;\r\n&quot;.
*/
public static final String EndOfLineStringProperty = "__EndOfLine__";
/**
* The name of the <code>Action</code> that moves the caret to the end
* of the current paragraph.
*
* @see #getActions()
*/
public static final String endParagraphAction = "caret-end-paragraph";
/**
* The name of the <code>Action</code> that moves the caret to the end
* of the current word.
*
* @see #getActions()
*/
public static final String endWordAction = "caret-end-word";
/**
* The name of the <code>Action</code> that moves the caret one character
* forward.
*
* @see #getActions()
*/
public static final String forwardAction = "caret-forward";
/**
* The name of the <code>Action</code> that inserts a line break.
*
* @see #getActions()
*/
public static final String insertBreakAction = "insert-break";
/**
* The name of the <code>Action</code> that inserts some content.
*
* @see #getActions()
*/
public static final String insertContentAction = "insert-content";
/**
* The name of the <code>Action</code> that inserts a TAB.
*
* @see #getActions()
*/
public static final String insertTabAction = "insert-tab";
/**
* The name of the <code>Action</code> that moves the caret to the beginning
* of the next word.
*
* @see #getActions()
*/
public static final String nextWordAction = "caret-next-word";
/**
* The name of the <code>Action</code> that moves the caret one page down.
*
* @see #getActions()
*/
public static final String pageDownAction = "page-down";
/**
* The name of the <code>Action</code> that moves the caret one page up.
*
* @see #getActions()
*/
public static final String pageUpAction = "page-up";
/**
* The name of the <code>Action</code> that copies content from the system
* clipboard into the document.
*
* @see #getActions()
*/
public static final String pasteAction = "paste-from-clipboard";
/**
* The name of the <code>Action</code> that moves the caret to the beginning
* of the previous word.
*
* @see #getActions()
*/
public static final String previousWordAction = "caret-previous-word";
/**
* The name of the <code>Action</code> that sets the editor in read only
* mode.
*
* @see #getActions()
*/
public static final String readOnlyAction = "set-read-only";
/**
* The name of the <code>Action</code> that selects the whole document.
*
* @see #getActions()
*/
public static final String selectAllAction = "select-all";
/**
* The name of the <code>Action</code> that moves the caret one character
* backwards, possibly extending the current selection.
*
* @see #getActions()
*/
public static final String selectionBackwardAction = "selection-backward";
/**
* The name of the <code>Action</code> that moves the caret to the beginning
* of the document, possibly extending the current selection.
*
* @see #getActions()
*/
public static final String selectionBeginAction = "selection-begin";
/**
* The name of the <code>Action</code> that moves the caret to the beginning
* of the current line, possibly extending the current selection.
*
* @see #getActions()
*/
public static final String selectionBeginLineAction = "selection-begin-line";
/**
* The name of the <code>Action</code> that moves the caret to the beginning
* of the current paragraph, possibly extending the current selection.
*
* @see #getActions()
*/
public static final String selectionBeginParagraphAction =
"selection-begin-paragraph";
/**
* The name of the <code>Action</code> that moves the caret to the beginning
* of the current word, possibly extending the current selection.
*
* @see #getActions()
*/
public static final String selectionBeginWordAction = "selection-begin-word";
/**
* The name of the <code>Action</code> that moves the caret one line down,
* possibly extending the current selection.
*
* @see #getActions()
*/
public static final String selectionDownAction = "selection-down";
/**
* The name of the <code>Action</code> that moves the caret to the end
* of the document, possibly extending the current selection.
*
* @see #getActions()
*/
public static final String selectionEndAction = "selection-end";
/**
* The name of the <code>Action</code> that moves the caret to the end
* of the current line, possibly extending the current selection.
*
* @see #getActions()
*/
public static final String selectionEndLineAction = "selection-end-line";
/**
* The name of the <code>Action</code> that moves the caret to the end
* of the current paragraph, possibly extending the current selection.
*
* @see #getActions()
*/
public static final String selectionEndParagraphAction =
"selection-end-paragraph";
/**
* The name of the <code>Action</code> that moves the caret to the end
* of the current word, possibly extending the current selection.
*
* @see #getActions()
*/
public static final String selectionEndWordAction = "selection-end-word";
/**
* The name of the <code>Action</code> that moves the caret one character
* forwards, possibly extending the current selection.
*
* @see #getActions()
*/
public static final String selectionForwardAction = "selection-forward";
/**
* The name of the <code>Action</code> that moves the caret to the beginning
* of the next word, possibly extending the current selection.
*
* @see #getActions()
*/
public static final String selectionNextWordAction = "selection-next-word";
/**
* The name of the <code>Action</code> that moves the caret to the beginning
* of the previous word, possibly extending the current selection.
*
* @see #getActions()
*/
public static final String selectionPreviousWordAction =
"selection-previous-word";
/**
* The name of the <code>Action</code> that moves the caret one line up,
* possibly extending the current selection.
*
* @see #getActions()
*/
public static final String selectionUpAction = "selection-up";
/**
* The name of the <code>Action</code> that selects the line around the
* caret.
*
* @see #getActions()
*/
public static final String selectLineAction = "select-line";
/**
* The name of the <code>Action</code> that selects the paragraph around the
* caret.
*
* @see #getActions()
*/
public static final String selectParagraphAction = "select-paragraph";
/**
* The name of the <code>Action</code> that selects the word around the
* caret.
*
* @see #getActions()
*/
public static final String selectWordAction = "select-word";
/**
* The name of the <code>Action</code> that moves the caret one line up.
*
* @see #getActions()
*/
public static final String upAction = "caret-up";
/**
* The name of the <code>Action</code> that sets the editor in read-write
* mode.
*
* @see #getActions()
*/
public static final String writableAction = "set-writable";
/**
* Creates a new <code>DefaultEditorKit</code>.
*/
public DefaultEditorKit()
{
// Nothing to do here.
}
/**
* The <code>Action</code>s that are supported by the
* <code>DefaultEditorKit</code>.
*/
private static Action[] defaultActions =
new Action[] {
// These classes are public because they are so in the RI.
new BeepAction(),
new CopyAction(),
new CutAction(),
new DefaultKeyTypedAction(),
new InsertBreakAction(),
new InsertContentAction(),
new InsertTabAction(),
new PasteAction(),
// These are (package-)private inner classes.
new DeleteNextCharAction(),
new DeletePrevCharAction(),
new BeginLineAction(),
new SelectionBeginLineAction(),
new EndLineAction(),
new SelectionEndLineAction(),
new BackwardAction(),
new SelectionBackwardAction(),
new ForwardAction(),
new SelectionForwardAction(),
new UpAction(),
new SelectionUpAction(),
new DownAction(),
new SelectionDownAction(),
new NextWordAction(),
new SelectionNextWordAction(),
new PreviousWordAction(),
new SelectionPreviousWordAction(),
new BeginAction(),
new SelectionBeginAction(),
new EndAction(),
new SelectionEndAction(),
new BeginWordAction(),
new SelectionBeginWordAction(),
new EndWordAction(),
new SelectionEndWordAction(),
new SelectAllAction(),
new SelectLineAction(),
new SelectWordAction()
};
/**
* Creates the <code>Caret</code> for this <code>EditorKit</code>. This
* returns a {@link DefaultCaret} in this case.
*
* @return the <code>Caret</code> for this <code>EditorKit</code>
*/
public Caret createCaret()
{
return new DefaultCaret();
}
/**
* Creates the default {@link Document} that this <code>EditorKit</code>
* supports. This is a {@link PlainDocument} in this case.
*
* @return the default {@link Document} that this <code>EditorKit</code>
* supports
*/
public Document createDefaultDocument()
{
return new PlainDocument();
}
/**
* Returns the <code>Action</code>s supported by this <code>EditorKit</code>.
*
* @return the <code>Action</code>s supported by this <code>EditorKit</code>
*/
public Action[] getActions()
{
return defaultActions;
}
/**
* Returns the content type that this <code>EditorKit</code> supports.
* The <code>DefaultEditorKit</code> supports the content type
* <code>text/plain</code>.
*
* @return the content type that this <code>EditorKit</code> supports
*/
public String getContentType()
{
return "text/plain";
}
/**
* Returns a {@link ViewFactory} that is able to create {@link View}s for
* the <code>Element</code>s that are used in this <code>EditorKit</code>'s
* model. This returns null which lets the UI of the text component supply
* <code>View</code>s.
*
* @return a {@link ViewFactory} that is able to create {@link View}s for
* the <code>Element</code>s that are used in this
* <code>EditorKit</code>'s model
*/
public ViewFactory getViewFactory()
{
return null;
}
/**
* Reads a document of the supported content type from an {@link InputStream}
* into the actual {@link Document} object.
*
* @param in the stream from which to read the document
* @param document the document model into which the content is read
* @param offset the offset inside to document where the content is inserted
*
* @throws BadLocationException if <code>offset</code> is an invalid location
* inside <code>document</code>
* @throws IOException if something goes wrong while reading from
* <code>in</code>
*/
public void read(InputStream in, Document document, int offset)
throws BadLocationException, IOException
{
read(new InputStreamReader(in), document, offset);
}
/**
* Reads a document of the supported content type from a {@link Reader}
* into the actual {@link Document} object.
*
* @param in the reader from which to read the document
* @param document the document model into which the content is read
* @param offset the offset inside to document where the content is inserted
*
* @throws BadLocationException if <code>offset</code> is an invalid location
* inside <code>document</code>
* @throws IOException if something goes wrong while reading from
* <code>in</code>
*/
public void read(Reader in, Document document, int offset)
throws BadLocationException, IOException
{
BufferedReader reader = new BufferedReader(in);
String line;
CPStringBuilder content = new CPStringBuilder();
while ((line = reader.readLine()) != null)
{
content.append(line);
content.append("\n");
}
document.insertString(offset, content.substring(0, content.length() - 1),
SimpleAttributeSet.EMPTY);
}
/**
* Writes the <code>Document</code> (or a fragment of the
* <code>Document</code>) to an {@link OutputStream} in the
* supported content type format.
*
* @param out the stream to write to
* @param document the document that should be written out
* @param offset the beginning offset from where to write
* @param len the length of the fragment to write
*
* @throws BadLocationException if <code>offset</code> or
* <code>offset + len</code>is an invalid location inside
* <code>document</code>
* @throws IOException if something goes wrong while writing to
* <code>out</code>
*/
public void write(OutputStream out, Document document, int offset, int len)
throws BadLocationException, IOException
{
write(new OutputStreamWriter(out), document, offset, len);
}
/**
* Writes the <code>Document</code> (or a fragment of the
* <code>Document</code>) to a {@link Writer} in the
* supported content type format.
*
* @param out the writer to write to
* @param document the document that should be written out
* @param offset the beginning offset from where to write
* @param len the length of the fragment to write
*
* @throws BadLocationException if <code>offset</code> is an
* invalid location inside <code>document</code>.
* @throws IOException if something goes wrong while writing to
* <code>out</code>
*/
public void write(Writer out, Document document, int offset, int len)
throws BadLocationException, IOException
{
// Throw a BLE if offset is invalid
if (offset < 0 || offset > document.getLength())
throw new BadLocationException("Tried to write to invalid location",
offset);
// If they gave an overly large len, just adjust it
if (offset + len > document.getLength())
len = document.getLength() - offset;
out.write(document.getText(offset, len));
}
}