package fi.lpam.gui; import fi.lpam.Main; import fi.lpam.gui.elementit.FontLabel; import fi.lpam.gui.elementit.TabPohja; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.geometry.Pos; import javafx.scene.control.*; import javafx.scene.layout.GridPane; import javafx.scene.layout.HBox; import javafx.scene.text.Font; import java.io.IOException; import java.util.Properties; public class Asetukset extends TabPohja { private static final Properties prop = Main.properties; private static final ObservableList järjestelmäFontit = FXCollections.observableArrayList(Font.getFamilies()); public Asetukset() { super("Asetukset"); HBox yläpalkki = new HBox(); yläpalkki.setSpacing(5); yläpalkki.setAlignment(Pos.CENTER_RIGHT); Button btnNollaa = new Button("Palauta oletukset"); btnNollaa.setFont(BUTTON_FONT); btnNollaa.setOnAction(_ -> palautaOletukset()); yläpalkki.getChildren().addAll( new FontLabel(TEKSTI_FONT, "Muutokset astuvat voimaan sovelluksen käynnistyttyä uudelleen"), btnNollaa); root.setTop(yläpalkki); root.setCenter(getFonttiAsetukset()); } private Spinner tekstiFonttiKoko, buttonFonttiKoko, tulostusFonttiKoko, insets; private ComboBox tekstiFontti, buttonFontti; /** * Luo paneelin fonttien asetusten säätämiseen * @return paneeli */ private GridPane getFonttiAsetukset() { GridPane root = new GridPane(); root.setAlignment(Pos.CENTER); root.setHgap(SPACING *2); root.setVgap(SPACING *2); root.setBorder(BORDER); root.setPadding(INSETS); int row = 0; Label otsikko = new Label("Fonttien asetukset"); otsikko.setFont(TEKSTI_FONT); root.addRow(row++, otsikko); int minFonttiKoko = 8; int maxFonttiKoko = 18; int stepFontti = 1; tekstiFonttiKoko = new Spinner<>(minFonttiKoko, maxFonttiKoko, Integer.parseInt(prop.getProperty("tekstiFonttiKoko")), stepFontti); tekstiFonttiKoko.valueProperty().addListener((_) -> prop.setProperty("tekstiFonttiKoko", String.valueOf(tekstiFonttiKoko.getValue()))); Label tekstinKoko = new Label("Tekstin koko"); tekstinKoko.setFont(TEKSTI_FONT); root.addRow(row++, tekstinKoko, tekstiFonttiKoko); tekstiFontti = new ComboBox<>(); tekstiFontti.setItems(järjestelmäFontit); tekstiFontti.getSelectionModel().select(prop.getProperty("tekstiFontti")); tekstiFontti.valueProperty().addListener((_) -> prop.setProperty("tekstiFontti", tekstiFontti.getValue())); Label tekstinFontti = new Label("Tekstin fontti"); tekstinFontti.setFont(TEKSTI_FONT); root.addRow(row++, tekstinFontti, tekstiFontti); buttonFonttiKoko = new Spinner<>(minFonttiKoko, maxFonttiKoko, Integer.parseInt(prop.getProperty("buttonFonttiKoko")), stepFontti); buttonFonttiKoko.valueProperty().addListener((_) -> prop.setProperty("buttonFonttiKoko", String.valueOf(buttonFonttiKoko.getValue()))); Label nappiTekstinKoko = new Label("Painikkeiden koko"); nappiTekstinKoko.setFont(TEKSTI_FONT); root.addRow(row++, nappiTekstinKoko, buttonFonttiKoko); buttonFontti = new ComboBox<>(); buttonFontti.setItems(järjestelmäFontit); buttonFontti.getSelectionModel().select(prop.getProperty("buttonFontti")); buttonFontti.valueProperty().addListener((_) -> prop.setProperty("buttonFontti", buttonFontti.getValue())); Label napinFontti = new Label("Painikkeiden fontti"); napinFontti.setFont(TEKSTI_FONT); root.addRow(row++, napinFontti, buttonFontti); tulostusFonttiKoko = new Spinner<>(minFonttiKoko, maxFonttiKoko, Integer.parseInt(prop.getProperty("tulostusFonttiKoko")), stepFontti); tulostusFonttiKoko.valueProperty().addListener((_) -> prop.setProperty("tulostusFonttiKoko", String.valueOf(tulostusFonttiKoko.getValue()))); Label tulostusFontinKoko = new Label("Tulostusfontin koko"); tulostusFontinKoko.setFont(TEKSTI_FONT); root.addRow(row++, tulostusFontinKoko, tulostusFonttiKoko); insets = new Spinner<>(0, 10, Integer.parseInt(prop.getProperty("insets")), 1); insets.valueProperty().addListener((_) -> prop.setProperty("insets", String.valueOf(insets.getValue()))); Label insetsi = new Label("Yleinen fyllinki"); insetsi.setFont(TEKSTI_FONT); root.addRow(row++, insetsi, insets); return root; } private void palautaOletukset() { try { Properties defaults = new Properties(); defaults.load(Main.class.getClassLoader().getResourceAsStream("defaults.properties")); tekstiFonttiKoko.getValueFactory().setValue(Integer.valueOf(defaults.getProperty("tekstiFonttiKoko"))); tekstiFontti.getSelectionModel().select(defaults.getProperty("tekstiFontti")); buttonFonttiKoko.getValueFactory().setValue(Integer.valueOf(defaults.getProperty("buttonFonttiKoko"))); buttonFontti.getSelectionModel().select(defaults.getProperty("buttonFontti")); tulostusFonttiKoko.getValueFactory().setValue(Integer.valueOf(defaults.getProperty("tulostusFonttiKoko"))); insets.getValueFactory().setValue(Integer.valueOf(defaults.getProperty("insets"))); } catch (IOException e) { //noinspection CallToPrintStackTrace e.printStackTrace(); } } }