From 9cc55be77186a9c999cb4cb1788fb360501c001b Mon Sep 17 00:00:00 2001 From: Lauri Maaninka Date: Wed, 13 May 2026 01:56:21 +0300 Subject: [PATCH] =?UTF-8?q?#17=20melkein=20valmis,=20vaatii=20viel=C3=A4?= =?UTF-8?q?=20testaamista?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/fi/lpam/App.java | 11 ++- src/main/java/fi/lpam/gui/Asetukset.java | 98 +++++++++++++++++-- .../java/fi/lpam/gui/Asiakashallinta.java | 1 + .../java/fi/lpam/gui/Kierroshallinta.java | 16 +-- ...ListCell.java => AsiakasMCLVListCell.java} | 8 +- .../java/fi/lpam/gui/elementit/TabPohja.java | 18 +++- .../java/fi/lpam/tulostajat/Tulostaja.java | 3 +- src/main/resources/defaults.properties | 11 ++- 8 files changed, 136 insertions(+), 30 deletions(-) rename src/main/java/fi/lpam/gui/elementit/{AsiakasListCell.java => AsiakasMCLVListCell.java} (87%) diff --git a/src/main/java/fi/lpam/App.java b/src/main/java/fi/lpam/App.java index 13d8797..4a96af0 100644 --- a/src/main/java/fi/lpam/App.java +++ b/src/main/java/fi/lpam/App.java @@ -26,8 +26,8 @@ public class App extends Application { TabPane root = new TabPane(); root.setSide(Side.LEFT); root.setTabMinWidth(50); - root.setTabMinHeight(35); - root.setTabMaxHeight(50); + root.setTabMinHeight(Double.parseDouble(Main.properties.getProperty("buttonFonttiKoko"))*2); + root.setTabMaxHeight(Double.parseDouble(Main.properties.getProperty("buttonFonttiKoko"))*2); Tab asiakasHallinta, kierrostenHallinta, kuljetusListat, kuljetetut, asetukset; asiakasHallinta = new Tab("Asiakashallinta", new Asiakashallinta()); @@ -49,7 +49,10 @@ public class App extends Application { for (Tab tab : root.getTabs()) { tab.setClosable(false); - tab.setStyle("-fx-font-size: 18px; -fx-font-weight: bold; -fx-font-family: Open Sans"); + tab.setStyle( + "-fx-font-size: " + Main.properties.getProperty("buttonFonttiKoko") + "px;" + + " -fx-font-weight: bold;" + + " -fx-font-family: " + Main.properties.getProperty("buttonFontti")); } Scene scene = new Scene(root); @@ -65,6 +68,6 @@ public class App extends Application { primaryStage.show(); primaryStage.getIcons().add(new Image(Objects.requireNonNull(Main.class.getClassLoader().getResourceAsStream("kuljetusruokalaatikko.jpg")))); - if (!Main.properties.getProperty("version").equals(Main.properties.getProperty("viimeisinVersio"))) new MuutosIlmoitus(); + if (!Main.properties.getProperty("version").equals(Main.properties.getProperty("viimeisinVersio", "0.0.0"))) new MuutosIlmoitus(); } } \ No newline at end of file diff --git a/src/main/java/fi/lpam/gui/Asetukset.java b/src/main/java/fi/lpam/gui/Asetukset.java index 423086a..2c84481 100644 --- a/src/main/java/fi/lpam/gui/Asetukset.java +++ b/src/main/java/fi/lpam/gui/Asetukset.java @@ -1,14 +1,27 @@ package fi.lpam.gui; +import fi.lpam.Main; import fi.lpam.gui.elementit.TabPohja; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; import javafx.geometry.Pos; import javafx.scene.control.Button; +import javafx.scene.control.ComboBox; import javafx.scene.control.Label; +import javafx.scene.control.Spinner; import javafx.scene.layout.BorderPane; +import javafx.scene.layout.GridPane; import javafx.scene.layout.HBox; +import javafx.scene.text.Font; + +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() { BorderPane root = new BorderPane(); root.setPadding(oletusInsets); @@ -16,23 +29,90 @@ public class Asetukset extends TabPohja { HBox yläpalkki = new HBox(); yläpalkki.setSpacing(5); yläpalkki.setAlignment(Pos.CENTER_RIGHT); - Button btnTallenna = new Button("Tallenna"); - btnTallenna.setFont(buttonFont); - btnTallenna.setOnAction(e -> tallennaAsetukset()); - yläpalkki.getChildren().add(btnTallenna); + Button btnNollaa = new Button("Palauta oletukset"); + btnNollaa.setFont(buttonFont); + btnNollaa.setOnAction(_ -> palautaOletukset()); + yläpalkki.getChildren().add(btnNollaa); root.setTop(yläpalkki); + root.setLeft(getFonttiAsetukset()); - root.setCenter(new Label("Asetukset")); + Label asetukset = new Label("Asetukset"); + asetukset.setFont(tekstiFont); + root.setRight(asetukset); this.getChildren().add(root); } - private void tallennaAsetukset() { - throw new RuntimeException("Not implemented"); + private Spinner tekstiFonttiKoko, buttonFonttiKoko, tulostusFonttiKoko, insets; + private ComboBox tekstiFontti, buttonFontti; + private int minFonttiKoko = 8; + private int maxFonttiKoko = 30; + private int stepFontti = 1; + + /** + * Luo paneelin fonttien asetusten säätämiseen + * @return paneeli + */ + private GridPane getFonttiAsetukset() { + GridPane root = new GridPane(); + root.setAlignment(Pos.CENTER); + root.setHgap(10); + root.setVgap(10); + root.setBorder(oletusBorder); + root.setPadding(oletusInsets); + int row = 0; + + Label otsikko = new Label("Fonttien asetukset"); + otsikko.setFont(tekstiFont); + root.addRow(row++, otsikko); + + tekstiFonttiKoko = new Spinner<>(minFonttiKoko, maxFonttiKoko, Double.parseDouble(prop.getProperty("tekstiFonttiKoko")), stepFontti); + tekstiFonttiKoko.setEditable(true); + tekstiFonttiKoko.valueProperty().addListener((_) -> prop.setProperty("tekstiFonttiKoko", String.valueOf(tekstiFonttiKoko.getValue()))); + Label tekstinKoko = new Label("Tekstin koko"); + tekstinKoko.setFont(tekstiFont); + 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(tekstiFont); + root.addRow(row++, tekstinFontti, tekstiFontti); + + buttonFonttiKoko = new Spinner<>(minFonttiKoko, maxFonttiKoko, Double.parseDouble(prop.getProperty("buttonFonttiKoko")), stepFontti); + buttonFonttiKoko.valueProperty().addListener((_) -> prop.setProperty("buttonFonttiKoko", String.valueOf(buttonFonttiKoko.getValue()))); + Label nappiTekstinKoko = new Label("Painikkeiden koko"); + nappiTekstinKoko.setFont(tekstiFont); + 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(tekstiFont); + root.addRow(row++, napinFontti, buttonFontti); + + tulostusFonttiKoko = new Spinner<>(minFonttiKoko, maxFonttiKoko, Double.parseDouble(prop.getProperty("tulostusFonttiKoko")), stepFontti); + tulostusFonttiKoko.valueProperty().addListener((_) -> prop.setProperty("tulostusFonttiKoko", String.valueOf(tulostusFonttiKoko.getValue()))); + Label tulostusFontinKoko = new Label("Tulostusfontin koko"); + tulostusFontinKoko.setFont(tekstiFont); + root.addRow(row++, tulostusFontinKoko, tulostusFonttiKoko); + + insets = new Spinner<>(0, 10, Double.parseDouble(prop.getProperty("insets")), 1); + insets.valueProperty().addListener((_) -> prop.setProperty("insets", String.valueOf(insets.getValue()))); + Label insetsi = new Label("Yleinen fyllinki"); + insetsi.setFont(tekstiFont); + root.addRow(row++, insetsi, insets); + + return root; } - private void näytäAsetukset() { - throw new RuntimeException("Not implemented"); + private void palautaOletukset() { + + } } diff --git a/src/main/java/fi/lpam/gui/Asiakashallinta.java b/src/main/java/fi/lpam/gui/Asiakashallinta.java index 4712fc7..78414cb 100644 --- a/src/main/java/fi/lpam/gui/Asiakashallinta.java +++ b/src/main/java/fi/lpam/gui/Asiakashallinta.java @@ -37,6 +37,7 @@ public class Asiakashallinta extends TabPohja { HBox yläpalkinNapit = new HBox(); yläpalkinNapit.setSpacing(5); + yläpalkinNapit.setPadding(oletusInsets); yläpalkki.setRight(yläpalkinNapit); Button avaaVersioloki = new Button("VERSIOLOKI"); diff --git a/src/main/java/fi/lpam/gui/Kierroshallinta.java b/src/main/java/fi/lpam/gui/Kierroshallinta.java index 576f4bd..eeddecd 100644 --- a/src/main/java/fi/lpam/gui/Kierroshallinta.java +++ b/src/main/java/fi/lpam/gui/Kierroshallinta.java @@ -4,7 +4,7 @@ import com.dlsc.gemsfx.MultiColumnListView; import fi.lpam.dataluokat.Asiakas; import fi.lpam.dataluokat.Kierros; -import fi.lpam.gui.elementit.AsiakasListCell; +import fi.lpam.gui.elementit.AsiakasMCLVListCell; import fi.lpam.gui.elementit.TabPohja; import javafx.collections.FXCollections; @@ -30,7 +30,7 @@ public class Kierroshallinta extends TabPohja { root.setPadding(oletusInsets); root.setCenter(mclv); - mclv.setCellFactory(_ -> new AsiakasListCell(mclv)); + mclv.setCellFactory(_ -> new AsiakasMCLVListCell(mclv)); mclv.setPlaceholderFrom(new Asiakas("")); mclv.setPlaceholderTo(new Asiakas("")); rakennaSarakkeet(); @@ -51,11 +51,11 @@ public class Kierroshallinta extends TabPohja { int uudenKierroksenNumero = mclv.getColumns().size(); lisaaKierros(new Kierros(uudenKierroksenNumero, FXCollections.observableArrayList(new ArrayList<>()))); }); - lisääKierros.setFont(TabPohja.buttonFont); + lisääKierros.setFont(buttonFont); yläpalkinNapit.getChildren().add(lisääKierros); Button tallenna = new Button("Tallenna kierrokset"); - tallenna.setFont(TabPohja.buttonFont); + tallenna.setFont(buttonFont); tallenna.setOnAction(_ ->tallennaKierrokset()); yläpalkinNapit.getChildren().add(tallenna); @@ -84,7 +84,9 @@ public class Kierroshallinta extends TabPohja { } } MultiColumnListView.ListViewColumn colEiKierroksella = new MultiColumnListView.ListViewColumn<>(); - colEiKierroksella.setHeader(new Label("Ei vielä kierroksella")); + Label labelEiKierroksella = new Label("Ei vielä kierroksella"); + labelEiKierroksella.setFont(tekstiFont); + colEiKierroksella.setHeader(labelEiKierroksella); colEiKierroksella.setItems(FXCollections.observableArrayList(eiKierroksella)); mclv.getColumns().add(colEiKierroksella); } @@ -92,7 +94,9 @@ public class Kierroshallinta extends TabPohja { private void lisaaKierros(Kierros kierros) { if (kierros.getId() == -1) kierrokset.add(kierros); MultiColumnListView.ListViewColumn uusiSarake = new MultiColumnListView.ListViewColumn<>(); - uusiSarake.setHeader(new Label("Kierros " + kierros.getKierrosNumero())); + Label label = new Label("Kierros " + kierros.getKierrosNumero()); + label.setFont(tekstiFont); + uusiSarake.setHeader(label); uusiSarake.setItems(kierros.getAsiakkaat()); mclv.getColumns().add(kierros.getKierrosNumero()-1, uusiSarake); } diff --git a/src/main/java/fi/lpam/gui/elementit/AsiakasListCell.java b/src/main/java/fi/lpam/gui/elementit/AsiakasMCLVListCell.java similarity index 87% rename from src/main/java/fi/lpam/gui/elementit/AsiakasListCell.java rename to src/main/java/fi/lpam/gui/elementit/AsiakasMCLVListCell.java index 838651e..5d76f4b 100644 --- a/src/main/java/fi/lpam/gui/elementit/AsiakasListCell.java +++ b/src/main/java/fi/lpam/gui/elementit/AsiakasMCLVListCell.java @@ -12,13 +12,13 @@ import javafx.scene.layout.StackPane; import javafx.scene.layout.VBox; -public class AsiakasListCell extends MultiColumnListView.ColumnListCell { +public class AsiakasMCLVListCell extends MultiColumnListView.ColumnListCell { private final StackPane wrapper; - public AsiakasListCell(MultiColumnListView multiColumnListView) { + public AsiakasMCLVListCell(MultiColumnListView multiColumnListView) { super(multiColumnListView); - this.setMinHeight(60); - this.setMaxHeight(60); + this.setMinHeight(TabPohja.tekstiFont.getSize()*4); + this.setMaxHeight(TabPohja.tekstiFont.getSize()*4); VBox content = new VBox(); content.visibleProperty().bind(placeholder.not().and(emptyProperty().not())); diff --git a/src/main/java/fi/lpam/gui/elementit/TabPohja.java b/src/main/java/fi/lpam/gui/elementit/TabPohja.java index f0d74f4..d5b3a76 100644 --- a/src/main/java/fi/lpam/gui/elementit/TabPohja.java +++ b/src/main/java/fi/lpam/gui/elementit/TabPohja.java @@ -1,22 +1,30 @@ package fi.lpam.gui.elementit; +import fi.lpam.Main; import javafx.geometry.Insets; import javafx.scene.layout.*; import javafx.scene.paint.Color; import javafx.scene.text.Font; import javafx.scene.text.FontWeight; +import java.util.Properties; + /** * Käyttöliittymän pohja */ public class TabPohja extends StackPane { - public static final Insets oletusInsets = new Insets(5); - public static final String oletusStyle = "-fx-background-color: lightgray;"; - public static final Font buttonFont = Font.font("Open Sans", FontWeight.BOLD, 16); - public static final Font tekstiFont = Font.font("Open Sans", FontWeight.NORMAL, 16); - public static final Border oletusBorder = new Border(new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, new CornerRadii(5), BorderWidths.DEFAULT)); + public static Insets oletusInsets; + public static Border oletusBorder = new Border(new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, new CornerRadii(5), BorderWidths.DEFAULT)); + public static String oletusStyle; + public static Font buttonFont; + public static Font tekstiFont; public TabPohja() { + Properties prop = Main.properties; + oletusInsets = new Insets(Double.parseDouble(prop.getProperty("insets"))); + oletusStyle = "-fx-background-color: " + prop.getProperty("taustaVari") + ";"; + buttonFont = Font.font(prop.getProperty("buttonFontti"), FontWeight.BOLD, Double.parseDouble(prop.getProperty("buttonFonttiKoko"))); + tekstiFont = Font.font(prop.getProperty("tekstiFontti"), FontWeight.NORMAL, Double.parseDouble(prop.getProperty("tekstiFonttiKoko"))); this.setStyle(oletusStyle); this.setPadding(oletusInsets); this.setBorder(oletusBorder); diff --git a/src/main/java/fi/lpam/tulostajat/Tulostaja.java b/src/main/java/fi/lpam/tulostajat/Tulostaja.java index 20dd42d..d428427 100644 --- a/src/main/java/fi/lpam/tulostajat/Tulostaja.java +++ b/src/main/java/fi/lpam/tulostajat/Tulostaja.java @@ -1,5 +1,6 @@ package fi.lpam.tulostajat; +import fi.lpam.Main; import fi.lpam.gui.virheDialogit.SiirtoVirhe; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; @@ -17,7 +18,7 @@ import java.io.IOException; public abstract class Tulostaja { final PDRectangle SIVUKOKO = PDRectangle.A4; final PDFont FONTTI = new PDType1Font(Standard14Fonts.FontName.HELVETICA); - final float FONTTI_KOKO = 13; + final float FONTTI_KOKO = Float.parseFloat(Main.properties.getProperty("tulostusFonttiKoko")); final float MARGINAALI = 50; final float RIVI_KORKEUS = FONTTI_KOKO * 1.2F; diff --git a/src/main/resources/defaults.properties b/src/main/resources/defaults.properties index b73f2ce..b93ba0e 100644 --- a/src/main/resources/defaults.properties +++ b/src/main/resources/defaults.properties @@ -1,2 +1,11 @@ version=${project.version} -viimeisinVersio=0.0.0 \ No newline at end of file + +buttonFonttiKoko=16 +buttonFontti=Open Sans +tekstiFonttiKoko=16 +tekstiFontti=Open Sans + +tulostusFonttiKoko=13 + +taustaVari=lightgray +insets=5 \ No newline at end of file