diff options
Diffstat (limited to 'libjava/classpath/javax/swing/text/JTextComponent.java')
-rw-r--r-- | libjava/classpath/javax/swing/text/JTextComponent.java | 211 |
1 files changed, 87 insertions, 124 deletions
diff --git a/libjava/classpath/javax/swing/text/JTextComponent.java b/libjava/classpath/javax/swing/text/JTextComponent.java index b3fad79124c..83966bbdf47 100644 --- a/libjava/classpath/javax/swing/text/JTextComponent.java +++ b/libjava/classpath/javax/swing/text/JTextComponent.java @@ -50,9 +50,9 @@ import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.awt.event.InputMethodListener; import java.awt.event.KeyEvent; +import java.awt.event.MouseEvent; import java.io.IOException; import java.io.Reader; import java.io.Writer; @@ -72,7 +72,6 @@ import javax.swing.JViewport; import javax.swing.KeyStroke; import javax.swing.Scrollable; import javax.swing.SwingConstants; -import javax.swing.Timer; import javax.swing.TransferHandler; import javax.swing.UIManager; import javax.swing.event.CaretEvent; @@ -89,6 +88,7 @@ public abstract class JTextComponent extends JComponent /** * AccessibleJTextComponent */ + // FIXME: This inner class is a complete stub and needs to be implemented. public class AccessibleJTextComponent extends AccessibleJComponent implements AccessibleText, CaretListener, DocumentListener { @@ -99,6 +99,7 @@ public abstract class JTextComponent extends JComponent */ public AccessibleJTextComponent() { + // Nothing to do here. } /** @@ -301,50 +302,6 @@ public abstract class JTextComponent extends JComponent } /** - * The timer that lets the caret blink. - */ - private class CaretBlinkTimer - extends Timer - implements ActionListener - { - /** - * Creates a new CaretBlinkTimer object with a default delay of 1 second. - */ - public CaretBlinkTimer() - { - super(1000, null); - addActionListener(this); - } - - /** - * Lets the caret blink. - */ - public void actionPerformed(ActionEvent ev) - { - Caret c = caret; - if (c != null) - c.setVisible(!c.isVisible()); - } - - /** - * Updates the blink delay according to the current caret. - */ - public void update() - { - stop(); - Caret c = caret; - if (c != null) - { - setDelay(c.getBlinkRate()); - if (editable) - start(); - else - c.setVisible(false); - } - } - } - - /** * According to <a * href="http://java.sun.com/products/jfc/tsc/special_report/kestrel/keybindings.html">this * report</a>, a pair of private classes wraps a {@link @@ -604,8 +561,7 @@ public abstract class JTextComponent extends JComponent } } - class DefaultTransferHandler - extends TransferHandler + class DefaultTransferHandler extends TransferHandler { public boolean canImport(JComponent component, DataFlavor[] flavors) { @@ -631,23 +587,23 @@ public abstract class JTextComponent extends JComponent int end = textComponent.getSelectionEnd(); if (start == end) - return; + return; try - { - // Copy text to clipboard. - String data = textComponent.getDocument().getText(start, end); - StringSelection selection = new StringSelection(data); - clipboard.setContents(selection, null); - - // Delete selected text on cut action. - if (action == MOVE) - doc.remove(start, end - start); - } + { + // Copy text to clipboard. + String data = textComponent.getDocument().getText(start, end); + StringSelection selection = new StringSelection(data); + clipboard.setContents(selection, null); + + // Delete selected text on cut action. + if (action == MOVE) + doc.remove(start, end - start); + } catch (BadLocationException e) - { - // Ignore this and do nothing. - } + { + // Ignore this and do nothing. + } } public int getSourceActions() @@ -661,30 +617,30 @@ public abstract class JTextComponent extends JComponent DataFlavor[] flavors = transferable.getTransferDataFlavors(); if (flavors == null) - return false; + return false; for (int i = 0; i < flavors.length; ++i) - if (flavors[i].equals(DataFlavor.stringFlavor)) - flavor = flavors[i]; + if (flavors[i].equals(DataFlavor.stringFlavor)) + flavor = flavors[i]; if (flavor == null) - return false; + return false; try - { - JTextComponent textComponent = (JTextComponent) component; - String data = (String) transferable.getTransferData(flavor); - textComponent.replaceSelection(data); - return true; - } + { + JTextComponent textComponent = (JTextComponent) component; + String data = (String) transferable.getTransferData(flavor); + textComponent.replaceSelection(data); + return true; + } catch (IOException e) - { - // Ignored. - } + { + // Ignored. + } catch (UnsupportedFlavorException e) - { - // Ignored. - } + { + // Ignored. + } return false; } @@ -701,8 +657,6 @@ public abstract class JTextComponent extends JComponent private char focusAccelerator = '\0'; private NavigationFilter navigationFilter; - private CaretBlinkTimer caretBlinkTimer; - /** * Get a Keymap from the global keymap table, by name. * @@ -960,8 +914,6 @@ public abstract class JTextComponent extends JComponent creatingKeymap = true; } - caretBlinkTimer = new CaretBlinkTimer(); - setFocusable(true); setEditable(true); enableEvents(AWTEvent.KEY_EVENT_MASK); @@ -1021,12 +973,17 @@ public abstract class JTextComponent extends JComponent { try { - doc.remove(0, doc.getLength()); - doc.insertString(0, text, null); + if (doc instanceof AbstractDocument) + ((AbstractDocument) doc).replace(0, doc.getLength(), text, null); + else + { + doc.remove(0, doc.getLength()); + doc.insertString(0, text, null); + } } catch (BadLocationException e) { - // This can never happen. + // This can never happen. } } @@ -1044,12 +1001,12 @@ public abstract class JTextComponent extends JComponent try { - return doc.getText(0, doc.getLength()); + return doc.getText(0, doc.getLength()); } catch (BadLocationException e) { - // This should never happen. - return ""; + // This should never happen. + return ""; } } @@ -1080,12 +1037,12 @@ public abstract class JTextComponent extends JComponent { try { - return doc.getText(getSelectionStart(), getSelectionEnd()); + return doc.getText(getSelectionStart(), getSelectionEnd()); } catch (BadLocationException e) { - // This should never happen. - return null; + // This should never happen. + return null; } } @@ -1105,7 +1062,8 @@ public abstract class JTextComponent extends JComponent */ protected String paramString() { - return "JTextComponent"; + // TODO: Do something useful here. + return super.paramString(); } /** @@ -1194,14 +1152,6 @@ public abstract class JTextComponent extends JComponent if (editable == newValue) return; - if (newValue == true) - caretBlinkTimer.start(); - else - { - caretBlinkTimer.stop(); - caret.setVisible(false); - } - boolean oldValue = editable; editable = newValue; firePropertyChange("editable", oldValue, newValue); @@ -1230,8 +1180,6 @@ public abstract class JTextComponent extends JComponent Caret oldCaret = caret; caret = newCaret; - caretBlinkTimer.update(); - if (caret != null) caret.install(this); @@ -1399,7 +1347,7 @@ public abstract class JTextComponent extends JComponent start = Math.max(start, 0); start = Math.min(start, length); - end = Math.max(end, 0); + end = Math.max(end, start); end = Math.min(end, length); setCaretPosition(start); @@ -1422,28 +1370,28 @@ public abstract class JTextComponent extends JComponent // If content is empty delete selection. if (content == null) { - caret.setDot(dot); - return; + caret.setDot(dot); + return; } try { - int start = getSelectionStart(); - int end = getSelectionEnd(); - - // Remove selected text. - if (dot != mark) - doc.remove(start, end - start); - - // Insert new text. - doc.insertString(start, content, null); - - // Set dot to new position. - setCaretPosition(start + content.length()); + int start = getSelectionStart(); + int end = getSelectionEnd(); + + // Remove selected text. + if (dot != mark) + doc.remove(start, end - start); + + // Insert new text. + doc.insertString(start, content, null); + + // Set dot to new position. + setCaretPosition(start + content.length()); } catch (BadLocationException e) { - // This should never happen. + // This should never happen. } } @@ -1577,15 +1525,15 @@ public abstract class JTextComponent extends JComponent // Install default TransferHandler if none set. if (getTransferHandler() == null) { - if (defaultTransferHandler == null) - defaultTransferHandler = new DefaultTransferHandler(); - - setTransferHandler(defaultTransferHandler); + if (defaultTransferHandler == null) + defaultTransferHandler = new DefaultTransferHandler(); + + setTransferHandler(defaultTransferHandler); } // Perform action. ActionEvent event = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, - action.getValue(Action.NAME).toString()); + action.getValue(Action.NAME).toString()); action.actionPerformed(event); } @@ -1669,5 +1617,20 @@ public abstract class JTextComponent extends JComponent throws IOException { output.write(getText()); - } + } + + /** + * Returns the tooltip text for this text component for the given mouse + * event. This forwards the call to + * {@link TextUI#getToolTipText(JTextComponent, Point)}. + * + * @param ev the mouse event + * + * @return the tooltip text for this text component for the given mouse + * event + */ + public String getToolTipText(MouseEvent ev) + { + return getUI().getToolTipText(this, ev.getPoint()); + } } |