String.java, [...]: Merge from GNU Classpath HEAD.

2006-06-09  Thomas Fitzsimmons  <fitzsim@redhat.com>

	* java/lang/String.java, classpath/native/jni/classpath/jcl.h,
	classpath/native/jni/qt-peer/eventmethods.h,
	classpath/native/jni/qt-peer/qtmenupeer.cpp,
	classpath/native/jni/qt-peer/.cvsignore,
	classpath/native/jni/gtk-peer/gdkdisplay.h,
	classpath/native/jni/gtk-peer/cairographics2d.h,
	classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c,
	classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c,
	classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c,
	classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c,
	classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.c,
	classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c,
	classpath/native/jni/gtk-peer/.cvsignore,
	classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c,
	classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c,
	classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c,
	classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.c,
	classpath/native/jni/gtk-peer/gtkpeer.h,
	classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c,
	classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c,
	classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.c,
	classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkTextLayout.c,
	classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFramePeer.c,
	classpath/native/jni/gtk-peer/Makefile.am,
	classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c,
	classpath/native/jawt/Makefile.am,
	classpath/native/jawt/.cvsignore,
	classpath/native/target/Linux/Makefile.in,
	classpath/native/plugin/gcjwebplugin.cc,
	classpath/native/plugin/Makefile.am,
	classpath/native/plugin/.cvsignore,
	classpath/resource/Makefile.in,
	classpath/gnu/java/awt/peer/gtk/VolatileImageGraphics.java,
	classpath/gnu/java/awt/peer/gtk/CairoGraphics2D.java,
	classpath/gnu/java/awt/peer/gtk/CairoSurface.java,
	classpath/gnu/java/awt/peer/gtk/GdkFontPeer.java,
	classpath/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java,
	classpath/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java,
	classpath/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java,
	classpath/gnu/java/awt/peer/gtk/GdkGraphics2D.java,
	classpath/gnu/java/awt/peer/gtk/ComponentGraphicsCopy.java,
	classpath/gnu/java/awt/peer/gtk/GtkComponentPeer.java,
	classpath/gnu/java/awt/peer/gtk/GdkGraphics.java,
	classpath/gnu/java/awt/peer/gtk/GtkToolkit.java,
	classpath/gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java,
	classpath/gnu/java/awt/peer/gtk/BufferedImageGraphics.java,
	classpath/gnu/java/awt/peer/gtk/GdkTextLayout.java,
	classpath/gnu/java/awt/peer/gtk/GdkGraphicsConfiguration.java,
	classpath/gnu/java/awt/peer/gtk/ComponentGraphics.java,
	classpath/gnu/java/awt/peer/gtk/CairoSurfaceGraphics.java,
	classpath/gnu/java/awt/peer/gtk/GtkImage.java,
	classpath/gnu/java/awt/peer/gtk/GtkVolatileImage.java,
	classpath/gnu/java/awt/peer/gtk/GdkGlyphVector.java,
	classpath/gnu/java/awt/peer/gtk/GtkCanvasPeer.java,
	classpath/gnu/java/awt/peer/swing/SwingContainerPeer.java,
	classpath/gnu/java/awt/peer/swing/SwingComponent.java,
	classpath/gnu/java/awt/peer/swing/SwingTextFieldPeer.java,
	classpath/gnu/java/awt/peer/swing/SwingMenuBarPeer.java,
	classpath/gnu/java/awt/peer/swing/SwingFramePeer.java,
	classpath/gnu/java/awt/peer/swing/SwingComponentPeer.java,
	classpath/gnu/java/awt/peer/swing/SwingWindowPeer.java,
	classpath/gnu/java/awt/print/JavaPrinterJob.java,
	classpath/gnu/java/awt/print/PostScriptGraphics2D.java,
	classpath/gnu/java/awt/print/SpooledDocument.java,
	classpath/gnu/java/awt/print/JavaPrinterGraphics.java,
	classpath/gnu/java/awt/BitwiseXORComposite.java,
	classpath/gnu/java/awt/font/GNUGlyphVector.java,
	classpath/gnu/java/awt/font/opentype/NameDecoder.java,
	classpath/gnu/java/awt/java2d/RasterGraphics.java,
	classpath/gnu/java/awt/java2d/TexturePaintContext.java,
	classpath/gnu/java/awt/java2d/PolyEdge.java,
	classpath/gnu/java/awt/java2d/AbstractGraphics2D.java,
	classpath/gnu/java/awt/java2d/AlphaCompositeContext.java,
	classpath/gnu/java/awt/java2d/ImagePaint.java,
	classpath/gnu/java/awt/Buffers.java,
	classpath/gnu/classpath/Configuration.java.in,
	classpath/gnu/javax/swing/text/html/CombinedAttributes.java,
	classpath/gnu/javax/swing/text/html/CharacterAttributeTranslator.java,
	classpath/gnu/javax/swing/text/html/parser/htmlAttributeSet.java,
	classpath/gnu/javax/swing/text/html/parser/SmallHtmlAttributeSet.java,
	classpath/gnu/javax/swing/text/html/ImageViewIconFactory.java,
	classpath/tools/toolwrapper.c,
	classpath/tools/gnu/classpath/tools/native2ascii/Native2ASCII.java,
	classpath/tools/gnu/classpath/tools/native2ascii/Messages.java,
	classpath/tools/gnu/classpath/tools/getopt/FileArgumentCallback.java,
	classpath/tools/gnu/classpath/tools/getopt/OptionGroup.java,
	classpath/tools/gnu/classpath/tools/getopt/OptionException.java,
	classpath/tools/gnu/classpath/tools/getopt/Messages.java,
	classpath/tools/gnu/classpath/tools/getopt/Option.java,
	classpath/tools/gnu/classpath/tools/getopt/Parser.java,
	classpath/tools/gnu/classpath/tools/getopt/ClasspathToolParser.java,
	classpath/tools/gnu/classpath/tools/jarsigner/JarSigner.java,
	classpath/tools/gnu/classpath/tools/jarsigner/Main.java,
	classpath/tools/gnu/classpath/tools/jarsigner/Messages.java,
	classpath/tools/gnu/classpath/tools/jarsigner/package.html,
	classpath/tools/gnu/classpath/tools/keytool/ListCmd.java,
	classpath/tools/gnu/classpath/tools/keytool/StorePasswdCmd.java,
	classpath/tools/gnu/classpath/tools/keytool/ExportCmd.java,
	classpath/tools/gnu/classpath/tools/keytool/GenKeyCmd.java,
	classpath/tools/gnu/classpath/tools/keytool/Messages.java,
	classpath/tools/gnu/classpath/tools/keytool/package.html,
	classpath/tools/gnu/classpath/tools/keytool/Command.java,
	classpath/tools/gnu/classpath/tools/keytool/IdentityDBCmd.java,
	classpath/tools/gnu/classpath/tools/keytool/Main.java,
	classpath/tools/gnu/classpath/tools/keytool/DeleteCmd.java,
	classpath/tools/gnu/classpath/tools/keytool/CertReqCmd.java,
	classpath/tools/gnu/classpath/tools/keytool/SelfCertCmd.java,
	classpath/tools/gnu/classpath/tools/keytool/KeyCloneCmd.java,
	classpath/tools/gnu/classpath/tools/keytool/KeyPasswdCmd.java,
	classpath/tools/gnu/classpath/tools/keytool/ImportCmd.java,
	classpath/tools/gnu/classpath/tools/keytool/PrintCertCmd.java,
	classpath/tools/gnu/classpath/tools/rmi/registry/package.html,
	classpath/tools/gnu/classpath/tools/rmi/RMIC.txt,
	classpath/tools/gnu/classpath/tools/rmi/RMIC.java,
	classpath/tools/gnu/classpath/tools/appletviewer/ErrorApplet.java,
	classpath/tools/gnu/classpath/tools/appletviewer/AppletClassLoader.java,
	classpath/tools/gnu/classpath/tools/appletviewer/CommonAppletContext.java,
	classpath/tools/gnu/classpath/tools/appletviewer/StandaloneAppletContext.java,
	classpath/tools/gnu/classpath/tools/appletviewer/AppletSecurityManager.java,
	classpath/tools/gnu/classpath/tools/appletviewer/PluginAppletContext.java,
	classpath/tools/gnu/classpath/tools/appletviewer/AppletWarning.java,
	classpath/tools/gnu/classpath/tools/appletviewer/StandaloneAppletViewer.java,
	classpath/tools/gnu/classpath/tools/appletviewer/AppletTag.java,
	classpath/tools/gnu/classpath/tools/appletviewer/ConsoleDialog.java,
	classpath/tools/gnu/classpath/tools/appletviewer/Main.java,
	classpath/tools/gnu/classpath/tools/appletviewer/StandaloneAppletWindow.java,
	classpath/tools/gnu/classpath/tools/appletviewer/PluginAppletViewer.java,
	classpath/tools/gnu/classpath/tools/appletviewer/TagParser.java,
	classpath/tools/gnu/classpath/tools/appletviewer/PluginAppletWindow.java,
	classpath/tools/gnu/classpath/tools/appletviewer/CommonAppletStub.java,
	classpath/tools/gnu/classpath/tools/serialver/Messages.java,
	classpath/tools/gnu/classpath/tools/serialver/SerialVer.java,
	classpath/tools/gnu/classpath/tools/jar/Creator.java,
	classpath/tools/gnu/classpath/tools/jar/Entry.java,
	classpath/tools/gnu/classpath/tools/jar/Lister.java,
	classpath/tools/gnu/classpath/tools/jar/Main.java,
	classpath/tools/gnu/classpath/tools/jar/Updater.java,
	classpath/tools/gnu/classpath/tools/jar/Messages.java,
	classpath/tools/gnu/classpath/tools/jar/Extractor.java,
	classpath/tools/gnu/classpath/tools/jar/Action.java,
	classpath/tools/gnu/classpath/tools/jar/Indexer.java,
	classpath/tools/gnu/classpath/tools/jar/WorkSet.java,
	classpath/tools/gnu/classpath/tools/giop/GRMIC.txt,
	classpath/tools/gnu/classpath/tools/giop/grmic/GiopRmicCompiler.java,
	classpath/tools/gnu/classpath/tools/giop/GRMIC.java,
	classpath/tools/Makefile.am, classpath/tools/jarsigner.in,
	classpath/tools/keytool.in, classpath/tools/appletviewer.in,
	classpath/tools/.cvsignore, classpath/configure.ac,
	classpath/javax/swing/JTabbedPane.java,
	classpath/javax/swing/AbstractButton.java,
	classpath/javax/swing/JViewport.java,
	classpath/javax/swing/KeyboardManager.java,
	classpath/javax/swing/JMenuItem.java,
	classpath/javax/swing/JMenuBar.java,
	classpath/javax/swing/MenuSelectionManager.java,
	classpath/javax/swing/JOptionPane.java,
	classpath/javax/swing/JSpinner.java,
	classpath/javax/swing/JCheckBoxMenuItem.java,
	classpath/javax/swing/JEditorPane.java,
	classpath/javax/swing/JFormattedTextField.java,
	classpath/javax/swing/JTree.java,
	classpath/javax/swing/CellRendererPane.java,
	classpath/javax/swing/JScrollPane.java,
	classpath/javax/swing/tree/VariableHeightLayoutCache.java,
	classpath/javax/swing/tree/TreeNode.java,
	classpath/javax/swing/tree/FixedHeightLayoutCache.java,
	classpath/javax/swing/tree/DefaultTreeCellEditor.java,
	classpath/javax/swing/tree/TreePath.java,
	classpath/javax/swing/tree/RowMapper.java,
	classpath/javax/swing/tree/DefaultMutableTreeNode.java,
	classpath/javax/swing/tree/DefaultTreeModel.java,
	classpath/javax/swing/tree/AbstractLayoutCache.java,
	classpath/javax/swing/tree/TreeSelectionModel.java,
	classpath/javax/swing/tree/DefaultTreeSelectionModel.java,
	classpath/javax/swing/tree/DefaultTreeCellRenderer.java,
	classpath/javax/swing/tree/ExpandVetoException.java,
	classpath/javax/swing/JList.java,
	classpath/javax/swing/table/JTableHeader.java,
	classpath/javax/swing/table/AbstractTableModel.java,
	classpath/javax/swing/table/DefaultTableModel.java,
	classpath/javax/swing/table/TableCellEditor.java,
	classpath/javax/swing/table/TableCellRenderer.java,
	classpath/javax/swing/ProgressMonitor.java,
	classpath/javax/swing/JToolBar.java,
	classpath/javax/swing/TransferHandler.java,
	classpath/javax/swing/DefaultCellEditor.java,
	classpath/javax/swing/DefaultButtonModel.java,
	classpath/javax/swing/JLayeredPane.java,
	classpath/javax/swing/text/DefaultEditorKit.java,
	classpath/javax/swing/text/DefaultCaret.java,
	classpath/javax/swing/text/FieldView.java,
	classpath/javax/swing/text/JTextComponent.java,
	classpath/javax/swing/text/TextAction.java,
	classpath/javax/swing/text/StyleContext.java,
	classpath/javax/swing/text/html/HTMLDocument.java,
	classpath/javax/swing/text/html/MinimalHTMLWriter.java,
	classpath/javax/swing/text/html/ImageView.java,
	classpath/javax/swing/text/html/HTMLEditorKit.java,
	classpath/javax/swing/text/AbstractWriter.java,
	classpath/javax/swing/text/GapContent.java,
	classpath/javax/swing/text/Utilities.java,
	classpath/javax/swing/text/PlainView.java,
	classpath/javax/swing/UIManager.java,
	classpath/javax/swing/JSplitPane.java,
	classpath/javax/swing/JComponent.java,
	classpath/javax/swing/SwingUtilities.java,
	classpath/javax/swing/border/AbstractBorder.java,
	classpath/javax/swing/border/CompoundBorder.java,
	classpath/javax/swing/border/TitledBorder.java,
	classpath/javax/swing/border/MatteBorder.java,
	classpath/javax/swing/border/BevelBorder.java,
	classpath/javax/swing/RepaintManager.java,
	classpath/javax/swing/JTable.java,
	classpath/javax/swing/UIDefaults.java,
	classpath/javax/swing/DefaultDesktopManager.java,
	classpath/javax/swing/JMenu.java,
	classpath/javax/swing/JLabel.java,
	classpath/javax/swing/JSlider.java,
	classpath/javax/swing/plaf/basic/BasicToolBarUI.java,
	classpath/javax/swing/plaf/basic/BasicButtonUI.java,
	classpath/javax/swing/plaf/basic/BasicOptionPaneUI.java,
	classpath/javax/swing/plaf/basic/BasicTextAreaUI.java,
	classpath/javax/swing/plaf/basic/BasicToggleButtonUI.java,
	classpath/javax/swing/plaf/basic/BasicSpinnerUI.java,
	classpath/javax/swing/plaf/basic/BasicSliderUI.java,
	classpath/javax/swing/plaf/basic/BasicTabbedPaneUI.java,
	classpath/javax/swing/plaf/basic/BasicComboPopup.java,
	classpath/javax/swing/plaf/basic/BasicCheckBoxUI.java,
	classpath/javax/swing/plaf/basic/BasicInternalFrameUI.java,
	classpath/javax/swing/plaf/basic/BasicProgressBarUI.java,
	classpath/javax/swing/plaf/basic/BasicRadioButtonUI.java,
	classpath/javax/swing/plaf/basic/BasicPanelUI.java,
	classpath/javax/swing/plaf/basic/BasicSplitPaneUI.java,
	classpath/javax/swing/plaf/basic/BasicTreeUI.java,
	classpath/javax/swing/plaf/basic/BasicTableHeaderUI.java,
	classpath/javax/swing/plaf/basic/BasicFileChooserUI.java,
	classpath/javax/swing/plaf/basic/BasicScrollPaneUI.java,
	classpath/javax/swing/plaf/basic/BasicComboBoxUI.java,
	classpath/javax/swing/plaf/basic/BasicListUI.java,
	classpath/javax/swing/plaf/basic/BasicIconFactory.java,
	classpath/javax/swing/plaf/basic/BasicTextUI.java,
	classpath/javax/swing/plaf/basic/BasicLookAndFeel.java,
	classpath/javax/swing/plaf/basic/BasicDirectoryModel.java,
	classpath/javax/swing/plaf/basic/BasicRootPaneUI.java,
	classpath/javax/swing/plaf/basic/BasicTableUI.java,
	classpath/javax/swing/plaf/basic/SharedUIDefaults.java,
	classpath/javax/swing/plaf/multi/MultiComboBoxUI.java,
	classpath/javax/swing/plaf/multi/MultiListUI.java,
	classpath/javax/swing/plaf/multi/MultiSplitPaneUI.java,
	classpath/javax/swing/plaf/multi/MultiFileChooserUI.java,
	classpath/javax/swing/plaf/multi/MultiOptionPaneUI.java,
	classpath/javax/swing/plaf/multi/MultiTabbedPaneUI.java,
	classpath/javax/swing/plaf/multi/MultiLookAndFeel.java,
	classpath/javax/swing/plaf/metal/MetalSliderUI.java,
	classpath/javax/swing/plaf/metal/MetalIconFactory.java,
	classpath/javax/swing/plaf/metal/MetalComboBoxIcon.java,
	classpath/javax/swing/plaf/metal/MetalTabbedPaneUI.java,
	classpath/javax/swing/plaf/metal/MetalLookAndFeel.java,
	classpath/javax/swing/plaf/metal/MetalCheckBoxUI.java,
	classpath/javax/swing/plaf/metal/MetalSeparatorUI.java,
	classpath/javax/swing/plaf/metal/MetalBorders.java,
	classpath/javax/swing/plaf/metal/MetalSplitPaneDivider.java,
	classpath/javax/swing/plaf/metal/MetalScrollBarUI.java,
	classpath/javax/swing/plaf/metal/MetalRootPaneUI.java,
	classpath/javax/swing/plaf/metal/MetalInternalFrameUI.java,
	classpath/javax/swing/plaf/metal/MetalRadioButtonUI.java,
	classpath/javax/swing/plaf/metal/MetalToolTipUI.java,
	classpath/javax/swing/plaf/metal/MetalInternalFrameTitlePane.java,
	classpath/javax/swing/plaf/metal/MetalFileChooserUI.java,
	classpath/javax/swing/plaf/metal/MetalUtils.java,
	classpath/javax/swing/plaf/metal/MetalComboBoxButton.java,
	classpath/javax/swing/plaf/metal/MetalPopupMenuSeparatorUI.java,
	classpath/javax/swing/plaf/metal/MetalButtonUI.java,
	classpath/javax/swing/JPopupMenu.java,
	classpath/javax/swing/JProgressBar.java,
	classpath/javax/swing/WindowConstants.java,
	classpath/javax/swing/JFrame.java,
	classpath/javax/swing/JFileChooser.java,
	classpath/javax/swing/JComboBox.java,
	classpath/javax/swing/event/EventListenerList.java,
	classpath/javax/swing/ListSelectionModel.java,
	classpath/javax/swing/JScrollBar.java,
	classpath/java/text/SimpleDateFormat.java,
	classpath/java/text/NumberFormat.java,
	classpath/java/text/class-dependencies.conf,
	classpath/java/awt/image/ColorModel.java,
	classpath/java/awt/image/BufferedImage.java,
	classpath/java/awt/Window.java,
	classpath/java/awt/ContainerOrderFocusTraversalPolicy.java,
	classpath/java/awt/LightweightDispatcher.java,
	classpath/java/awt/EventDispatchThread.java,
	classpath/java/awt/BasicStroke.java,
	classpath/java/awt/ColorPaintContext.java,
	classpath/java/awt/Container.java,
	classpath/java/awt/TexturePaint.java,
	classpath/java/awt/Component.java, classpath/java/awt/Font.java,
	classpath/java/awt/GraphicsConfiguration.java,
	classpath/java/awt/DefaultKeyboardFocusManager.java,
	classpath/java/awt/print/PrinterJob.java,
	classpath/java/awt/im/InputContext.java,
	classpath/java/awt/dnd/DragGestureRecognizer.java,
	classpath/java/awt/Toolkit.java,
	classpath/java/awt/font/GraphicAttribute.java,
	classpath/java/awt/font/ImageGraphicAttribute.java,
	classpath/java/awt/font/GlyphVector.java,
	classpath/java/awt/font/GlyphMetrics.java,
	classpath/java/awt/font/ShapeGraphicAttribute.java,
	classpath/java/awt/Graphics2D.java,
	classpath/include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h,
	classpath/include/gnu_java_awt_peer_gtk_ComponentGraphics.h,
	classpath/include/gnu_java_awt_peer_gtk_CairoGraphics2D.h,
	classpath/include/gnu_java_awt_peer_gtk_FreetypeGlyphVector.h,
	classpath/include/gnu_java_awt_peer_gtk_GtkCanvasPeer.h,
	classpath/include/config.h.in,
	classpath/include/gnu_java_awt_peer_gtk_GdkTextLayout.h,
	classpath/include/gnu_java_awt_peer_gtk_GtkComponentPeer.h,
	classpath/include/gnu_java_awt_peer_gtk_GdkFontPeer.h,
	classpath/include/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.h,
	classpath/include/gnu_java_awt_peer_gtk_GtkVolatileImage.h,
	classpath/include/gnu_java_awt_peer_gtk_GtkImage.h,
	classpath/include/gnu_java_awt_peer_gtk_CairoSurface.h,
	classpath/include/gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.h:
	Merge from GNU Classpath HEAD.

