changeset 1888:a28e22991c58 default tip

add MigLayout
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 10 Apr 2025 11:41:02 -0600
parents bea843af3422
children
files lib/miglayout-core-4.3-20121116.151612-3.jar lib/miglayout-swing-4.3-20121116.151626-3.jar src/luan/modules/swing/Abstract_button.luan src/luan/modules/swing/Border.luan src/luan/modules/swing/Button.luan src/luan/modules/swing/Component.luan src/luan/modules/swing/Layout.luan src/luan/modules/swing/Swing.luan src/luan/modules/swing/SwingLuan.java src/luan/modules/swing/Text_field.luan
diffstat 10 files changed, 74 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
Binary file lib/miglayout-core-4.3-20121116.151612-3.jar has changed
Binary file lib/miglayout-swing-4.3-20121116.151626-3.jar has changed
--- a/src/luan/modules/swing/Abstract_button.luan	Wed Apr 09 11:43:08 2025 -0600
+++ b/src/luan/modules/swing/Abstract_button.luan	Thu Apr 10 11:41:02 2025 -0600
@@ -9,6 +9,8 @@
 local super__new_index = Component.__new_index or error()
 local super_construct = Component.construct or error()
 require "java"
+local Logging = require "luan:logging/Logging.luan"
+local logger = Logging.logger "swing/Abstract_button"
 
 
 local Abstract_button = {}
@@ -41,6 +43,8 @@
 	if text~=nil then jbutton.setText(text) end
 	local enabled = delete(props,"enabled")
 	if enabled~=nil then jbutton.setEnabled(enabled) end
+	local margin = delete(props,"margin")
+	if margin~=nil then jbutton.setMargin(margin) end
 	button.set_enabled = jbutton.setEnabled
 	return button
 end
--- a/src/luan/modules/swing/Border.luan	Wed Apr 09 11:43:08 2025 -0600
+++ b/src/luan/modules/swing/Border.luan	Thu Apr 10 11:41:02 2025 -0600
@@ -8,6 +8,8 @@
 
 local Border = {}
 
+Border.no_border = BorderFactory.createEmptyBorder()
+
 function Border.create_empty_border(top,left,bottom,right)
 	return BorderFactory.createEmptyBorder(top,left,bottom,right)
 end
--- a/src/luan/modules/swing/Button.luan	Wed Apr 09 11:43:08 2025 -0600
+++ b/src/luan/modules/swing/Button.luan	Thu Apr 10 11:41:02 2025 -0600
@@ -8,12 +8,19 @@
 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 button = { java = JButton.new() }
+	local jbutton = JButton.new()
+	jbutton.setMargin(no_insets)
+	local button = { java = jbutton }
 	super_construct(button,props)
 	set_metatable(button,super_mt)
 	return button
--- a/src/luan/modules/swing/Component.luan	Wed Apr 09 11:43:08 2025 -0600
+++ b/src/luan/modules/swing/Component.luan	Thu Apr 10 11:41:02 2025 -0600
@@ -11,6 +11,7 @@
 local check_not_nil = Utils.check_not_nil or error()
 local get_font = require("luan:swing/Font.luan").get or error()
 require "java"
+local JComponent = require "java:javax.swing.JComponent"
 local JPanel = require "java:javax.swing.JPanel"
 local Logging = require "luan:logging/Logging.luan"
 local logger = Logging.logger "swing/Component"
@@ -18,6 +19,10 @@
 
 local Component = {}
 
+local alignments = {
+	left = JComponent.LEFT_ALIGNMENT
+}
+
 function Component.__index(component,key)
 	if key == "foreground_color" then
 		return component.java.getForeground()
@@ -25,6 +30,9 @@
 	if key == "border" then
 		return component.java.getBorder()
 	end
+	if key == "constraints" then
+		return nil
+	end
 	return fail
 end
 
@@ -65,10 +73,16 @@
 	if border~=nil then jcomponent.setBorder(border) end
 	local foreground_color = delete(props,"foreground_color")
 	if foreground_color~=nil then jcomponent.setForeground(foreground_color) end
