client

Clone or download

Modified Files

M pom.xml
+33 −3
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<modelVersion>4.0.0</modelVersion>
<groupId>com.stream_pi</groupId>
<groupId>com.stream_pi</groupId>
<artifactId>client</artifactId>
<artifactId>client</artifactId>
<version>1.0.0</version>
<version>1.0.0</version>
<url>https://stream-pi.com/</url>
<url>https://stream-pi.com/</url>
<properties>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<maven.compiler.target>11</maven.compiler.target>
<client.plugin.version>0.1.36</client.plugin.version>
<client.plugin.version>0.1.36</client.plugin.version>
<JavaFXVersion>16-ea+6</JavaFXVersion>
<JavaFXVersion>16-ea+6</JavaFXVersion>
<IkonliVersion>11.5.0</IkonliVersion>
<IkonliVersion>11.5.0</IkonliVersion>
<IkonliFA5PackVersion>11.5.0</IkonliFA5PackVersion>
<IkonliFA5PackVersion>11.5.0</IkonliFA5PackVersion>
<ActionAPIVersion>1.0.0</ActionAPIVersion>
<ActionAPIVersion>1.0.0</ActionAPIVersion>
<UtilVersion>1.0.0</UtilVersion>
<UtilVersion>1.0.0</UtilVersion>
<ThemeAPIVersion>1.0.0</ThemeAPIVersion>
<ThemeAPIVersion>1.0.0</ThemeAPIVersion>
<MainClassName>com.stream_pi.client.Main</MainClassName>
<MainClassName>com.stream_pi.client.Main</MainClassName>
<JavaFXSDK>/path/to/sdk</JavaFXSDK>
<JavaFXSDK>/path/to/sdk</JavaFXSDK>
</properties>
</properties>
<dependencies>
<dependencies>
<dependency>
<dependency>
<groupId>org.openjfx</groupId>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<artifactId>javafx-controls</artifactId>
<version>${JavaFXVersion}</version>
<version>${JavaFXVersion}</version>
<!--<systemPath>${JavaFXSDK}/lib/javafx.controls.jar</systemPath>-->
<!--<systemPath>${JavaFXSDK}/lib/javafx.controls.jar</systemPath>-->
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>org.openjfx</groupId>
<groupId>org.openjfx</groupId>
<artifactId>javafx-base</artifactId>
<artifactId>javafx-base</artifactId>
<version>${JavaFXVersion}</version>
<version>${JavaFXVersion}</version>
<!--<systemPath>${JavaFXSDK}/lib/javafx.base.jar</systemPath>-->
<!--<systemPath>${JavaFXSDK}/lib/javafx.base.jar</systemPath>-->
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>org.kordamp.ikonli</groupId>
<groupId>org.kordamp.ikonli</groupId>
<artifactId>ikonli-fontawesome5-pack</artifactId>
<artifactId>ikonli-fontawesome5-pack</artifactId>
<version>${IkonliFA5PackVersion}</version>
<version>${IkonliFA5PackVersion}</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>org.kordamp.ikonli</groupId>
<groupId>org.kordamp.ikonli</groupId>
<artifactId>ikonli-javafx</artifactId>
<artifactId>ikonli-javafx</artifactId>
<version>${IkonliVersion}</version>
<version>${IkonliVersion}</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>com.stream_pi</groupId>
<groupId>com.stream_pi</groupId>
<artifactId>action_api</artifactId>
<artifactId>actionapi</artifactId>
<version>${ActionAPIVersion}</version>
<version>${ActionAPIVersion}</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>com.stream_pi</groupId>
<groupId>com.stream_pi</groupId>
<artifactId>themeapi</artifactId>
<artifactId>themeapi</artifactId>
<version>${ThemeAPIVersion}</version>
<version>${ThemeAPIVersion}</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>com.stream_pi</groupId>
<groupId>com.stream_pi</groupId>
<artifactId>util</artifactId>
<artifactId>util</artifactId>
<version>${UtilVersion}</version>
<version>${UtilVersion}</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>com.gluonhq.attach</groupId>
<groupId>com.gluonhq.attach</groupId>
<artifactId>lifecycle</artifactId>
<artifactId>lifecycle</artifactId>
<version>4.0.10</version>
<version>4.0.10</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>com.gluonhq.attach</groupId>
<groupId>com.gluonhq.attach</groupId>
<artifactId>util</artifactId>
<artifactId>util</artifactId>
<version>4.0.10</version>
<version>4.0.10</version>
</dependency>
</dependency>
</dependencies>
</dependencies>
<repositories>
<repositories>
<repository>
<repository>
<id>gluon-releases</id>
<id>gluon-releases</id>
<url>http://nexus.gluonhq.com/nexus/content/repositories/releases/</url>
<url>http://nexus.gluonhq.com/nexus/content/repositories/releases/</url>
</repository>
</repository>
</repositories>
</repositories>
<build>
<build>
<plugins>
<plugins>
<plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<version>3.8.1</version>
<configuration>
<configuration>
<release>11</release>
<release>11</release>
</configuration>
</configuration>
</plugin>
</plugin>
<plugin>
<plugin>
<groupId>org.openjfx</groupId>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.5</version>
<version>0.0.5</version>
<configuration>
<configuration>
<stripDebug>true</stripDebug>
<stripDebug>true</stripDebug>
<compress>2</compress>
<compress>2</compress>
<noHeaderFiles>true</noHeaderFiles>
<noHeaderFiles>true</noHeaderFiles>
<noManPages>true</noManPages>
<noManPages>true</noManPages>
<mainClass>${MainClassName}</mainClass>
<mainClass>${MainClassName}</mainClass>
</configuration>
</configuration>
</plugin>
</plugin>
<plugin>
<plugin>
<groupId>com.gluonhq</groupId>
<groupId>com.gluonhq</groupId>
<artifactId>client-maven-plugin</artifactId>
<artifactId>client-maven-plugin</artifactId>
<version>${client.plugin.version}</version>
<version>${client.plugin.version}</version>
<configuration>
<configuration>
<!--target>android</target-->
<target>${clientTarget}</target>
<nativeImageArgs>
<nativeImageArgs>
<list>--initialize-at-build-time=com.sun.org.apache.xml.internal.serializer.ToXMLStream</list>
<list>--initialize-at-build-time=com.sun.org.apache.xml.internal.serializer.ToXMLStream</list>
<!--list>-Dsvm.targetName=android</list-->
<list>${additionalArgs}</list>
</nativeImageArgs>
</nativeImageArgs>
<bundlesList>
<bundlesList>
<list>com.sun.org.apache.xerces.internal.impl.msg.XMLMessages</list>
<list>com.sun.org.apache.xerces.internal.impl.msg.XMLMessages</list>
</bundlesList>
</bundlesList>
<attachList>
<attachList>
<list>lifecycle</list>
<list>lifecycle</list>
</attachList>
</attachList>
<reflectionList>
<reflectionList>
<list>java.util.logging.FileHandler</list>
<list>java.util.logging.FileHandler</list>
</reflectionList>
</reflectionList>
<mainClass>${MainClassName}</mainClass>
<mainClass>${MainClassName}</mainClass>
</configuration>
</configuration>
</plugin>
</plugin>
<plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.2.0</version>
<version>3.2.0</version>
<configuration>
<configuration>
<includeEmptyDirs>true</includeEmptyDirs>
<includeEmptyDirs>true</includeEmptyDirs>
</configuration>
</configuration>
</plugin>
</plugin>
</plugins>
</plugins>
</build>
</build>
<profiles>
<profile>
<id>android</id>
<properties>
<clientTarget>android</clientTarget>
<additionalArgs>-Dsvm.targetName=android</additionalArgs>
</properties>
</profile>
<profile>
<id>rpi</id>
<properties>
<clientTarget>linux-aarch64</clientTarget>
<additionalArgs>-Dsvm.targetName=linux_raspberrypi</additionalArgs>
</properties>
</profile>
<profile>
<id>windows64</id>
<properties>
<clientTarget>windows</clientTarget>
<additionalArgs>-Dsvm.targetName=windows</additionalArgs>
</properties>
</profile>
<profile>
<id>linux64</id>
<properties>
<additionalArgs>-Dsvm.targetName=linux</additionalArgs>
</properties>
</profile>
</profiles>
<pluginRepositories>
<pluginRepositories>
<pluginRepository>
<pluginRepository>
<id>gluon-releases</id>
<id>gluon-releases</id>
<url>http://nexus.gluonhq.com/nexus/content/repositories/releases/</url>
<url>http://nexus.gluonhq.com/nexus/content/repositories/releases/</url>
</pluginRepository>
</pluginRepository>
<pluginRepository>
<pluginRepository>
<id>gluon-snapshots</id>
<id>gluon-snapshots</id>
<url>https://nexus.gluonhq.com/nexus/content/repositories/public-snapshots</url>
<url>https://nexus.gluonhq.com/nexus/content/repositories/public-snapshots</url>
</pluginRepository>
</pluginRepository>
</pluginRepositories>
</pluginRepositories>
</project>
</project>
package com.stream_pi.client.window.firsttimeuse;
package com.stream_pi.client.window.firsttimeuse;
import com.stream_pi.client.connection.ClientListener;
import com.stream_pi.client.connection.ClientListener;
import com.stream_pi.client.io.Config;
import com.stream_pi.client.io.Config;
import com.stream_pi.client.info.ClientInfo;
import com.stream_pi.client.info.ClientInfo;
import com.stream_pi.client.window.ExceptionAndAlertHandler;
import com.stream_pi.client.window.ExceptionAndAlertHandler;
import com.stream_pi.util.alert.StreamPiAlert;
import com.stream_pi.util.alert.StreamPiAlert;
import com.stream_pi.util.alert.StreamPiAlertType;
import com.stream_pi.util.alert.StreamPiAlertType;
import com.stream_pi.util.exception.SevereException;
import com.stream_pi.util.exception.SevereException;
import com.stream_pi.util.uihelper.HBoxInputBox;
import com.stream_pi.util.uihelper.HBoxInputBox;
import com.stream_pi.util.uihelper.SpaceFiller;
import com.stream_pi.util.uihelper.SpaceFiller;
import com.stream_pi.util.uihelper.SpaceFiller.FillerType;
import com.stream_pi.util.uihelper.SpaceFiller.FillerType;
import com.stream_pi.util.platform.Platform;
import com.stream_pi.util.platform.Platform;
import javafx.geometry.Pos;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.Label;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.TextField;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.scene.layout.VBox;
public class FinalConfigPane extends VBox
public class FinalConfigPane extends VBox
{
{
private TextField clientNicknameTextField;
private TextField clientNicknameTextField;
private TextField serverIPHostNameTextField;
private TextField serverIPHostNameTextField;
private TextField serverPortTextField;
private TextField serverPortTextField;
private TextField displayWidthTextField;
private TextField displayWidthTextField;
private TextField displayHeightTextField;
private TextField displayHeightTextField;
private ExceptionAndAlertHandler exceptionAndAlertHandler;
private ExceptionAndAlertHandler exceptionAndAlertHandler;
private ClientListener clientListener;
private ClientListener clientListener;
public FinalConfigPane(ExceptionAndAlertHandler exceptionAndAlertHandler, ClientListener clientListener)
public FinalConfigPane(ExceptionAndAlertHandler exceptionAndAlertHandler, ClientListener clientListener)
{
{
this.exceptionAndAlertHandler = exceptionAndAlertHandler;
this.exceptionAndAlertHandler = exceptionAndAlertHandler;
this.clientListener = clientListener;
this.clientListener = clientListener;
getStyleClass().add("first_time_use_pane_final_config");
getStyleClass().add("first_time_use_pane_final_config");
Label label = new Label("Thats it. Now just a little bit and then youre set!");
Label label = new Label("Thats it. Now just a little bit and then youre set!");
label.setWrapText(true);
label.setWrapText(true);
VBox.setVgrow(label, Priority.ALWAYS);
VBox.setVgrow(label, Priority.ALWAYS);
label.getStyleClass().add("first_time_use_pane_final_config_label");
label.getStyleClass().add("first_time_use_pane_final_config_label");
clientNicknameTextField = new TextField();
clientNicknameTextField = new TextField();
serverIPHostNameTextField = new TextField();
serverIPHostNameTextField = new TextField();
serverPortTextField = new TextField();
serverPortTextField = new TextField();
displayWidthTextField = new TextField();
displayWidthTextField = new TextField();
displayHeightTextField = new TextField();
displayHeightTextField = new TextField();
HBoxInputBox clientNickNameInputBox = new HBoxInputBox("Nickname", clientNicknameTextField);
HBoxInputBox clientNickNameInputBox = new HBoxInputBox("Nickname", clientNicknameTextField);
HBoxInputBox serverIPHostNameInputBox = new HBoxInputBox("Server IP", serverIPHostNameTextField);
HBoxInputBox serverIPHostNameInputBox = new HBoxInputBox("Server IP", serverIPHostNameTextField);
HBoxInputBox serverIPPortInputBox = new HBoxInputBox("Server Port", serverPortTextField);
HBoxInputBox serverIPPortInputBox = new HBoxInputBox("Server Port", serverPortTextField);
HBoxInputBox displayWidthInputBox = new HBoxInputBox("Display Width", displayWidthTextField);
HBoxInputBox displayWidthInputBox = new HBoxInputBox("Display Width", displayWidthTextField);
HBoxInputBox displayHeightInputBox = new HBoxInputBox("Display Height", displayHeightTextField);
HBoxInputBox displayHeightInputBox = new HBoxInputBox("Display Height", displayHeightTextField);
if(ClientInfo.getInstance().getPlatformType() == Platform.ANDROID)
if(ClientInfo.getInstance().getPlatformType() == Platform.ANDROID)
{
{
displayWidthInputBox.setVisible(false);
displayWidthInputBox.setVisible(false);
displayHeightInputBox.setVisible(false);
displayHeightInputBox.setVisible(false);
}
}
Button confirmButton = new Button("Confirm");
Button confirmButton = new Button("Confirm");
confirmButton.setOnAction(event -> onConfirmButtonClicked());
confirmButton.setOnAction(event -> onConfirmButtonClicked());
HBox bBar = new HBox(confirmButton);
HBox bBar = new HBox(confirmButton);
bBar.setAlignment(Pos.CENTER_RIGHT);
bBar.setAlignment(Pos.CENTER_RIGHT);
VBox v = new VBox(clientNickNameInputBox, serverIPHostNameInputBox, serverIPPortInputBox,
VBox v = new VBox(clientNickNameInputBox, serverIPHostNameInputBox, serverIPPortInputBox,
displayWidthInputBox, displayHeightInputBox);
displayWidthInputBox, displayHeightInputBox);
v.setSpacing(10.0);
v.setSpacing(10.0);
ScrollPane scrollPane = new ScrollPane(v);
ScrollPane scrollPane = new ScrollPane(v);
scrollPane.getStyleClass().add("first_time_use_final_config_pane_scroll_pane");
v.prefWidthProperty().bind(scrollPane.widthProperty().subtract(25));
v.prefWidthProperty().bind(scrollPane.widthProperty().subtract(25));
getChildren().addAll(label, scrollPane,new SpaceFiller(FillerType.VBox), bBar);
getChildren().addAll(label, scrollPane,new SpaceFiller(FillerType.VBox), bBar);
setSpacing(10.0);
setSpacing(10.0);
setVisible(false);
setVisible(false);
}
}
private void onConfirmButtonClicked()
private void onConfirmButtonClicked()
{
{
StringBuilder errors = new StringBuilder();
StringBuilder errors = new StringBuilder();
if(clientNicknameTextField.getText().isBlank())
if(clientNicknameTextField.getText().isBlank())
{
{
errors.append("* Nick name cannot be blank.\n");
errors.append("* Nick name cannot be blank.\n");
}
}
if(serverIPHostNameTextField.getText().isBlank())
if(serverIPHostNameTextField.getText().isBlank())
{
{
errors.append("* Server IP cannot be empty.\n");
errors.append("* Server IP cannot be empty.\n");
}
}
int port = -1;
int port = -1;
try
try
{
{
port = Integer.parseInt(serverPortTextField.getText());
port = Integer.parseInt(serverPortTextField.getText());
if(port < 1024)
if(port < 1024)
errors.append("* Server IP should be above 1024.\n");
errors.append("* Server IP should be above 1024.\n");
}
}
catch (NumberFormatException exception)
catch (NumberFormatException exception)
{
{
errors.append("* Server IP should be a number.\n");
errors.append("* Server IP should be a number.\n");
}
}
double width=-1,height=-1;
double width=-1,height=-1;
if(ClientInfo.getInstance().getPlatformType() != Platform.ANDROID)
if(ClientInfo.getInstance().getPlatformType() != Platform.ANDROID)
{
{
try
try
{
{
width = Double.parseDouble(displayWidthTextField.getText());
width = Double.parseDouble(displayWidthTextField.getText());
if(width < 0)
if(width < 0)
errors.append("* Display Width should be above 0.\n");
errors.append("* Display Width should be above 0.\n");
}
}
catch (NumberFormatException exception)
catch (NumberFormatException exception)
{
{
errors.append("* Display Width should be a number.\n");
errors.append("* Display Width should be a number.\n");
}
}
try
try
{
{
height = Double.parseDouble(displayHeightTextField.getText());
height = Double.parseDouble(displayHeightTextField.getText());
if(height < 0)
if(height < 0)
errors.append("* Display Height should be above 0.\n");
errors.append("* Display Height should be above 0.\n");
}
}
catch (NumberFormatException exception)
catch (NumberFormatException exception)
{
{
errors.append("* Display Height should be a number.\n");
errors.append("* Display Height should be a number.\n");
}
}
}
}
if(errors.toString().isEmpty())
if(errors.toString().isEmpty())
{
{
try
try
{
{
Config.getInstance().setNickName(clientNicknameTextField.getText());
Config.getInstance().setNickName(clientNicknameTextField.getText());
Config.getInstance().setServerHostNameOrIP(serverIPHostNameTextField.getText());
Config.getInstance().setServerHostNameOrIP(serverIPHostNameTextField.getText());
Config.getInstance().setServerPort(port);
Config.getInstance().setServerPort(port);
Config.getInstance().setFirstTimeUse(false);
Config.getInstance().setFirstTimeUse(false);
if(ClientInfo.getInstance().getPlatformType() != Platform.ANDROID)
if(ClientInfo.getInstance().getPlatformType() != Platform.ANDROID)
{
{
Config.getInstance().setStartupWindowSize(
Config.getInstance().setStartupWindowSize(
width, height
width, height
);
);
}
}
Config.getInstance().save();
Config.getInstance().save();
clientListener.init();
clientListener.init();
}
}
catch(SevereException e)
catch(SevereException e)
{
{
exceptionAndAlertHandler.handleSevereException(e);
exceptionAndAlertHandler.handleSevereException(e);
}
}
}
}
else
else
{
{
new StreamPiAlert("Uh Oh", "Please rectify the following errors and try again:\n"+errors.toString(), StreamPiAlertType.ERROR).show();
new StreamPiAlert("Uh Oh", "Please rectify the following errors and try again:\n"+errors.toString(), StreamPiAlertType.ERROR).show();
}
}
}
}
}
}
package com.stream_pi.client.window.firsttimeuse;
package com.stream_pi.client.window.firsttimeuse;
import com.stream_pi.client.Main;
import com.stream_pi.client.Main;
import com.stream_pi.client.connection.ClientListener;
import com.stream_pi.client.connection.ClientListener;
import com.stream_pi.client.window.ExceptionAndAlertHandler;
import com.stream_pi.client.window.ExceptionAndAlertHandler;
import com.stream_pi.util.uihelper.SpaceFiller;
import com.stream_pi.util.uihelper.SpaceFiller;
import com.stream_pi.util.uihelper.SpaceFiller.FillerType;
import com.stream_pi.util.uihelper.SpaceFiller.FillerType;
import javafx.geometry.Insets;
import javafx.geometry.Insets;
import javafx.scene.control.Button;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.Label;
import javafx.scene.layout.HBox;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.Priority;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.scene.text.Font;
public class FirstTimeUse extends VBox{
public class FirstTimeUse extends VBox{
public FirstTimeUse(ExceptionAndAlertHandler exceptionAndAlertHandler, ClientListener clientListener)
public FirstTimeUse(ExceptionAndAlertHandler exceptionAndAlertHandler, ClientListener clientListener)
{
{
Font.loadFont(Main.class.getResourceAsStream("Roboto.ttf"), 13);
Font.loadFont(Main.class.getResourceAsStream("Roboto.ttf"), 13);
getStylesheets().add(Main.class.getResource("style.css").toExternalForm());
getStylesheets().add(Main.class.getResource("style.css").toExternalForm());
getStyleClass().add("first_time_use_pane");
getStyleClass().add("first_time_use_pane");
setSpacing(10.0);
setSpacing(10.0);
setPadding(new Insets(5));
setPadding(new Insets(5));
headingLabel = new Label();
headingLabel = new Label();
headingLabel.getStyleClass().add("first_time_use_pane_heading_label");
headingLabel.getStyleClass().add("first_time_use_pane_heading_label");
StackPane stackPane = new StackPane();
StackPane stackPane = new StackPane();
stackPane.getStyleClass().add("first_time_use_pane_stackpane");
stackPane.getStyleClass().add("first_time_use_pane_stackpane");
VBox.setVgrow(stackPane, Priority.ALWAYS);
VBox.setVgrow(stackPane, Priority.ALWAYS);
welcomePane = new WelcomePane();
welcomePane = new WelcomePane();
licensePane = new LicensePane();
licensePane = new LicensePane();
finalConfigPane = new FinalConfigPane(exceptionAndAlertHandler, clientListener);
finalConfigPane = new FinalConfigPane(exceptionAndAlertHandler, clientListener);
stackPane.getChildren().addAll(
stackPane.getChildren().addAll(
welcomePane,
welcomePane,
licensePane,
licensePane,
finalConfigPane
finalConfigPane
);
);
nextButton = new Button("Next");
nextButton = new Button("Next");
nextButton.setOnAction(event-> onNextButtonClicked());
nextButton.setOnAction(event-> onNextButtonClicked());
previousButton = new Button("Previous");
previousButton = new Button("Previous");
previousButton.setOnAction(event-> onPreviousButtonClicked());
previousButton.setOnAction(event-> onPreviousButtonClicked());
HBox buttonBar = new HBox(previousButton, new SpaceFiller(FillerType.HBox), nextButton);
HBox buttonBar = new HBox(previousButton, new SpaceFiller(FillerType.HBox), nextButton);
buttonBar.getStyleClass().add("first_time_use_pane_button_bar");
buttonBar.setSpacing(10.0);
buttonBar.setSpacing(10.0);
getChildren().addAll(headingLabel, stackPane, buttonBar);
getChildren().addAll(headingLabel, stackPane, buttonBar);
setWindow(WindowName.WELCOME);
setWindow(WindowName.WELCOME);
}
}
private Label headingLabel;
private Label headingLabel;
private Button nextButton;
private Button nextButton;
private Button previousButton;
private Button previousButton;
private WelcomePane welcomePane;
private WelcomePane welcomePane;
private LicensePane licensePane;
private LicensePane licensePane;
private FinalConfigPane finalConfigPane;
private FinalConfigPane finalConfigPane;
private WindowName windowName;
private WindowName windowName;
private void onNextButtonClicked()
private void onNextButtonClicked()
{
{
if(windowName == WindowName.WELCOME)
if(windowName == WindowName.WELCOME)
{
{
setWindow(WindowName.LICENSE);
setWindow(WindowName.LICENSE);
}
}
else if(windowName == WindowName.LICENSE)
else if(windowName == WindowName.LICENSE)
{
{
setWindow(WindowName.FINAL);
setWindow(WindowName.FINAL);
}
}
}
}
private void onPreviousButtonClicked()
private void onPreviousButtonClicked()
{
{
if(windowName == WindowName.FINAL)
if(windowName == WindowName.FINAL)
{
{
setWindow(WindowName.LICENSE);
setWindow(WindowName.LICENSE);
}
}
else if(windowName == WindowName.LICENSE)
else if(windowName == WindowName.LICENSE)
{
{
setWindow(WindowName.WELCOME);
setWindow(WindowName.WELCOME);
}
}
}
}
private void setWindow(WindowName windowName)
private void setWindow(WindowName windowName)
{
{
if (windowName == WindowName.WELCOME)
if (windowName == WindowName.WELCOME)
{
{
this.windowName = WindowName.WELCOME;
this.windowName = WindowName.WELCOME;
welcomePane.toFront();
welcomePane.toFront();
welcomePane.setVisible(true);
welcomePane.setVisible(true);
licensePane.setVisible(false);
licensePane.setVisible(false);
finalConfigPane.setVisible(false);
finalConfigPane.setVisible(false);
headingLabel.setText("");
headingLabel.setText("");
nextButton.setDisable(false);
nextButton.setDisable(false);
previousButton.setDisable(true);
previousButton.setDisable(true);
}
}
else if (windowName == WindowName.LICENSE)
else if (windowName == WindowName.LICENSE)
{
{
this.windowName = WindowName.LICENSE;
this.windowName = WindowName.LICENSE;
licensePane.toFront();
licensePane.toFront();
welcomePane.setVisible(false);
welcomePane.setVisible(false);
licensePane.setVisible(true);
licensePane.setVisible(true);
finalConfigPane.setVisible(false);
finalConfigPane.setVisible(false);
headingLabel.setText("License Agreement");
headingLabel.setText("License Agreement");
nextButton.setDisable(false);
nextButton.setDisable(false);
previousButton.setDisable(false);
previousButton.setDisable(false);
}
}
else if (windowName == WindowName.FINAL)
else if (windowName == WindowName.FINAL)
{
{
this.windowName = WindowName.FINAL;
this.windowName = WindowName.FINAL;
finalConfigPane.toFront();
finalConfigPane.toFront();
welcomePane.setVisible(false);
welcomePane.setVisible(false);
licensePane.setVisible(false);
licensePane.setVisible(false);
finalConfigPane.setVisible(true);
finalConfigPane.setVisible(true);
headingLabel.setText("Finishing up ...");
headingLabel.setText("Finishing up ...");
nextButton.setDisable(true);
nextButton.setDisable(true);
previousButton.setDisable(false);
previousButton.setDisable(false);
}
}
}
}
}
}
.root {
.root {
-fx-font-family : 'Roboto';
-fx-font-family : 'Roboto';
}
}
.action_box
.action_box
{
{
-fx-border-width: 1px;
-fx-border-width: 1px;
-fx-shape: "M100,100 h200 a20,20 0 0 1 20,20 v200 a20,20 0 0 1 -20,20 h-200 a20,20 0 0 1 -20,-20 v-200 a20,20 0 0 1 20,-20 z";
-fx-shape: "M100,100 h200 a20,20 0 0 1 20,20 v200 a20,20 0 0 1 -20,20 h-200 a20,20 0 0 1 -20,-20 v-200 a20,20 0 0 1 20,-20 z";
-fx-border-color : grey;
-fx-border-color : grey;
}
}
.action_box_icon_present
.action_box_icon_present
{
{
}
}
.action_box_icon_not_present
.action_box_icon_not_present
{
{
}
}
.action_box_onclick
.action_box_onclick
{
{
}
}
.settings_heading_label
.settings_heading_label
{
{
-fx-font-size: 20;
-fx-font-size: 20;
}
}
.alert_header
.alert_header
{
{
-fx-padding: 5;
-fx-padding: 5;
}
}
.alert_pane
.alert_pane
{
{
-fx-border-width : 5;
-fx-border-width : 5;
-fx-border-radius : 5;
-fx-border-radius : 5;
-fx-background-radius : 5;
-fx-background-radius : 5;
-fx-max-width : 400;
-fx-max-width : 400;
-fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.6) , 5, 0.0 , 0.0 , 0 );
-fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.6) , 5, 0.0 , 0.0 , 0 );
}
}
.alert_header_icon
.alert_header_icon
{
{
-fx-icon-size : 30;
-fx-icon-size : 30;
}
}
.alert_error_icon
.alert_error_icon
{
{
-fx-icon-color: RED;
-fx-icon-color: RED;
}
}
.alert_information_icon
.alert_information_icon
{
{
-fx-icon-color: BLUE;
-fx-icon-color: BLUE;
}
}
.alert_warning_icon
.alert_warning_icon
{
{
-fx-icon-color: #ffcc00;
-fx-icon-color: #ffcc00;
}
}
.alert_content_pane
.alert_content_pane
{
{
-fx-padding: 5;
-fx-padding: 5;
}
}
.alert_pane_parent, .combobox_pane_parent
.alert_pane_parent, .combobox_pane_parent
{
{
-fx-background-color : rgba(0,0,0,0.5);
-fx-background-color : rgba(0,0,0,0.5);
}
}
.alert_pane_header_text
.alert_pane_header_text
{
{
-fx-font-size: 18;
-fx-font-size: 18;
}
}
.alert_button_bar
.alert_button_bar
{
{
-fx-alignment: CENTER_RIGHT;
-fx-alignment: CENTER_RIGHT;
-fx-spacing: 5;
-fx-spacing: 5;
-fx-padding: 5;
-fx-padding: 5;
}
}
.alert_scroll_pane {
.alert_scroll_pane {
-fx-max-height : 300;
-fx-max-height : 300;
/*-fx-focus-color: #FFFFFF;
/*-fx-focus-color: #FFFFFF;
-fx-faint-focus-color:#FFFFFF;*/
-fx-faint-focus-color:#FFFFFF;*/
}
}
.combo_box
.combo_box
{
{
-fx-alignment:CENTER_LEFT;
-fx-alignment:CENTER_LEFT;
-fx-pref-width:200;
-fx-pref-width:200;
-fx-padding: 5;
-fx-padding: 5;
-fx-border-width : 1;
-fx-border-width : 1;
-fx-border-color : grey;
-fx-border-color : grey;
-fx-border-radius : 3;
-fx-border-radius : 3;
}
}
.combo_box_popup
.combo_box_popup
{
{
-fx-border-width : 5;
-fx-border-width : 5;
-fx-border-radius : 5;
-fx-border-radius : 5;
-fx-background-radius : 5;
-fx-background-radius : 5;
-fx-max-height : 300;
-fx-max-height : 300;
-fx-max-width : 410;
-fx-max-width : 410;
-fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.6) , 5, 0.0 , 0.0 , 0 );
-fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.6) , 5, 0.0 , 0.0 , 0 );
}
}
.combo_box_popup_vbox
.combo_box_popup_vbox
{
{
-fx-padding: 5 5 0 5;
-fx-padding: 5 5 0 5;
-fx-spacing:5;
-fx-spacing:5;
}
}
.combo_box_drop_down_icon
.combo_box_drop_down_icon
{
{
-fx-icon-code: fas-caret-down;
-fx-icon-code: fas-caret-down;
-fx-icon-size: 14;
-fx-icon-size: 14;
}
}
.first_time_use_pane
.first_time_use_pane
{
{
-fx-background-color:white;
-fx-padding : 5;
-fx-padding : 5;
}
}
.first_time_use_pane_heading_label
.first_time_use_pane_heading_label
{
{
-fx-font-size: 20;
-fx-font-size: 20;
}
}
.first_time_use_final_config_pane_scroll_pane
{
-fx-background-color:transparent;
}
.first_time_use_pane_stackpane
.first_time_use_pane_stackpane
{
{
}
}
.first_time_use_pane_welcome
.first_time_use_pane_welcome
{
{
}
}
.first_time_use_pane_license
.first_time_use_pane_license
{
{
-fx-spacing : 10;
-fx-spacing : 10;
}
}
.first_time_use_pane_final_config
.first_time_use_pane_final_config
{
{
}
}
.first_time_use_pane_final_config_label
.first_time_use_pane_final_config_label
{
{
}
}
.first_time_use_welcome_pane_welcome_label
.first_time_use_welcome_pane_welcome_label
{
{
-fx-font-size: 30;
-fx-font-size: 30;
}
}
.first_time_use_welcome_pane_next_to_continue_label
.first_time_use_welcome_pane_next_to_continue_label
{
{
-fx-font-size: 15;
-fx-font-size: 15;
}
}
.scroll-pane
.scroll-pane
{
{
-fx-focus-color:transparent;
-fx-focus-color:transparent;
-fx-faint-focus-color:transparent;
-fx-faint-focus-color:transparent;
}
}
M style_classes.txt
+12 −1
Dashboard - dashboard
Dashboard - dashboard
Settings HBox Bar - dashboard_settings_button_parent
Settings HBox Bar - dashboard_settings_button_parent
Settings Button - dashboard_settings_button
Settings Button - dashboard_settings_button
Icon - dashboard_settings_button_icon
Icon - dashboard_settings_button_icon
Action Grid Pane - action_grid_pane
Action Grid Pane - action_grid_pane
Action Box - action_box
Action Box - action_box
if folder back button :
if folder back button :
Icon : folder_action_back_button_icon
Icon : folder_action_back_button_icon
Is Icon Present ?
Is Icon Present ?
yes : action_box_icon_present
yes : action_box_icon_present
no : action_box_icon_not_present
no : action_box_icon_not_present
Is Action Valid (is plugin by module name found) ?
Is Action Valid (is plugin by module name found) ?
yes : action_box_valid
yes : action_box_valid
no : action_box_invalid
no : action_box_invalid
Action On Click : action_box_onclick
Action On Click : action_box_onclick
Display Text Label - action_box_display_text_label
Display Text Label - action_box_display_text_label
Settings - settings_base
Settings - settings_base
Settings heading label - settings_heading_label
Settings heading label - settings_heading_label
Scroll Pane - settings_base_scroll_pane
Scroll Pane - settings_base_scroll_pane
Base VBox - settings_base_vbox
Base VBox - settings_base_vbox
Button Bar - settings_button_bar
Button Bar - settings_button_bar
First Time Use - first_time_use_pane
Heading Label - first_time_use_pane_heading_label
Stack Pane - first_time_use_pane_stackpane
Welcome Pane - first_time_use_pane_welcome
Head - first_time_use_welcome_pane_welcome_label
Small Label - first_time_use_welcome_pane_next_to_continue_label
License Pane - first_time_use_pane_license
Final Config - first_time_use_pane_final_config
Scroll Pane - first_time_use_final_config_pane_scroll_pane
Button Bar - first_time_use_pane_button_bar