From-SVN: r114510
This commit is contained in:
Thomas Fitzsimmons 2006-06-09 16:07:07 +00:00 committed by Thomas Fitzsimmons
parent 6c65d7577c
commit 02440ca432
360 changed files with 34743 additions and 9337 deletions

View file

@ -52,6 +52,7 @@ 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>
@ -60,6 +61,7 @@ import javax.swing.Action;
*
* @author original author unknown
* @author Roman Kennke (roman@kennke.org)
* @author Robert Schuster (robertschuster@fsfe.org)
*/
public class DefaultEditorKit extends EditorKit
{
@ -123,6 +125,122 @@ public class DefaultEditorKit extends EditorKit
}
}
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
{
@ -258,6 +376,32 @@ public class DefaultEditorKit extends EditorKit
}
}
}
static class SelectionBeginLineAction
extends TextAction
{
SelectionBeginLineAction()
{
super(selectionBeginLineAction);
}
public void actionPerformed(ActionEvent event)
{
JTextComponent t = getTextComponent(event);
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
@ -270,324 +414,222 @@ public class DefaultEditorKit extends EditorKit
public void actionPerformed(ActionEvent event)
{
JTextComponent t = getTextComponent(event);
try
{
Point p = t.modelToView(t.getCaret().getDot()).getLocation();
int cur = t.getCaretPosition();
int y = p.y;
int length = t.getDocument().getLength();
while (y == p.y && cur < length)
y = t.modelToView(++cur).getLocation().y;
if (cur != length)
cur--;
Caret c = t.getCaret();
c.moveDot(cur);
c.setMagicCaretPosition(t.modelToView(cur).getLocation());
}
catch (BadLocationException ble)
{
// Nothing to do here
}
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 SelectionBeginLineAction
extends TextAction
static class SelectLineAction extends TextAction
{
SelectionBeginLineAction()
SelectLineAction()
{
super(selectionBeginLineAction);
super(selectLineAction);
}
public void actionPerformed(ActionEvent event)
{
JTextComponent t = getTextComponent(event);
Caret c = t.getCaret();
try
{
// TODO: There is a more efficent solution, but
// viewToModel doesn't work properly.
Point p = t.modelToView(t.getCaret().getDot()).getLocation();
int cur = t.getCaretPosition();
int y = p.y;
while (y == p.y && cur > 0)
y = t.modelToView(--cur).getLocation().y;
if (cur != 0)
cur++;
Caret c = t.getCaret();
c.moveDot(cur);
c.setMagicCaretPosition(t.modelToView(cur).getLocation());
}
catch (BadLocationException ble)
{
// Do nothing here.
}
{
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);
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
extends TextAction.VerticalMovementAction
{
SelectionDownAction()
{
super(selectionDownAction);
super(selectionDownAction, SwingConstants.SOUTH);
}
public void actionPerformed(ActionEvent event)
protected void actionPerformedImpl(Caret c, int offs)
{
JTextComponent t = getTextComponent(event);
try
{
if (t != null)
{
Caret c = t.getCaret();
// The magic caret position may be null when the caret
// has not moved yet.
Point mcp = c.getMagicCaretPosition();
int x = (mcp != null) ? mcp.x : 0;
int pos = Utilities.getPositionBelow(t, t.getCaretPosition(), x);
if (pos > -1)
t.moveCaretPosition(pos);
}
}
catch(BadLocationException ble)
{
// FIXME: Swallowing allowed?
}
c.moveDot(offs);
}
}
static class SelectionUpAction
extends TextAction
extends TextAction.VerticalMovementAction
{
SelectionUpAction()
{
super(selectionUpAction);
super(selectionUpAction, SwingConstants.NORTH);
}
public void actionPerformed(ActionEvent event)
protected void actionPerformedImpl(Caret c, int offs)
{
JTextComponent t = getTextComponent(event);
try
{
if (t != null)
{
Caret c = t.getCaret();
// The magic caret position may be null when the caret
// has not moved yet.
Point mcp = c.getMagicCaretPosition();
int x = (mcp != null) ? mcp.x : 0;
int pos = Utilities.getPositionAbove(t, t.getCaretPosition(), x);
if (pos > -1)
t.moveCaretPosition(pos);
}
}
catch(BadLocationException ble)
{
// FIXME: Swallowing allowed?
}
c.moveDot(offs);
}
}
static class SelectionForwardAction
extends TextAction
extends TextAction.HorizontalMovementAction
{
SelectionForwardAction()
{
super(selectionForwardAction);
super(selectionForwardAction, SwingConstants.EAST);
}
public void actionPerformed(ActionEvent event)
protected void actionPerformedImpl(Caret c, int offs)
{
JTextComponent t = getTextComponent(event);
if (t != null)
{
int offs = t.getCaretPosition() + 1;
if(offs <= t.getDocument().getLength())
{
Caret c = t.getCaret();
c.moveDot(offs);
try
{
c.setMagicCaretPosition(t.modelToView(offs).getLocation());
}
catch(BadLocationException ble)
{
// Can't happen.
}
}
}
c.moveDot(offs);
}
}
static class SelectionBackwardAction
extends TextAction
extends TextAction.HorizontalMovementAction
{
SelectionBackwardAction()
{
super(selectionBackwardAction);
super(selectionBackwardAction, SwingConstants.WEST);
}
public void actionPerformed(ActionEvent event)
protected void actionPerformedImpl(Caret c, int offs)
{
JTextComponent t = getTextComponent(event);
if (t != null)
{
int offs = t.getCaretPosition() - 1;
if(offs >= 0)
{
Caret c = t.getCaret();
c.moveDot(offs);
try
{
c.setMagicCaretPosition(t.modelToView(offs).getLocation());
}
catch(BadLocationException ble)
{
// Can't happen.
}
}
}
c.moveDot(offs);
}
}
static class DownAction
extends TextAction
extends TextAction.VerticalMovementAction
{
DownAction()
{
super(downAction);
super(downAction, SwingConstants.SOUTH);
}
public void actionPerformed(ActionEvent event)
protected void actionPerformedImpl(Caret c, int offs)
{
JTextComponent t = getTextComponent(event);
try
{
if (t != null)
{
Caret c = t.getCaret();
// The magic caret position may be null when the caret
// has not moved yet.
Point mcp = c.getMagicCaretPosition();
int x = (mcp != null) ? mcp.x : 0;
int pos = Utilities.getPositionBelow(t, t.getCaretPosition(), x);
if (pos > -1)
t.setCaretPosition(pos);
}
}
catch(BadLocationException ble)
{
// FIXME: Swallowing allowed?
}
c.setDot(offs);
}
}
static class UpAction
extends TextAction
extends TextAction.VerticalMovementAction
{
UpAction()
{
super(upAction);
super(upAction, SwingConstants.NORTH);
}
public void actionPerformed(ActionEvent event)
protected void actionPerformedImpl(Caret c, int offs)
{
JTextComponent t = getTextComponent(event);
try
{
if (t != null)
{
Caret c = t.getCaret();
// The magic caret position may be null when the caret
// has not moved yet.
Point mcp = c.getMagicCaretPosition();
int x = (mcp != null) ? mcp.x : 0;
int pos = Utilities.getPositionAbove(t, t.getCaretPosition(), x);
if (pos > -1)
t.setCaretPosition(pos);
}
}
catch(BadLocationException ble)
{
// FIXME: Swallowing allowed?
}
c.setDot(offs);
}
}
static class ForwardAction
extends TextAction
extends TextAction.HorizontalMovementAction
{
ForwardAction()
{
super(forwardAction);
super(forwardAction, SwingConstants.EAST);
}
public void actionPerformed(ActionEvent event)
protected void actionPerformedImpl(Caret c, int offs)
{
JTextComponent t = getTextComponent(event);
if (t != null)
{
int offs = t.getCaretPosition() + 1;
if (offs <= t.getDocument().getLength())
{
Caret c = t.getCaret();
c.setDot(offs);
try
{
c.setMagicCaretPosition(t.modelToView(offs).getLocation());
}
catch (BadLocationException ble)
{
// Should not happen.
}
}
}
c.setDot(offs);
}
}
static class BackwardAction
extends TextAction
extends TextAction.HorizontalMovementAction
{
BackwardAction()
{
super(backwardAction);
super(backwardAction, SwingConstants.WEST);
}
public void actionPerformed(ActionEvent event)
protected void actionPerformedImpl(Caret c, int offs)
{
JTextComponent t = getTextComponent(event);
if (t != null)
{
int offs = t.getCaretPosition() - 1;
if (offs >= 0)
{
Caret c = t.getCaret();
c.setDot(offs);
try
{
c.setMagicCaretPosition(t.modelToView(offs).getLocation());
}
catch (BadLocationException ble)
{
// Should not happen.
}
}
}
c.setDot(offs);
}
}
static class DeletePrevCharAction
@ -720,6 +762,55 @@ public class DefaultEditorKit extends EditorKit
}
}
static class BeginAction extends TextAction
{
BeginAction()
{
super(beginAction);
}
public void actionPerformed(ActionEvent event)
{
JTextComponent t = getTextComponent(event);
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);
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.
*
@ -867,8 +958,8 @@ public class DefaultEditorKit extends EditorKit
// first we filter the following events:
// - control characters
// - key events with the ALT modifier (FIXME: filter that too!)
char c = event.getActionCommand().charAt(0);
if (Character.isISOControl(c))
int cp = event.getActionCommand().codePointAt(0);
if (Character.isISOControl(cp))
return;
JTextComponent t = getTextComponent(event);
@ -1345,8 +1436,6 @@ public class DefaultEditorKit extends EditorKit
* The <code>Action</code>s that are supported by the
* <code>DefaultEditorKit</code>.
*/
// TODO: All these inner classes look ugly. Maybe work out a better way
// to handle this.
private static Action[] defaultActions =
new Action[] {
// These classes are public because they are so in the RI.
@ -1387,9 +1476,21 @@ public class DefaultEditorKit extends EditorKit
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()
};
/**