Mercurial Hosting > luan
changeset 1894:801e1fe227f9
swing
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 13 Apr 2025 16:01:33 -0600 |
parents | 0170d482b5d5 |
children | 091b503f511c |
files | src/luan/modules/String.luan src/luan/modules/StringLuan.java src/luan/modules/swing/Abstract_button.luan src/luan/modules/swing/TextAreaLuan.java |
diffstat | 4 files changed, 29 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/luan/modules/String.luan Sun Apr 13 12:25:08 2025 -0600 +++ b/src/luan/modules/String.luan Sun Apr 13 16:01:33 2025 -0600 @@ -6,6 +6,7 @@ local String = {} String.char = StringLuan.char_ +String.char_to_int = StringLuan.char_to_int String.contains = StringLuan.contains String.digest_message = StringLuan.digest_message String.encode = StringLuan.encode
--- a/src/luan/modules/StringLuan.java Sun Apr 13 12:25:08 2025 -0600 +++ b/src/luan/modules/StringLuan.java Sun Apr 13 16:01:33 2025 -0600 @@ -164,4 +164,10 @@ return GoodUtils.replace(s,target,replacement); } + public static int char_to_int(String s,Integer index) throws LuanException { + Utils.checkNotNull(s); + int i = index==null ? 0 : index-1; + return s.codePointAt(i); + } + }
--- a/src/luan/modules/swing/Abstract_button.luan Sun Apr 13 12:25:08 2025 -0600 +++ b/src/luan/modules/swing/Abstract_button.luan Sun Apr 13 16:01:33 2025 -0600 @@ -1,5 +1,7 @@ local Luan = require "luan:Luan.luan" local error = Luan.error +local String = require "luan:String.luan" +local char_to_int = String.char_to_int or error() local Utils = require "luan:swing/Utils.luan" local fail = Utils.fail or error() local make_metatable = Utils.make_metatable or error() @@ -9,6 +11,7 @@ local super__new_index = Component.__new_index or error() local super_construct = Component.construct or error() require "java" +local KeyEvent = require "java:java.awt.event.KeyEvent" local SwingLuan = require "java:luan.modules.swing.SwingLuan" local newActionListener = SwingLuan.newActionListener local Logging = require "luan:logging/Logging.luan" @@ -49,6 +52,9 @@ if margin~=nil then jbutton.setMargin(margin) end local action = delete(props,"action") if action~=nil then jbutton.setActionCommand(action) end + -- mnemonic doesn't work on Mac + local mnemonic = delete(props,"mnemonic") + if mnemonic~=nil then jbutton.setMnemonic(KeyEvent.getExtendedKeyCodeForChar(char_to_int(mnemonic))) end local action_listener = delete(props,"action_listener") if action_listener~=nil then jbutton.addActionListener(newActionListener(action_listener)) end function button.add_action_listener(action_listener)
--- a/src/luan/modules/swing/TextAreaLuan.java Sun Apr 13 12:25:08 2025 -0600 +++ b/src/luan/modules/swing/TextAreaLuan.java Sun Apr 13 16:01:33 2025 -0600 @@ -4,6 +4,8 @@ import java.awt.Graphics; import java.awt.Color; import javax.swing.JTextArea; +import javax.swing.UIManager; +import javax.swing.text.DefaultCaret; import javax.swing.text.BadLocationException; import goodjava.logging.Logger; import goodjava.logging.LoggerFactory; @@ -12,8 +14,22 @@ public class TextAreaLuan extends JTextArea { private static final Logger logger = LoggerFactory.getLogger(TextAreaLuan.class); + private static final DefaultCaret flatLafCaret = new DefaultCaret() { + @Override public void setSelectionVisible(boolean visible) { + super.setSelectionVisible(true); + } + }; + private boolean showWhitespace = false; + public TextAreaLuan() { + super(); + //logger.info(UIManager.getLookAndFeel().getName()); + if( UIManager.getLookAndFeel().getName().startsWith("FlatLaf") ) { + setCaret(flatLafCaret); + } + } + public int getLineHeight(int line) throws BadLocationException { if( !getLineWrap() ) return getRowHeight();