view src/luan/modules/swing/Swing.luan @ 1917:f5f4c79d375f

1 process
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 18 Apr 2025 19:17:23 -0600
parents 15dda75a887f
children e2d69cfe1b3c
line wrap: on
line source

local Luan = require "luan:Luan.luan"
local error = Luan.error
local ipairs = Luan.ipairs or error()
require "java"
local System = require "java:java.lang.System"
local URI = require "java:java.net.URI"
local Insets = require "java:java.awt.Insets"
local Desktop = require "java:java.awt.Desktop"
local Window = require "java:java.awt.Window"
local UIManager = require "java:javax.swing.UIManager"
local FlatLightLaf = require "java:com.formdev.flatlaf.FlatLightLaf"
local SwingLuan = require "java:luan.modules.swing.SwingLuan"
local Logging = require "luan:logging/Logging.luan"
local logger = Logging.logger "swing/Swing"


local Swing = {}

System.setProperty("apple.laf.useScreenMenuBar", "true")
UIManager.setLookAndFeel(FlatLightLaf.new())

function Swing.get_installed_look_and_feels()
	local list = {}
	for _, info in ipairs{UIManager.getInstalledLookAndFeels()} do
		list[#list+1] = info.getClassName()
	end
	return list
end

function Swing.get_look_and_feel()
	return UIManager.getLookAndFeel().getClass().getName()
end

Swing.ui_manager_put = UIManager.put
Swing.set_look_and_feel = UIManager.setLookAndFeel

Swing.run = SwingLuan.run
Swing.run_later = SwingLuan.runLater

Swing.new_insets = Insets.new  -- top, left, bottom, right
Swing.no_insets = Insets.new(0,0,0,0)

local desktop = Desktop.getDesktop()

function Swing.browse(url)
	desktop.browse( URI.new(url) )
end

Swing.home_dir = System.getProperty("user.home")

function Swing.to_front()
	local windows = {Window.getOwnerlessWindows()}
	for _, window in ipairs(windows) do
		window.toFront()
	end
end

return Swing