mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2025-12-08 06:50:56 +03:00
added method FlatLaf.registerCustomDefaultsSource(URL packageUrl) for JPMS (issue #325)
This commit is contained in:
@@ -50,6 +50,8 @@ FlatLaf Change Log
|
|||||||
applications: `lighten()`, `darken()`, `saturate()`, `desaturate()`, `spin()`,
|
applications: `lighten()`, `darken()`, `saturate()`, `desaturate()`, `spin()`,
|
||||||
`tint()`, `shade()` and `luma()`.
|
`tint()`, `shade()` and `luma()`.
|
||||||
- Support defining fonts in FlatLaf properties files. (issue #384)
|
- Support defining fonts in FlatLaf properties files. (issue #384)
|
||||||
|
- Added method `FlatLaf.registerCustomDefaultsSource(URL packageUrl)` for JPMS.
|
||||||
|
(issue #325)
|
||||||
- Extras:
|
- Extras:
|
||||||
- Added class `FlatDesktop` for easy integration into macOS screen menu
|
- Added class `FlatDesktop` for easy integration into macOS screen menu
|
||||||
(About, Preferences and Quit) when using Java 8.
|
(About, Preferences and Quit) when using Java 8.
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import java.beans.PropertyChangeEvent;
|
|||||||
import java.beans.PropertyChangeListener;
|
import java.beans.PropertyChangeListener;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
|
import java.net.URL;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
@@ -753,6 +754,7 @@ public abstract class FlatLaf
|
|||||||
* Invoke this method before setting the look and feel.
|
* Invoke this method before setting the look and feel.
|
||||||
* <p>
|
* <p>
|
||||||
* If using Java modules, the package must be opened in {@code module-info.java}.
|
* If using Java modules, the package must be opened in {@code module-info.java}.
|
||||||
|
* Otherwise use {@link #registerCustomDefaultsSource(URL)}.
|
||||||
*
|
*
|
||||||
* @param packageName a package name (e.g. "com.myapp.resources")
|
* @param packageName a package name (e.g. "com.myapp.resources")
|
||||||
*/
|
*/
|
||||||
@@ -794,6 +796,32 @@ public abstract class FlatLaf
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a package where FlatLaf searches for properties files with custom UI defaults.
|
||||||
|
* <p>
|
||||||
|
* See {@link #registerCustomDefaultsSource(String)} for details.
|
||||||
|
* <p>
|
||||||
|
* This method is useful if using Java modules and the package containing the properties files
|
||||||
|
* is not opened in {@code module-info.java}.
|
||||||
|
* E.g. {@code FlatLaf.registerCustomDefaultsSource( MyApp.class.getResource( "/com/myapp/themes/" ) )}.
|
||||||
|
*
|
||||||
|
* @param packageUrl a package URL
|
||||||
|
* @since 2
|
||||||
|
*/
|
||||||
|
public static void registerCustomDefaultsSource( URL packageUrl ) {
|
||||||
|
if( customDefaultsSources == null )
|
||||||
|
customDefaultsSources = new ArrayList<>();
|
||||||
|
customDefaultsSources.add( packageUrl );
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @since 2 */
|
||||||
|
public static void unregisterCustomDefaultsSource( URL packageUrl ) {
|
||||||
|
if( customDefaultsSources == null )
|
||||||
|
return;
|
||||||
|
|
||||||
|
customDefaultsSources.remove( packageUrl );
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers a folder where FlatLaf searches for properties files with custom UI defaults.
|
* Registers a folder where FlatLaf searches for properties files with custom UI defaults.
|
||||||
* <p>
|
* <p>
|
||||||
|
|||||||
@@ -22,10 +22,12 @@ import java.awt.Font;
|
|||||||
import java.awt.Insets;
|
import java.awt.Insets;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.StreamTokenizer;
|
import java.io.StreamTokenizer;
|
||||||
import java.io.StringReader;
|
import java.io.StringReader;
|
||||||
|
import java.net.URL;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -156,6 +158,18 @@ class UIDefaultsLoader
|
|||||||
properties.load( in );
|
properties.load( in );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if( source instanceof URL ) {
|
||||||
|
// load from package URL
|
||||||
|
URL packageUrl = (URL) source;
|
||||||
|
for( Class<?> lafClass : lafClasses ) {
|
||||||
|
URL propertiesUrl = new URL( packageUrl + lafClass.getSimpleName() + ".properties" );
|
||||||
|
|
||||||
|
try( InputStream in = propertiesUrl.openStream() ) {
|
||||||
|
properties.load( in );
|
||||||
|
} catch( FileNotFoundException ex ) {
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if( source instanceof File ) {
|
} else if( source instanceof File ) {
|
||||||
// load from folder
|
// load from folder
|
||||||
File folder = (File) source;
|
File folder = (File) source;
|
||||||
|
|||||||
Reference in New Issue
Block a user