Added some javadoc, improved the readme.
This commit is contained in:
parent
bddea200fc
commit
9766e1ddee
70
README.md
70
README.md
|
@ -13,3 +13,73 @@ However, sometimes you'll want a web-like experience with your desktop app, and
|
||||||
for that purpose, I've created javafx-scene-router. It allows you to initialize
|
for that purpose, I've created javafx-scene-router. It allows you to initialize
|
||||||
a router that controls the content of a Pane or similar, and depending on what
|
a router that controls the content of a Pane or similar, and depending on what
|
||||||
route is selected, different content will be shown in that pane.
|
route is selected, different content will be shown in that pane.
|
||||||
|
|
||||||
|
# Usage
|
||||||
|
|
||||||
|
Add the following dependency to your `pom.xml`:
|
||||||
|
```xml
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.andrewlalis</groupId>
|
||||||
|
<artifactId>javafx-scene-router</artifactId>
|
||||||
|
<version>LATEST_VERSION</version>
|
||||||
|
</dependency>
|
||||||
|
```
|
||||||
|
> Replace `LATEST_VERSION` with the most recent version found on [maven central](https://central.sonatype.com/artifact/com.andrewlalis/javafx-scene-router).
|
||||||
|
|
||||||
|
Then, most often you'll create a singleton instance of `SceneRouter`, probably
|
||||||
|
in your app's main class like so:
|
||||||
|
|
||||||
|
```java
|
||||||
|
import com.andrewlalis.javafx_scene_router.SceneRouter;
|
||||||
|
|
||||||
|
public class MyJavaFXApp extends Application {
|
||||||
|
public static final SceneRouter router = new SceneRouter();
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// Setup the router's routes before starting the app:
|
||||||
|
router.map("accounts", MyJavaFXApp.class.getResource("/accounts-view.fxml"));
|
||||||
|
router.map("account", MyJavaFXApp.class.getResource("/account.fxml"));
|
||||||
|
router.map("settings", MyJavaFXApp.class.getResource("/settings.fxml"));
|
||||||
|
|
||||||
|
launch(args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
From here, it's just a matter of attaching the router's view pane to one of
|
||||||
|
your scene's nodes, and mapping string route names to other nodes or FXML
|
||||||
|
files.
|
||||||
|
|
||||||
|
For example, suppose my app has a main scene with a `MainController` class.
|
||||||
|
We'd hook up the router's view pane to that scene's center view:
|
||||||
|
```java
|
||||||
|
public class MainController {
|
||||||
|
@FXML
|
||||||
|
public BorderPane borderPane;
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
public void initialize() {
|
||||||
|
borderPane.setCenter(MyJavaFXApp.router.getViewPane());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Finally, we can use the router from anywhere in our app to control which "page"
|
||||||
|
is being displayed:
|
||||||
|
|
||||||
|
```java
|
||||||
|
public class MainController {
|
||||||
|
// Rest of the class omitted.
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
public void onBackButton() {
|
||||||
|
MyJavaFXApp.router.navigateBack();
|
||||||
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
public void onAccountClicked() {
|
||||||
|
Account acc = getClickedAccount();
|
||||||
|
MyJavaFXApp.router.navigate("account", acc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
2
pom.xml
2
pom.xml
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
<groupId>com.andrewlalis</groupId>
|
<groupId>com.andrewlalis</groupId>
|
||||||
<artifactId>javafx-scene-router</artifactId>
|
<artifactId>javafx-scene-router</artifactId>
|
||||||
<version>1.1.0</version>
|
<version>1.1.1</version>
|
||||||
<name>JavaFX Scene Router</name>
|
<name>JavaFX Scene Router</name>
|
||||||
<description>A library that provides a router implementation for JavaFX, for browser-like navigation between pages.</description>
|
<description>A library that provides a router implementation for JavaFX, for browser-like navigation between pages.</description>
|
||||||
<url>https://github.com/andrewlalis/javafx-scene-router</url>
|
<url>https://github.com/andrewlalis/javafx-scene-router</url>
|
||||||
|
|
|
@ -24,6 +24,11 @@ import java.util.function.Consumer;
|
||||||
* The router maintains a {@link RouteHistory} so that it's possible to
|
* The router maintains a {@link RouteHistory} so that it's possible to
|
||||||
* navigate backward and forward, much like a web browser would.
|
* navigate backward and forward, much like a web browser would.
|
||||||
* </p>
|
* </p>
|
||||||
|
* <p>
|
||||||
|
* Note that this router is intended to be used by a single JavaFX
|
||||||
|
* application, and is <strong>not threadsafe!</strong> Use a separate
|
||||||
|
* router for each separate JavaFX application you create.
|
||||||
|
* </p>
|
||||||
*/
|
*/
|
||||||
public class SceneRouter {
|
public class SceneRouter {
|
||||||
private final Pane viewPane = new Pane();
|
private final Pane viewPane = new Pane();
|
||||||
|
|
Loading…
Reference in New Issue