Mercurial Hosting > luan
changeset 1982:0f59713aeaeb default tip
fix copy and paste
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 27 Jun 2025 22:27:40 -0600 |
parents | ad312de2a30e |
children | |
files | src/luan/modules/swing/TextAreaLuan.java |
diffstat | 1 files changed, 38 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/luan/modules/swing/TextAreaLuan.java Fri Jun 27 19:51:12 2025 -0600 +++ b/src/luan/modules/swing/TextAreaLuan.java Fri Jun 27 22:27:40 2025 -0600 @@ -1,5 +1,6 @@ package luan.modules.swing; +import java.io.IOException; import java.util.List; import java.util.Collections; import java.awt.Rectangle; @@ -7,11 +8,16 @@ import java.awt.Color; import java.awt.Shape; import java.awt.Point; +import java.awt.Toolkit; import java.awt.event.FocusListener; import java.awt.event.FocusEvent; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.event.MouseEvent; +import java.awt.datatransfer.StringSelection; +import java.awt.datatransfer.Clipboard; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.UnsupportedFlavorException; import javax.swing.JTextArea; import javax.swing.UIManager; import javax.swing.Timer; @@ -369,4 +375,36 @@ undo.endTransaction(); } } + + static void putInClipboard(String s) { + Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(s),null); + } + + @Override public void copy() { + String s = getSelectedText(); + if( s != null ) + putInClipboard(s); + } + + @Override public void cut() { + String s = getSelectedText(); + if( s!=null && isEditable() && isEnabled() ) { + putInClipboard(s); + replaceSelection(""); + } + } + + @Override public void paste() { + try { + if( isEditable() && isEnabled() ) { + Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); + if( clipboard.isDataFlavorAvailable(DataFlavor.stringFlavor) ) { + String s = (String)clipboard.getData(DataFlavor.stringFlavor); + replaceSelection(s); + } + } + } catch(UnsupportedFlavorException | IOException e) { + throw new RuntimeException(e); + } + } }