+	local alignment_x = delete(props,"alignment_x")
+	if alignment_x~=nil then
+		alignment_x = alignments[alignment_x] or error "invalid alignment_x"
+		jcomponent.setAlignmentX(alignment_x)
+	end
+	component.constraints = delete(props,"constraints")
 	local children = delete(props,"children")
 	if children~=nil then
 		for _, child in ipairs(children) do
-			jcomponent.add(child.java)
+			jcomponent.add(child.java,child.constraints)
 		end
 	end
 	component.request_focus_in_window = jcomponent.requestFocusInWindow
--- a/src/luan/modules/swing/Layout.luan	Wed Apr 09 11:43:08 2025 -0600
+++ b/src/luan/modules/swing/Layout.luan	Thu Apr 10 11:41:02 2025 -0600
@@ -1,10 +1,9 @@
 local Luan = require "luan:Luan.luan"
 local error = Luan.error
-local Number = require "luan:Number.luan"
-local integer = Number.integer or error()
 require "java"
 local FlowLayout = require "java:java.awt.FlowLayout"
 local BoxLayout = require "java:javax.swing.BoxLayout"
+local MigLayout = require "java:net.miginfocom.swing.MigLayout"
 
 
 local Layout = {}
@@ -35,4 +34,8 @@
 	return BoxLayout.new(target.java,axis)
 end
 
+function Layout.new_mig_layout(layout_constraints,column_constraints,row_constraints)
+	return MigLayout.new(layout_constraints,column_constraints,row_constraints)
+end
+
 return Layout
--- a/src/luan/modules/swing/Swing.luan	Wed Apr 09 11:43:08 2025 -0600
+++ b/src/luan/modules/swing/Swing.luan	Thu Apr 10 11:41:02 2025 -0600
@@ -1,6 +1,7 @@
 local Luan = require "luan:Luan.luan"
 local error = Luan.error
 require "java"
+local Insets = require "java:java.awt.Insets"
 local SwingLuan = require "java:luan.modules.swing.SwingLuan"
 
 
@@ -8,4 +9,6 @@
 
 Swing.run = SwingLuan.run
 
+Swing.new_insets = Insets.new  -- top, left, bottom, right
+
 return Swing
--- a/src/luan/modules/swing/SwingLuan.java	Wed Apr 09 11:43:08 2025 -0600
+++ b/src/luan/modules/swing/SwingLuan.java	Thu Apr 10 11:41:02 2025 -0600
@@ -33,8 +33,15 @@
 		System.setProperty("apple.laf.useScreenMenuBar", "true");
 		//System.out.println(UIManager.getLookAndFeel());
 /*
+		for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
+			logger.info(info.toString());
+		}
 		try {
-			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+			//UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+			//UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
+			//UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
+			//UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
+			UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
 		} catch(ClassNotFoundException e) {
 			throw new RuntimeException(e);
 		} catch(InstantiationException e) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/luan/modules/swing/Text_field.luan	Thu Apr 10 11:41:02 2025 -0600
@@ -0,0 +1,29 @@
+local Luan = require "luan:Luan.luan"
+local error = Luan.error
+local set_metatable = Luan.set_metatable or error()
+local Utils = require "luan:swing/Utils.luan"
+local make_metatable = Utils.make_metatable or error()
+local delete = Utils.delete or error()
+local check_empty = Utils.check_empty or error()
+local Text_component = require("luan:swing/Text_component.luan")
+local super_construct = Text_component.construct or error()
+require "java"
+local JTextField = require "java:javax.swing.JTextField"
+
+
+local Text_field = {}
+
+local mt = make_metatable(Text_component)
+
+function Text_field.new(props)
+	local jtext_field = JTextField.new()
+	local text_field = { java = jtext_field }
+	super_construct(text_field,props)
+	local columns = delete(props,"columns")
+	if columns~=nil then jtext_field.setColumns(columns) end
+	check_empty(props)
+	set_metatable(text_field,mt)
+	return text_field
+end
+
+return Text_field