Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cosinus-code/spring-swing
Spring Swing is a framework designed for building Spring-powered swing applications.
https://github.com/cosinus-code/spring-swing
spring spring-boot swing swing-gui
Last synced: about 1 month ago
JSON representation
Spring Swing is a framework designed for building Spring-powered swing applications.
- Host: GitHub
- URL: https://github.com/cosinus-code/spring-swing
- Owner: cosinus-code
- License: apache-2.0
- Created: 2020-02-24T17:59:43.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-07-09T17:16:39.000Z (6 months ago)
- Last Synced: 2024-11-15T02:50:00.735Z (about 1 month ago)
- Topics: spring, spring-boot, swing, swing-gui
- Language: Java
- Homepage:
- Size: 515 KB
- Stars: 6
- Watchers: 1
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Spring Swing
Spring Swing is a framework designed for building Spring-powered Swing applications.# Description
It allows you to start a Swing application in full Spring context.
It also allows injection of Spring beans into Swing objects created during application run:```java
import org.cosinus.swing.store.ApplicationStorage;import static org.cosinus.swing.context.ApplicationContextInjector.injectContext;
public class SwingObject {
@Autowired
public ApplicationStorage applicationStorage;public SwingApplicationContextAware() {
injectContext(this);
}
}
```There are already Swing object rewritten to auto-inject the Spring context:
```java
import org.cosinus.swing.form.Panel;
import org.cosinus.swing.store.ApplicationStorage;public class MyPanel implements Panel {
@Autowired
public ApplicationStorage applicationStorage;}
```
# Getting Started Using Spring SwingHere is the Java code for starting a Spring Swing application:
```java
package org.cosinus.swing.example;import org.cosinus.swing.boot.ApplicationFrame;
import org.cosinus.swing.boot.SpringSwingApplication;
import org.cosinus.swing.boot.SpringSwingBootApplication;import javax.swing.*;
import java.awt.*;@SpringSwingBootApplication
public class HelloWorld extends ApplicationFrame {@Override
public void initComponents() {
JPanel panel = new JPanel(new BorderLayout());
panel.add(new JLabel("Hello World", SwingConstants.CENTER));
add(panel);
}public static void main(String[] args) {
SpringSwingApplication.run(HelloWorld.class, args);
}
}
```## Dependencies
```xml
org.cosinuscode.swing
spring-swing-boot-starter-parent
1.0.0
org.cosinuscode.swing
spring-swing-boot-starter
```
Spring Swing runs with java 11, so the compiler should be configured for java 11.## Package the Application
The spring-boot maven plugin can be used for packaging:```xml
...
${project.basedir}/output
spring-swing-example
...
...
org.springframework.boot
spring-boot-maven-plugin
${spring-boot.version}
repackage
true
${project.output}
${application.name}
```Package command:
```shell_session
$ mvn package
```## Run the Application
The jar can be executed from the `${project.output}` folder:```shell_session
$ ./spring-swing-example.jar
```## Application Name and Icon
The application name (which is the main window title) and the application icon
can be specified in the application properties file `application.yml`:```yaml
swing:
application:
name: Sping Swing Example
icon: spring.png
```
The icon file default location is in the `image` resources folder.
## Logging
To add Apache Log4j 2 to the application exclude the `spring-boot-starter-logging` and add `spring-boot-starter-log4j2`:
```xml
org.cosinuscode.swing
spring-swing-boot-starter
org.springframework.boot
spring-boot-starter-logging
org.springframework.boot
spring-boot-starter-log4j2
```
Then add log4j2 file to configure the logging.## Internationalization
To translate the message, replace `"Hello World"` with `translate("hello.world")`
and add in the `i18n` resources folder the standard translations properties file
`messages_en_us.properties`:```properties
hello.world=Hello World
```To change the language of the application, add the `preferences.json` file in the `conf` folder
and specify the preferred language:```json
{
"appearance": {
"language": {
"type": "language",
"value": "fr"
}
}
}
```
along with the translations file `messages_fr_fr.properties`:
```properties
hello.world=Salut monde
```## Application Menu
To attach a menu to the application, add in the `conf` folder a `menu.json` file with the menu structure
like the following:
```json
{
"menu": {
"start.application": "control S",
"quit.application": "control Q"
},
"help": {
"about.application": "F1"
}
}
```
To translate the specific keys (e.g. "start.application", "quit.application", "about.application"),
add those in the translation files:```properties
hello.world=Hello World
start.application=Start
quit.application=Quit
about.application=About
```## Add Splash Screen
To add a slash screen to the application, just provide the image in `image` resources folder and
add it in `SplashScreen-Image` entry of jar manifest using the `maven-jar-plugin`:```xml
...
spring-splash.png
...
org.apache.maven.plugins
maven-jar-plugin
BOOT-INF/classes/image/${splash.file.name}
```## Add Startup Progress Bar
To add progress bar to the splash screen,
we need to pass the `-splash-progress` argument when running the application:```shell_session
$ ./spring-swing-example.jar -splash-progress
```
The progress bar can be customized using dedicated arguments:
```shell_session
$ ./spring-swing-example.jar \
-splash-progress \
-splash-progress-color=56,123,44 \
-splash-progress-y=245 \
-splash-progress-x=5
```## Distribute the Application
To simplify the run of the application,
we can add the `spring-swing-example.sh` bash file with start command:
```bash
#! /bin/bash
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do
APPLICATION_DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
done
APPLICATION_DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )""$JAVA_HOME/bin/java" \
-jar $APPLICATION_DIR/spring-swing-example.jar \
-splash-progress \
-splash-progress-color=56,123,44 \
-splash-progress-y=245 \
-splash-progress-x=5
```
and use `maven-resources-plugin` to copy all resources to the output folder:
```xml
...
org.apache.maven.plugins
maven-resources-plugin
copy-run-resources
package
copy-resources
${project.output}
src/main/resources
```
Now simply start the application by running the bash file from the output folder:
```shell_session
$ ./spring-swing-example.sh
```
The application properties, preferences, translations and menu structure
can now be updated directly from the output folder.## Examples
https://github.com/cosinus-code/spring-swing-example# License
The Spring Swing is Open Source software released under version 2.0 of the [Apache License](https://www.apache.org/licenses/LICENSE-2.0).