All Downloads are FREE. Search and download functionalities are using the official Maven repository.

application.ui.about.AboutController Maven / Gradle / Ivy

package application.ui.about;


import java.awt.Desktop;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.stream.Collectors;

import application.common.BuildInfo;
import application.l10n.Messages;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Hyperlink;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.text.Text;
import javafx.stage.Stage;

/**
 * Provides a controller for the dialog that displays information about the software.
 * @author Joel Håkansson
 *
 */
public class AboutController {
	private static final String PEF_URL = "http://pef-format.org";
	private static final String BRAILLE_APPS_URL = "https://github.com/brailleapps";
	@FXML private Label title;
	@FXML private Text description;
	@FXML private Text version;
	@FXML private Label environment;
	@FXML private Hyperlink pefLink;
	@FXML private Hyperlink contributeLink;
	@FXML private Button ok;
	@FXML private TextArea configTextArea;

	/**
	 * Initializes the controller.
	 */
	@FXML void initialize() {
		version.setText(Messages.APPLICATION_VERSION.localize(BuildInfo.VERSION, BuildInfo.BUILD));
		environment.setText(Messages.APPLICATION_ENVIRONMENT.localize(
				System.getProperty("java.version")));
		pefLink.setText(PEF_URL);
		contributeLink.setText(BRAILLE_APPS_URL);
		configTextArea.setText(System.getProperties().entrySet().stream()
				.sorted((v1, v2)->String.valueOf(v1.getKey()).compareTo(String.valueOf(v2.getKey())))
				.map(v->v.getKey()+"="+v.getValue())
				.collect(Collectors.joining("\n", "", "")));
	}

	/**
	 * Closes the window.
	 */
	@FXML void closeWindow() {
		((Stage)ok.getScene().getWindow()).close();
	}

	/**
	 * Opens the pef-format website in a browser.
	 */
	@FXML void visitPefFormat() {
		visit(PEF_URL);
	}

	/**
	 * Opens the github organization in a browser.
	 */
	@FXML void visitGithub() {
		visit(BRAILLE_APPS_URL);
	}

	private void visit(String url) {
		if (Desktop.isDesktopSupported()) {
			new Thread(()->{
				// Wrapping this in a new thread in order to fix
				// https://github.com/brailleapps/dotify-studio/issues/44
				try {
					Desktop.getDesktop().browse(new URI(url));
				} catch (IOException | URISyntaxException e) {
	
				}
			}).start();
		}
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy