From 342f62dedd2e42d9166855433e669ddc382a2e0c Mon Sep 17 00:00:00 2001 From: laurimaaninka Date: Thu, 14 May 2026 23:24:22 +0300 Subject: [PATCH] =?UTF-8?q?#fix=2019=20TabPohja=20on=20nyt=20Tab,=20joka?= =?UTF-8?q?=20hoitaa=20monia=20asioita=20kuin=20itsest=C3=A4=C3=A4n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: laurimaaninka --- src/main/java/fi/lpam/App.java | 59 +++++-------- src/main/java/fi/lpam/gui/Asetukset.java | 29 +++---- src/main/java/fi/lpam/gui/AsiakasIkkuna.java | 14 ++-- .../java/fi/lpam/gui/Asiakashallinta.java | 84 ++++++++++--------- .../java/fi/lpam/gui/Kierroshallinta.java | 22 +++-- src/main/java/fi/lpam/gui/KuljetusListat.java | 40 +++++---- .../java/fi/lpam/gui/KuljetusRaportit.java | 21 ++--- .../gui/elementit/AsiakasMCLVListCell.java | 6 +- .../fi/lpam/gui/elementit/MuutosIlmoitus.java | 7 +- .../java/fi/lpam/gui/elementit/TabPohja.java | 54 ++++++++---- src/main/resources/defaults.properties | 2 + 11 files changed, 175 insertions(+), 163 deletions(-) diff --git a/src/main/java/fi/lpam/App.java b/src/main/java/fi/lpam/App.java index 4a96af0..2947491 100644 --- a/src/main/java/fi/lpam/App.java +++ b/src/main/java/fi/lpam/App.java @@ -2,11 +2,10 @@ package fi.lpam; import fi.lpam.dataluokat.Tietokanta; import fi.lpam.gui.*; import fi.lpam.gui.elementit.MuutosIlmoitus; +import fi.lpam.gui.elementit.TabPohja; import javafx.application.Application; import javafx.geometry.Side; import javafx.scene.Scene; -import javafx.scene.control.Alert; -import javafx.scene.control.Tab; import javafx.scene.control.TabPane; import javafx.scene.image.Image; import javafx.stage.Stage; @@ -15,6 +14,8 @@ import java.util.Objects; @SuppressWarnings("InstantiationOfUtilityClass") public class App extends Application { + TabPohja asiakasHallinta, kierrostenHallinta, kuljetusListat, kuljetetut, asetukset; + static void main() { launch(); } @@ -23,41 +24,6 @@ public class App extends Application { public void start(Stage primaryStage) { new Tietokanta(Main.dev); - TabPane root = new TabPane(); - root.setSide(Side.LEFT); - root.setTabMinWidth(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()); - kierrostenHallinta = new Tab("Kierrostenhallinta"); - kuljetusListat = new Tab("Kuljetuslistat"); - kuljetetut = new Tab("Kuljetetut"); - asetukset = new Tab("Asetukset"); - root.getTabs().addAll(asiakasHallinta, kierrostenHallinta, kuljetusListat, kuljetetut, asetukset); - - root.getSelectionModel().selectedItemProperty().addListener((_, _, newValue) -> { - switch (newValue.getText()) { - case "Asiakashallinta": newValue.setContent(new Asiakashallinta()); break; - case "Kierrostenhallinta": newValue.setContent(new Kierroshallinta()); break; - case "Kuljetuslistat": newValue.setContent(new KuljetusListat()); break; - case "Kuljetetut": newValue.setContent(new KuljetusRaportit()); break; - case "Asetukset": newValue.setContent(new Asetukset()); break; - } - }); - - for (Tab tab : root.getTabs()) { - tab.setClosable(false); - 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); - primaryStage.setScene(scene); - StringBuilder title = new StringBuilder(); title.append("Ruokamanageri"); title.append(" v").append(Main.properties.getProperty("version")); @@ -65,9 +31,26 @@ public class App extends Application { primaryStage.setTitle(title.toString()); primaryStage.setMaximized(true); - primaryStage.show(); + primaryStage.getIcons().add(new Image(Objects.requireNonNull(Main.class.getClassLoader().getResourceAsStream("kuljetusruokalaatikko.jpg")))); + TabPane tabPane = new TabPane(); + tabPane.setSide(Side.LEFT); + tabPane.setTabMinWidth(50); + tabPane.setTabMinHeight(Double.parseDouble(Main.properties.getProperty("buttonFonttiKoko"))*2); + tabPane.setTabMaxHeight(Double.parseDouble(Main.properties.getProperty("buttonFonttiKoko"))*2); + + asiakasHallinta = new Asiakashallinta(); + kierrostenHallinta = new Kierroshallinta(); + kuljetusListat = new KuljetusListat(); + kuljetetut = new KuljetusRaportit(); + asetukset = new Asetukset(); + tabPane.getTabs().addAll(asiakasHallinta, kierrostenHallinta, kuljetusListat, kuljetetut, asetukset); + + Scene scene = new Scene(tabPane); + primaryStage.setScene(scene); + primaryStage.show(); + 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 1a4d66c..e87ebae 100644 --- a/src/main/java/fi/lpam/gui/Asetukset.java +++ b/src/main/java/fi/lpam/gui/Asetukset.java @@ -6,7 +6,6 @@ import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.geometry.Pos; import javafx.scene.control.*; -import javafx.scene.layout.BorderPane; import javafx.scene.layout.GridPane; import javafx.scene.layout.HBox; import javafx.scene.text.Font; @@ -21,21 +20,19 @@ public class Asetukset extends TabPohja { public Asetukset() { - BorderPane root = new BorderPane(); - root.setPadding(oletusInsets); + 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(buttonFont); + btnNollaa.setFont(BUTTON_FONT); btnNollaa.setOnAction(_ -> palautaOletukset()); yläpalkki.getChildren().add(btnNollaa); root.setTop(yläpalkki); root.setCenter(getFonttiAsetukset()); - this.getChildren().add(root); } private Spinner tekstiFonttiKoko, buttonFonttiKoko, tulostusFonttiKoko, insets; @@ -48,14 +45,14 @@ public class Asetukset extends TabPohja { private GridPane getFonttiAsetukset() { GridPane root = new GridPane(); root.setAlignment(Pos.CENTER); - root.setHgap(spacing*2); - root.setVgap(spacing*2); - root.setBorder(oletusBorder); - root.setPadding(oletusInsets); + 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(tekstiFont); + otsikko.setFont(TEKSTI_FONT); root.addRow(row++, otsikko); int minFonttiKoko = 8; @@ -64,7 +61,7 @@ public class Asetukset extends TabPohja { 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(tekstiFont); + tekstinKoko.setFont(TEKSTI_FONT); root.addRow(row++, tekstinKoko, tekstiFonttiKoko); tekstiFontti = new ComboBox<>(); @@ -72,13 +69,13 @@ public class Asetukset extends TabPohja { tekstiFontti.getSelectionModel().select(prop.getProperty("tekstiFontti")); tekstiFontti.valueProperty().addListener((_) -> prop.setProperty("tekstiFontti", tekstiFontti.getValue())); Label tekstinFontti = new Label("Tekstin fontti"); - tekstinFontti.setFont(tekstiFont); + 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(tekstiFont); + nappiTekstinKoko.setFont(TEKSTI_FONT); root.addRow(row++, nappiTekstinKoko, buttonFonttiKoko); buttonFontti = new ComboBox<>(); @@ -86,19 +83,19 @@ public class Asetukset extends TabPohja { buttonFontti.getSelectionModel().select(prop.getProperty("buttonFontti")); buttonFontti.valueProperty().addListener((_) -> prop.setProperty("buttonFontti", buttonFontti.getValue())); Label napinFontti = new Label("Painikkeiden fontti"); - napinFontti.setFont(tekstiFont); + 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(tekstiFont); + 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(tekstiFont); + insetsi.setFont(TEKSTI_FONT); root.addRow(row++, insetsi, insets); return root; diff --git a/src/main/java/fi/lpam/gui/AsiakasIkkuna.java b/src/main/java/fi/lpam/gui/AsiakasIkkuna.java index e13175f..0cc6461 100644 --- a/src/main/java/fi/lpam/gui/AsiakasIkkuna.java +++ b/src/main/java/fi/lpam/gui/AsiakasIkkuna.java @@ -52,13 +52,9 @@ public class AsiakasIkkuna extends Stage { }}); Tab tabKuljetusTiedot, tabAsiakastiedot; - tabKuljetusTiedot = new Tab("Kuljetustiedot"); - tabAsiakastiedot = new Tab("Asiakastiedot"); + tabKuljetusTiedot = new TabPohja("Kuljetustiedot"); + tabAsiakastiedot = new TabPohja("Asiakastiedot"); tabPane.getTabs().addAll(tabKuljetusTiedot, tabAsiakastiedot); - for (Tab tab : tabPane.getTabs()) { - tab.setClosable(false); - tab.setStyle("-fx-font-size: 18px; -fx-font-weight: bold; -fx-font-family: Open Sans"); - } GridPane kuljetusTiedot = new GridPane(); kuljetusTiedot.setPadding(new Insets(15)); @@ -158,15 +154,15 @@ public class AsiakasIkkuna extends Stage { HBox napit = new HBox(); Button peruuta = new Button("Peruuta"); - peruuta.setFont(TabPohja.buttonFont); + peruuta.setFont(TabPohja.BUTTON_FONT); peruuta.setOnAction(_ -> this.close()); Button tallenna = new Button("Tallenna"); - tallenna.setFont(TabPohja.buttonFont); + tallenna.setFont(TabPohja.BUTTON_FONT); tallenna.setOnAction(_ -> tallenna()); napit.getChildren().addAll(peruuta, tallenna); napit.setAlignment(Pos.CENTER_RIGHT); napit.setSpacing(10); - napit.setPadding(TabPohja.oletusInsets); + napit.setPadding(TabPohja.INSETS); VBox root = new VBox(); diff --git a/src/main/java/fi/lpam/gui/Asiakashallinta.java b/src/main/java/fi/lpam/gui/Asiakashallinta.java index 7aaf6ae..a18d9df 100644 --- a/src/main/java/fi/lpam/gui/Asiakashallinta.java +++ b/src/main/java/fi/lpam/gui/Asiakashallinta.java @@ -2,6 +2,7 @@ package fi.lpam.gui; import fi.lpam.Main; import fi.lpam.dataluokat.Asiakas; +import fi.lpam.gui.elementit.FontLabel; import fi.lpam.gui.elementit.MaaraTableColumn; import fi.lpam.gui.elementit.TabPohja; import javafx.collections.FXCollections; @@ -26,46 +27,9 @@ public class Asiakashallinta extends TabPohja { final TableView tvAsiakkaat = new TableView<>(); public Asiakashallinta() { - BorderPane root = new BorderPane(); - this.getChildren().add(root); - root.setPadding(oletusInsets); + super("Asiakashallinta"); + root.setTop(getYläpalkki()); - BorderPane yläpalkki = new BorderPane(); - root.setTop(yläpalkki); - Label otsikko = new Label("Asiakashallinta"); - otsikko.setFont(tekstiFont); - yläpalkki.setLeft(otsikko); - - HBox yläpalkinNapit = new HBox(); - yläpalkinNapit.setSpacing(Double.parseDouble(Main.properties.getProperty("insets"))); - yläpalkinNapit.setPadding(oletusInsets); - yläpalkki.setRight(yläpalkinNapit); - - Button avaaVersioloki = new Button("VERSIOLOKI"); - avaaVersioloki.setFont(buttonFont); - avaaVersioloki.setOnAction(_ -> { - try { - Desktop.getDesktop().browse(new URI("https://git.lpam.fi/laurimaaninka/Ruokamanageri/src/branch/master/CHANGELOG.md")); - } catch (IOException | URISyntaxException e) { - System.out.println(e.getMessage()); - } - }); - yläpalkinNapit.getChildren().add(avaaVersioloki); - - Button poistaValittu = new Button("Poista"); - poistaValittu.setOnAction(_ -> poistaValittu()); - poistaValittu.setFont(buttonFont); - yläpalkinNapit.getChildren().add(poistaValittu); - - Button muokkaaAsiakasta = new Button("Muokkaa"); - muokkaaAsiakasta.setOnAction(_ -> muokkaaValittua()); - muokkaaAsiakasta.setFont(buttonFont); - yläpalkinNapit.getChildren().add(muokkaaAsiakasta); - - Button uusiAsiakas = new Button("Uusi asiakas"); - uusiAsiakas.setOnAction(_ -> uusiAsiakas()); - uusiAsiakas.setFont(buttonFont); - yläpalkinNapit.getChildren().add(uusiAsiakas); tvAsiakkaat.setEditable(false); tvAsiakkaat.setPlaceholder(new Label("Ei vielä tietoja")); @@ -141,8 +105,50 @@ public class Asiakashallinta extends TabPohja { } tvAsiakkaat.setItems(FXCollections.observableArrayList(Objects.requireNonNull(Asiakas.haeKaikki()))); + //tvAsiakkaat.setPrefSize(1920, 1080); //Tämä estää oudon bugin? (asiakkaiden ollessa 31 TV sekoaa) } + private BorderPane getYläpalkki() { + BorderPane yläpalkki = new BorderPane(); + Label otsikko = new FontLabel(TEKSTI_FONT, "Asiakashallinta"); + yläpalkki.setLeft(otsikko); + + HBox yläpalkinNapit = new HBox(); + yläpalkinNapit.setSpacing(SPACING); + yläpalkinNapit.setPadding(INSETS); + yläpalkki.setRight(yläpalkinNapit); + + Button avaaVersioloki = new Button("VERSIOLOKI"); + avaaVersioloki.setFont(BUTTON_FONT); + avaaVersioloki.setOnAction(_ -> { + try { + Desktop.getDesktop().browse(new URI("https://git.lpam.fi/laurimaaninka/Ruokamanageri/src/branch/master/CHANGELOG.md")); + } catch (IOException | URISyntaxException e) { + System.out.println(e.getMessage()); + } + }); + yläpalkinNapit.getChildren().add(avaaVersioloki); + + Button poistaValittu = new Button("Poista"); + poistaValittu.setOnAction(_ -> poistaValittu()); + poistaValittu.setFont(BUTTON_FONT); + yläpalkinNapit.getChildren().add(poistaValittu); + + Button muokkaaAsiakasta = new Button("Muokkaa"); + muokkaaAsiakasta.setOnAction(_ -> muokkaaValittua()); + muokkaaAsiakasta.setFont(BUTTON_FONT); + yläpalkinNapit.getChildren().add(muokkaaAsiakasta); + + Button uusiAsiakas = new Button("Uusi asiakas"); + uusiAsiakas.setOnAction(_ -> uusiAsiakas()); + uusiAsiakas.setFont(BUTTON_FONT); + yläpalkinNapit.getChildren().add(uusiAsiakas); + + return yläpalkki; + } + + + private void uusiAsiakas() { Asiakas luotavaAsiakas = new Asiakas(); AsiakasIkkuna asiakasIkkuna = new AsiakasIkkuna(luotavaAsiakas); diff --git a/src/main/java/fi/lpam/gui/Kierroshallinta.java b/src/main/java/fi/lpam/gui/Kierroshallinta.java index ad31221..4e9ab99 100644 --- a/src/main/java/fi/lpam/gui/Kierroshallinta.java +++ b/src/main/java/fi/lpam/gui/Kierroshallinta.java @@ -23,12 +23,10 @@ import java.util.Objects; public class Kierroshallinta extends TabPohja { private final MultiColumnListView mclv = new MultiColumnListView<>(); private final ArrayList kierrokset = Kierros.haeKaikki(); - private final ArrayList kaikkiAsiakkaat = Asiakas.haeKaikki(); + private ArrayList kaikkiAsiakkaat = Asiakas.haeKaikki(); public Kierroshallinta() { - BorderPane root = new BorderPane(); - this.getChildren().add(root); - root.setPadding(oletusInsets); + super("Kierroshallinta"); root.setCenter(mclv); mclv.setCellFactory(_ -> new AsiakasMCLVListCell(mclv)); @@ -39,7 +37,7 @@ public class Kierroshallinta extends TabPohja { BorderPane yläpalkki = new BorderPane(); root.setTop(yläpalkki); - Label infoTeksti = new FontLabel(tekstiFont, "Siirrä asiakkaat haluamallesi kierrokselle. Kierroksia voit lisätä painamalla lisää uusi kierros painiketta.\nKierrosnumerot päivittyvät, sekä tyhjät poistuvat kierroksia tallentaessa."); + Label infoTeksti = new FontLabel(TEKSTI_FONT, "Siirrä asiakkaat haluamallesi kierrokselle. Kierroksia voit lisätä painamalla lisää uusi kierros painiketta.\nKierrosnumerot päivittyvät, sekä tyhjät poistuvat kierroksia tallentaessa."); yläpalkki.setLeft(infoTeksti); HBox yläpalkinNapit = new HBox(); @@ -51,11 +49,11 @@ public class Kierroshallinta extends TabPohja { int uudenKierroksenNumero = mclv.getColumns().size(); lisaaKierros(new Kierros(uudenKierroksenNumero, FXCollections.observableArrayList(new ArrayList<>()))); }); - lisääKierros.setFont(buttonFont); + lisääKierros.setFont(BUTTON_FONT); yläpalkinNapit.getChildren().add(lisääKierros); Button tallenna = new Button("Tallenna kierrokset"); - tallenna.setFont(buttonFont); + tallenna.setFont(BUTTON_FONT); tallenna.setOnAction(_ ->tallennaKierrokset()); yläpalkinNapit.getChildren().add(tallenna); @@ -66,6 +64,7 @@ public class Kierroshallinta extends TabPohja { private void rakennaSarakkeet() { mclv.getColumns().clear(); + kaikkiAsiakkaat = Asiakas.haeKaikki(); ObservableList eiKierroksella = FXCollections.observableArrayList(new ArrayList<>()); HashSet kierroksellaOlevatAsiakasIDt = new HashSet<>(); @@ -84,7 +83,7 @@ public class Kierroshallinta extends TabPohja { } } MultiColumnListView.ListViewColumn colEiKierroksella = new MultiColumnListView.ListViewColumn<>(); - Label labelEiKierroksella = new FontLabel(tekstiFont, "Ei vielä kierroksella"); + Label labelEiKierroksella = new FontLabel(TEKSTI_FONT, "Ei vielä kierroksella"); colEiKierroksella.setHeader(labelEiKierroksella); colEiKierroksella.setItems(FXCollections.observableArrayList(eiKierroksella)); mclv.getColumns().add(colEiKierroksella); @@ -93,7 +92,7 @@ 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 FontLabel(tekstiFont, "Kierros " + kierros.getKierrosNumero())); + uusiSarake.setHeader(new FontLabel(TEKSTI_FONT, "Kierros " + kierros.getKierrosNumero())); uusiSarake.setItems(kierros.getAsiakkaat()); mclv.getColumns().add(kierros.getKierrosNumero()-1, uusiSarake); } @@ -126,4 +125,9 @@ public class Kierroshallinta extends TabPohja { info.setContentText(null); info.showAndWait(); } + + @Override + public void päivitä() { + rakennaSarakkeet(); + } } \ No newline at end of file diff --git a/src/main/java/fi/lpam/gui/KuljetusListat.java b/src/main/java/fi/lpam/gui/KuljetusListat.java index 599b6a1..f2dc168 100644 --- a/src/main/java/fi/lpam/gui/KuljetusListat.java +++ b/src/main/java/fi/lpam/gui/KuljetusListat.java @@ -38,6 +38,8 @@ public class KuljetusListat extends TabPohja { private final HashMap asiakkaat = new HashMap<>(); public KuljetusListat() { + super("Kuljetuslistat"); + ObservableList määräVaihtoehdot = FXCollections.observableArrayList(); for (int i = 0; i <= 10; i++) { määräVaihtoehdot.add(i);} @@ -46,49 +48,45 @@ public class KuljetusListat extends TabPohja { asiakkaat.put(asiakas.getId(), asiakas); } - BorderPane root = new BorderPane(); - root.setPadding(oletusInsets); - this.getChildren().add(root); - BorderPane yläpalkki = new BorderPane(); - Label infoTeksti = new FontLabel(tekstiFont, "Kuljetuslistojen luonti"); + Label infoTeksti = new FontLabel(TEKSTI_FONT, "Kuljetuslistojen luonti"); yläpalkki.setLeft(infoTeksti); HBox kierroksenValintaLaatikko = new HBox(); - kierroksenValintaLaatikko.setSpacing(spacing); + kierroksenValintaLaatikko.setSpacing(SPACING); kierroksenValintaLaatikko.setAlignment(Pos.CENTER); Button valitse = new Button("Valitse"); - valitse.setFont(buttonFont); + valitse.setFont(BUTTON_FONT); valitse.setOnAction(_ -> päivitäListanäkymä()); - tallennusStatus = new FontLabel(tekstiFont, "Tallennettu: Kyllä"); - tallennusStatus.setFont(tekstiFont); + tallennusStatus = new FontLabel(TEKSTI_FONT, "Tallennettu: Kyllä"); + tallennusStatus.setFont(TEKSTI_FONT); datePicker.valueProperty().addListener(_ -> päivitäListanäkymä()); kierrosValinta.valueProperty().addListener(_ -> päivitäListanäkymä()); kierroksenValintaLaatikko.getChildren().addAll( - new FontLabel(tekstiFont, "Päivämäärä:"), + new FontLabel(TEKSTI_FONT, "Päivämäärä:"), datePicker, - new FontLabel(tekstiFont, "Kierros:"), + new FontLabel(TEKSTI_FONT, "Kierros:"), kierrosValinta, tallennusStatus); yläpalkki.setCenter(kierroksenValintaLaatikko); HBox napit = new HBox(); - napit.setSpacing(spacing); + napit.setSpacing(SPACING); Button poista = new Button("Poista kuljetusrivi"); - poista.setOnAction(_ ->poistaRivi()); - poista.setFont(buttonFont); + poista.setOnAction(_ -> poistaRivi()); + poista.setFont(BUTTON_FONT); Button tallenna = new Button("Tallenna"); - tallenna.setFont(buttonFont); + tallenna.setFont(BUTTON_FONT); tallenna.setOnAction(_ -> tallennaKierros()); btnTulosta = new Button("Tulosta lista"); btnTulosta.setDisable(true); - btnTulosta.setFont(buttonFont); - btnTulosta.setOnAction(_ ->tulostaLista()); + btnTulosta.setFont(BUTTON_FONT); + btnTulosta.setOnAction(_ -> tulostaLista()); napit.getChildren().addAll(poista, tallenna, btnTulosta); yläpalkki.setRight(napit); root.setTop(yläpalkki); tableView.setEditable(true); - tableView.setPlaceholder(new Label("Valitse kierros aloittaaksesi")); + tableView.setPlaceholder(new FontLabel(BUTTON_FONT, "Valitse kierros aloittaaksesi")); root.setCenter(tableView); TableColumn tcNappi = new TableColumn<>("Kuljeta"); @@ -220,4 +218,10 @@ public class KuljetusListat extends TabPohja { private void tulostaLista() { new KuljetusListaTulostaja().luoKuljetusLista(tableView.getItems(), kierrosValinta.getValue()); } + + @Override + public void päivitä() { + if (kierrosValinta.getValue() == null) return; + päivitäListanäkymä(); + } } \ No newline at end of file diff --git a/src/main/java/fi/lpam/gui/KuljetusRaportit.java b/src/main/java/fi/lpam/gui/KuljetusRaportit.java index 56c90df..ad27431 100644 --- a/src/main/java/fi/lpam/gui/KuljetusRaportit.java +++ b/src/main/java/fi/lpam/gui/KuljetusRaportit.java @@ -36,34 +36,32 @@ public class KuljetusRaportit extends TabPohja { } public KuljetusRaportit() { - BorderPane root = new BorderPane(); - root.setPadding(oletusInsets); - this.getChildren().add(root); + super("Raportit"); BorderPane yläpalkki = new BorderPane(); root.setTop(yläpalkki); - Label infoTeksti = new FontLabel(tekstiFont, "Kuljetusraportit. \nTarkka-valinnalla koostetun raportin \ntulostaminen paperille ei suositeltua."); + Label infoTeksti = new FontLabel(TEKSTI_FONT, "Kuljetusraportit. \nTarkka-valinnalla koostetun raportin \ntulostaminen paperille ei suositeltua."); yläpalkki.setLeft(infoTeksti); HBox yläpalkinNapit = new HBox(); yläpalkinNapit.setAlignment(Pos.CENTER); - yläpalkinNapit.setSpacing(spacing); + yläpalkinNapit.setSpacing(SPACING); yläpalkki.setRight(yläpalkinNapit); tarkka = new CheckBox("Tarkka"); - tarkka.setFont(tekstiFont); + tarkka.setFont(TEKSTI_FONT); alkuPvm = new DatePicker(LocalDate.now().minusDays(LocalDate.now().getDayOfMonth() - 1)); loppuPvm = new DatePicker(LocalDate.now()); Button haeKuljetukset = new Button("Hae"); - haeKuljetukset.setFont(buttonFont); + haeKuljetukset.setFont(BUTTON_FONT); haeKuljetukset.setOnAction(_ ->haeRaportti()); Button tulostaRaportti = new Button("Tulosta raportti"); - tulostaRaportti.setFont(buttonFont); + tulostaRaportti.setFont(BUTTON_FONT); tulostaRaportti.setOnAction(_ ->tulostaRaportti()); yläpalkinNapit.getChildren().addAll(tarkka, //new FontLabel(tekstiFont,"Hae kuljetukset välillä:"), - alkuPvm, new FontLabel(tekstiFont,"-"), loppuPvm, + alkuPvm, new FontLabel(TEKSTI_FONT,"-"), loppuPvm, haeKuljetukset, tulostaRaportti); root.setCenter(tableView); @@ -111,7 +109,7 @@ public class KuljetusRaportit extends TabPohja { tableView.getColumns().addAll(tcNimi, tcPvm, tcSalaatit, tcPääruoat, tcJälkiruoat, tcLisätiedot, tcYhteyshenkilönNimi, tcLaskutusOsoite, tcYhteyshenkilönPuhelinnumero, tcYhteyshenkilönSähköposti); - tableView.setPlaceholder(new FontLabel(buttonFont, "Hae raportti")); + tableView.setPlaceholder(new FontLabel(BUTTON_FONT, "Hae raportti")); for (TableColumn sarake : tableView.getColumns()) { sarake.setSortable(false); sarake.setEditable(false); @@ -122,4 +120,7 @@ public class KuljetusRaportit extends TabPohja { "-fx-font-family: " + Main.properties.getProperty("tekstiFontti")); } } + + @Override + public void päivitä() {} } \ No newline at end of file diff --git a/src/main/java/fi/lpam/gui/elementit/AsiakasMCLVListCell.java b/src/main/java/fi/lpam/gui/elementit/AsiakasMCLVListCell.java index 5d76f4b..596d28e 100644 --- a/src/main/java/fi/lpam/gui/elementit/AsiakasMCLVListCell.java +++ b/src/main/java/fi/lpam/gui/elementit/AsiakasMCLVListCell.java @@ -17,8 +17,8 @@ public class AsiakasMCLVListCell extends MultiColumnListView.ColumnListCell multiColumnListView) { super(multiColumnListView); - this.setMinHeight(TabPohja.tekstiFont.getSize()*4); - this.setMaxHeight(TabPohja.tekstiFont.getSize()*4); + this.setMinHeight(TabPohja.TEKSTI_FONT.getSize()*4); + this.setMaxHeight(TabPohja.TEKSTI_FONT.getSize()*4); VBox content = new VBox(); content.visibleProperty().bind(placeholder.not().and(emptyProperty().not())); @@ -29,7 +29,7 @@ public class AsiakasMCLVListCell extends MultiColumnListView.ColumnListCell this.close()); root.getChildren().add(ok); diff --git a/src/main/java/fi/lpam/gui/elementit/TabPohja.java b/src/main/java/fi/lpam/gui/elementit/TabPohja.java index 4e354eb..7bcfbb3 100644 --- a/src/main/java/fi/lpam/gui/elementit/TabPohja.java +++ b/src/main/java/fi/lpam/gui/elementit/TabPohja.java @@ -2,6 +2,7 @@ package fi.lpam.gui.elementit; import fi.lpam.Main; import javafx.geometry.Insets; +import javafx.scene.control.Tab; import javafx.scene.layout.*; import javafx.scene.paint.Color; import javafx.scene.text.Font; @@ -10,25 +11,44 @@ import javafx.scene.text.FontWeight; import java.util.Properties; /** - * Käyttöliittymän pohja + * Käyttöliittymän välilehden pohja */ -public class TabPohja extends StackPane { - 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 static double spacing; +public class TabPohja extends Tab { + public static Insets INSETS; + public static Border BORDER = new Border(new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, new CornerRadii(5), BorderWidths.DEFAULT)); + public static String STYLE; + public static Font BUTTON_FONT; + public static Font TEKSTI_FONT; + public static double SPACING; - public TabPohja() { + protected BorderPane root = new BorderPane(); + + public TabPohja(String title) { + super(title); Properties prop = Main.properties; - oletusInsets = new Insets(Double.parseDouble(prop.getProperty("insets"))); - spacing = 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); + INSETS = new Insets(Double.parseDouble(prop.getProperty("insets"))); + SPACING = Double.parseDouble(prop.getProperty("insets")); + STYLE = "-fx-background-color: " + prop.getProperty("taustaVari"); + BUTTON_FONT = Font.font(prop.getProperty("buttonFontti"), FontWeight.BOLD, Double.parseDouble(prop.getProperty("buttonFonttiKoko"))); + TEKSTI_FONT = Font.font(prop.getProperty("tekstiFontti"), FontWeight.NORMAL, Double.parseDouble(prop.getProperty("tekstiFonttiKoko"))); + + this.setStyle( + "-fx-font-size: " + Main.properties.getProperty("buttonFonttiKoko") + "px;" + + "-fx-font-weight: bold;" + + "-fx-font-family: " + Main.properties.getProperty("buttonFontti") + ";" + ); + this.setClosable(false); + this.setOnSelectionChanged(e -> {if (e.getTarget() == this) päivitä();}); + + root.setStyle(STYLE); + root.setPadding(INSETS); + root.setBorder(BORDER); + this.setContent(root); } + + /** + * Metodi, jota kutsutaan kun tähän välilehteen palataan + * Luokan toteuttaja määrittää, mitä tarvitsee päivittää välilehteen palattaessa + */ + public void päivitä() {} } \ No newline at end of file diff --git a/src/main/resources/defaults.properties b/src/main/resources/defaults.properties index 9752ca7..63bd68c 100644 --- a/src/main/resources/defaults.properties +++ b/src/main/resources/defaults.properties @@ -2,10 +2,12 @@ version=${project.version} buttonFonttiKoko=16 buttonFontti=Arial + tekstiFonttiKoko=16 tekstiFontti=Arial tulostusFonttiKoko=13 taustaVari=lightgray + insets=5 \ No newline at end of file