changeset 1893:0170d482b5d5

add FlatLaf
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 13 Apr 2025 12:25:08 -0600
parents 3990486911d9
children 801e1fe227f9
files lib/flatlaf-3.6.jar src/luan/modules/swing/Button.luan src/luan/modules/swing/Component.luan src/luan/modules/swing/Frame.luan src/luan/modules/swing/Swing.luan src/luan/modules/swing/Text_area.luan src/luan/modules/swing/Utils.luan
diffstat 7 files changed, 28 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
Binary file lib/flatlaf-3.6.jar has changed
--- a/src/luan/modules/swing/Button.luan	Fri Apr 11 21:40:51 2025 -0600
+++ b/src/luan/modules/swing/Button.luan	Sun Apr 13 12:25:08 2025 -0600
@@ -10,18 +10,15 @@
 local super_mt = Abstract_button.mt or error()
 require "java"
 local JButton = require "java:javax.swing.JButton"
-local Insets = require "java:java.awt.Insets"
 local Logging = require "luan:logging/Logging.luan"
 local logger = Logging.logger "swing/Button"
 
 
 local Button = {}
 
-local no_insets = Insets.new(0,0,0,0)
 
 function Button.new(props)
 	local jbutton = JButton.new()
-	jbutton.setMargin(no_insets)
 	local button = { java = jbutton }
 	super_construct(button,props)
 	check_empty(props)
--- a/src/luan/modules/swing/Component.luan	Fri Apr 11 21:40:51 2025 -0600
+++ b/src/luan/modules/swing/Component.luan	Sun Apr 13 12:25:08 2025 -0600
@@ -33,6 +33,9 @@
 	if key == "constraints" then
 		return nil
 	end
+	if key == "visible" then
+		return component.java.isVisible()
+	end
 	return fail
 end
 
@@ -45,6 +48,10 @@
 		component.java.setBorder(value)
 		return
 	end
+	if key == "visible" then
+		component.java.setVisible(value)
+		return
+	end
 	return fail
 end
 
@@ -76,6 +83,8 @@
 	if foreground_color~=nil then jcomponent.setForeground(foreground_color) end
 	local background_color = delete(props,"background_color")
 	if background_color~=nil then jcomponent.setBackground(background_color) end
+	local visible = delete(props,"visible")
+	if visible~=nil then jcomponent.setVisible(visible) end
 	local alignment_x = delete(props,"alignment_x")
 	if alignment_x~=nil then
 		alignment_x = alignments[alignment_x] or error "invalid alignment_x"
@@ -98,6 +107,9 @@
 	function component.add(el)
 		jcomponent.add(el.java)
 	end
+	function component.remove(el)
+		jcomponent.remove(el.java)
+	end
 	function component.add_all(list)
 		for _, child in ipairs(list) do
 			jcomponent.add(child.java)
--- a/src/luan/modules/swing/Frame.luan	Fri Apr 11 21:40:51 2025 -0600
+++ b/src/luan/modules/swing/Frame.luan	Sun Apr 13 12:25:08 2025 -0600
@@ -9,6 +9,7 @@
 local delete = Utils.delete or error()
 local check_empty = Utils.check_empty or error()
 local check_not_nil = Utils.check_not_nil or error()
+local to_dimension = Utils.to_dimension or error()
 require "java"
 local JFrame = require "java:javax.swing.JFrame"
 local FileDialog = require "java:java.awt.FileDialog"
@@ -99,6 +100,8 @@
 	local frame = { java = jframe }
 	local content_pane = delete(props,"content_pane")
 	if content_pane~=nil then jframe.setContentPane(content_pane.java) end
+	local preferred_size = delete(props,"preferred_size")
+	if preferred_size~=nil then jframe.setPreferredSize(to_dimension(preferred_size)) end
 	check_empty(props)
 	function frame.add_close_listener(close_listener)
 		jframe.addWindowListener(newCloseListener(close_listener))
--- a/src/luan/modules/swing/Swing.luan	Fri Apr 11 21:40:51 2025 -0600
+++ b/src/luan/modules/swing/Swing.luan	Sun Apr 13 12:25:08 2025 -0600
@@ -5,12 +5,14 @@
 local System = require "java:java.lang.System"
 local Insets = require "java:java.awt.Insets"
 local UIManager = require "java:javax.swing.UIManager"
+local FlatLightLaf = require "java:com.formdev.flatlaf.FlatLightLaf"
 local SwingLuan = require "java:luan.modules.swing.SwingLuan"
 
 
 local Swing = {}
 
 System.setProperty("apple.laf.useScreenMenuBar", "true")
+UIManager.setLookAndFeel(FlatLightLaf.new())
 
 function Swing.get_installed_look_and_feels()
 	local list = {}
@@ -30,5 +32,6 @@
 Swing.run = SwingLuan.run
 
 Swing.new_insets = Insets.new  -- top, left, bottom, right
+Swing.no_insets = Insets.new(0,0,0,0)
 
 return Swing
--- a/src/luan/modules/swing/Text_area.luan	Fri Apr 11 21:40:51 2025 -0600
+++ b/src/luan/modules/swing/Text_area.luan	Sun Apr 13 12:25:08 2025 -0600
@@ -12,6 +12,8 @@
 local super_construct = Text_component.construct or error()
 require "java"
 local TextAreaLuan = require "java:luan.modules.swing.TextAreaLuan"
+local Logging = require "luan:logging/Logging.luan"
+local logger = Logging.logger "swing/Text_area"
 
 
 local Text_area = {}
--- a/src/luan/modules/swing/Utils.luan	Fri Apr 11 21:40:51 2025 -0600
+++ b/src/luan/modules/swing/Utils.luan	Sun Apr 13 12:25:08 2025 -0600
@@ -5,6 +5,8 @@
 local pairs = Luan.pairs or error()
 local Table = require "luan:Table.luan"
 local is_empty = Table.is_empty or error()
+require "java"
+local Dimension = require "java:java.awt.Dimension"
 
 
 local Utils = {}
@@ -50,4 +52,10 @@
 	props or error "missing required properties table"
 end
 
+function Utils.to_dimension(tbl)
+	local width = tbl.width or error "missing width"
+	local height = tbl.height or error "missing height"
+	return Dimension.new(width,height)
+end
+
 return Utils