11 Commits

Author SHA1 Message Date
laurimaaninka 1dfdab763b Merge pull request '#16 asetukset välilehti' (#20) from asetukset into master
Reviewed-on: #20
2026-05-14 23:30:54 +03:00
laurimaaninka 1b589d0fb5 fix #17 Muutettu oletusfontti Arialiin
Signed-off-by: laurimaaninka <lauri.maaninka@gmail.com>
2026-05-14 21:52:16 +03:00
laurimaaninka ee552e647c Merge remote-tracking branch 'origin/asetukset-välilehti' into asetukset
# Conflicts:
#	src/main/java/fi/lpam/gui/Asetukset.java
#	src/main/java/fi/lpam/gui/KuljetusListat.java
#	src/main/java/fi/lpam/gui/KuljetusRaportit.java
2026-05-14 21:25:15 +03:00
laurimaaninka 624c2bf388 #17 maksimifonttikoko havaittu ja tulostus testattu
Signed-off-by: laurimaaninka <lauri.maaninka@gmail.com>
2026-05-13 22:07:42 +03:00
laurimaaninka e93004ee0d #17 Luotu custom label luokka, otettu uudet säädöt käyttöön mahdollisimman monessa paikkaa 2026-05-13 02:27:16 +03:00
laurimaaninka 6284ac0663 #17 Luotu custom label luokka, otettu uudet säädöt käyttöön mahdollisimman monessa paikkaa 2026-05-13 02:24:02 +03:00
laurimaaninka 89d30b8ac9 #17 Luotu custom label luokka, otettu uudet säädöt käyttöön mahdollisimman monessa paikkaa 2026-05-13 02:22:14 +03:00
laurimaaninka 9cc55be771 #17 melkein valmis, vaatii vielä testaamista 2026-05-13 01:56:21 +03:00
laurimaaninka 71b06ff075 Merge remote-tracking branch 'origin/asetukset-välilehti' into asetukset-välilehti 2026-05-12 23:53:48 +03:00
laurimaaninka 5344efd62c fix #16 asetukset välilehden luonti 2026-05-12 23:53:31 +03:00
laurimaaninka 6fb81c27aa #16 asetukset välilehden luonti 2026-05-12 23:52:53 +03:00
12 changed files with 229 additions and 59 deletions
+12 -10
View File
@@ -1,9 +1,6 @@
package fi.lpam; package fi.lpam;
import fi.lpam.dataluokat.Tietokanta; import fi.lpam.dataluokat.Tietokanta;
import fi.lpam.gui.Asiakashallinta; import fi.lpam.gui.*;
import fi.lpam.gui.Kierroshallinta;
import fi.lpam.gui.KuljetusRaportit;
import fi.lpam.gui.KuljetusListat;
import fi.lpam.gui.elementit.MuutosIlmoitus; import fi.lpam.gui.elementit.MuutosIlmoitus;
import javafx.application.Application; import javafx.application.Application;
import javafx.geometry.Side; import javafx.geometry.Side;
@@ -29,15 +26,16 @@ public class App extends Application {
TabPane root = new TabPane(); TabPane root = new TabPane();
root.setSide(Side.LEFT); root.setSide(Side.LEFT);
root.setTabMinWidth(50); root.setTabMinWidth(50);
root.setTabMinHeight(35); root.setTabMinHeight(Double.parseDouble(Main.properties.getProperty("buttonFonttiKoko"))*2);
root.setTabMaxHeight(50); root.setTabMaxHeight(Double.parseDouble(Main.properties.getProperty("buttonFonttiKoko"))*2);
Tab asiakasHallinta, kierrostenHallinta, kuljetusListat, kuljetetut; Tab asiakasHallinta, kierrostenHallinta, kuljetusListat, kuljetetut, asetukset;
asiakasHallinta = new Tab("Asiakashallinta", new Asiakashallinta()); asiakasHallinta = new Tab("Asiakashallinta", new Asiakashallinta());
kierrostenHallinta = new Tab("Kierrostenhallinta"); kierrostenHallinta = new Tab("Kierrostenhallinta");
kuljetusListat = new Tab("Kuljetuslistat"); kuljetusListat = new Tab("Kuljetuslistat");
kuljetetut = new Tab("Kuljetetut"); kuljetetut = new Tab("Kuljetetut");
root.getTabs().addAll(asiakasHallinta, kierrostenHallinta, kuljetusListat, kuljetetut); asetukset = new Tab("Asetukset");
root.getTabs().addAll(asiakasHallinta, kierrostenHallinta, kuljetusListat, kuljetetut, asetukset);
root.getSelectionModel().selectedItemProperty().addListener((_, _, newValue) -> { root.getSelectionModel().selectedItemProperty().addListener((_, _, newValue) -> {
switch (newValue.getText()) { switch (newValue.getText()) {
@@ -45,12 +43,16 @@ public class App extends Application {
case "Kierrostenhallinta": newValue.setContent(new Kierroshallinta()); break; case "Kierrostenhallinta": newValue.setContent(new Kierroshallinta()); break;
case "Kuljetuslistat": newValue.setContent(new KuljetusListat()); break; case "Kuljetuslistat": newValue.setContent(new KuljetusListat()); break;
case "Kuljetetut": newValue.setContent(new KuljetusRaportit()); break; case "Kuljetetut": newValue.setContent(new KuljetusRaportit()); break;
case "Asetukset": newValue.setContent(new Asetukset()); break;
} }
}); });
for (Tab tab : root.getTabs()) { for (Tab tab : root.getTabs()) {
tab.setClosable(false); 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); Scene scene = new Scene(root);
@@ -66,6 +68,6 @@ public class App extends Application {
primaryStage.show(); primaryStage.show();
primaryStage.getIcons().add(new Image(Objects.requireNonNull(Main.class.getClassLoader().getResourceAsStream("kuljetusruokalaatikko.jpg")))); 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();
} }
} }
+124
View File
@@ -0,0 +1,124 @@
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.*;
import javafx.scene.layout.BorderPane;
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<String> järjestelmäFontit = FXCollections.observableArrayList(Font.getFamilies());
public Asetukset() {
BorderPane root = new BorderPane();
root.setPadding(oletusInsets);
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.setOnAction(_ -> palautaOletukset());
yläpalkki.getChildren().add(btnNollaa);
root.setTop(yläpalkki);
root.setCenter(getFonttiAsetukset());
this.getChildren().add(root);
}
private Spinner<Integer> tekstiFonttiKoko, buttonFonttiKoko, tulostusFonttiKoko, insets;
private ComboBox<String> 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(oletusBorder);
root.setPadding(oletusInsets);
int row = 0;
Label otsikko = new Label("Fonttien asetukset");
otsikko.setFont(tekstiFont);
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(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, 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);
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, 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);
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);
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();
}
}
}
+16 -13
View File
@@ -1,5 +1,6 @@
package fi.lpam.gui; package fi.lpam.gui;
import fi.lpam.Main;
import fi.lpam.dataluokat.Asiakas; import fi.lpam.dataluokat.Asiakas;
import fi.lpam.gui.elementit.MaaraTableColumn; import fi.lpam.gui.elementit.MaaraTableColumn;
import fi.lpam.gui.elementit.TabPohja; import fi.lpam.gui.elementit.TabPohja;
@@ -36,7 +37,8 @@ public class Asiakashallinta extends TabPohja {
yläpalkki.setLeft(otsikko); yläpalkki.setLeft(otsikko);
HBox yläpalkinNapit = new HBox(); HBox yläpalkinNapit = new HBox();
yläpalkinNapit.setSpacing(5); yläpalkinNapit.setSpacing(Double.parseDouble(Main.properties.getProperty("insets")));
yläpalkinNapit.setPadding(oletusInsets);
yläpalkki.setRight(yläpalkinNapit); yläpalkki.setRight(yläpalkinNapit);
Button avaaVersioloki = new Button("VERSIOLOKI"); Button avaaVersioloki = new Button("VERSIOLOKI");
@@ -117,35 +119,25 @@ public class Asiakashallinta extends TabPohja {
tcKuljetusmäärät.getColumns().addAll(tcSalaatit, tcPääruoat, tcJälkiruoat); tcKuljetusmäärät.getColumns().addAll(tcSalaatit, tcPääruoat, tcJälkiruoat);
TableColumn<Asiakas, String> tcErityisruokavalio = new TableColumn<>("Ruokarajoitteet"); TableColumn<Asiakas, String> tcErityisruokavalio = new TableColumn<>("Ruokarajoitteet");
// tcErityisruokavalio.setMinWidth(150);
tcErityisruokavalio.setCellValueFactory(new PropertyValueFactory<>("erityisruokavalio")); tcErityisruokavalio.setCellValueFactory(new PropertyValueFactory<>("erityisruokavalio"));
TableColumn<Asiakas, String> tcAvainTieto = new TableColumn<>("Avaintieto"); TableColumn<Asiakas, String> tcAvainTieto = new TableColumn<>("Avaintieto");
// tcAvainTieto.setMinWidth(150);
tcAvainTieto.setCellValueFactory(new PropertyValueFactory<>("avainTieto")); tcAvainTieto.setCellValueFactory(new PropertyValueFactory<>("avainTieto"));
TableColumn<Asiakas, String> tcLisätiedot = new TableColumn<>("Lisätieto kuljetukselle"); TableColumn<Asiakas, String> tcLisätiedot = new TableColumn<>("Lisätieto kuljetukselle");
// tcLisätiedot.setMinWidth(250);
tcLisätiedot.setCellValueFactory(new PropertyValueFactory<>("lisätiedot")); tcLisätiedot.setCellValueFactory(new PropertyValueFactory<>("lisätiedot"));
TableColumn<Asiakas, String> tcYhteyshenkilönNimi = new TableColumn<>("Yhteyshenkilö"); TableColumn<Asiakas, String> tcYhteyshenkilönNimi = new TableColumn<>("Yhteyshenkilö");
// tcYhteyshenkilönNimi.setMinWidth(250);
tcYhteyshenkilönNimi.setCellValueFactory(new PropertyValueFactory<>("yhteyshenkilönNimi")); tcYhteyshenkilönNimi.setCellValueFactory(new PropertyValueFactory<>("yhteyshenkilönNimi"));
TableColumn<Asiakas, String> tcLaskutusOsoite = new TableColumn<>("Laskutusosoite"); TableColumn<Asiakas, String> tcLaskutusOsoite = new TableColumn<>("Laskutusosoite");
// tcLaskutusOsoite.setMinWidth(250);
tcLaskutusOsoite.setCellValueFactory(new PropertyValueFactory<>("laskutusOsoite")); tcLaskutusOsoite.setCellValueFactory(new PropertyValueFactory<>("laskutusOsoite"));
TableColumn<Asiakas, String> tcYhteyshenkilönPuhelinnumero = new TableColumn<>("Yhteyshenkilön puhelinnumero"); TableColumn<Asiakas, String> tcYhteyshenkilönPuhelinnumero = new TableColumn<>("Yhteyshenkilön puhelinnumero");
// tcYhteyshenkilönPuhelinnumero.setMinWidth(250);
tcYhteyshenkilönPuhelinnumero.setCellValueFactory(new PropertyValueFactory<>("yhteyshenkilönPuhelinnumero")); tcYhteyshenkilönPuhelinnumero.setCellValueFactory(new PropertyValueFactory<>("yhteyshenkilönPuhelinnumero"));
TableColumn<Asiakas, String> tcYhteyshenkilönSähköposti = new TableColumn<>("Yhteyshenkilön sähköposti"); TableColumn<Asiakas, String> tcYhteyshenkilönSähköposti = new TableColumn<>("Yhteyshenkilön sähköposti");
// tcYhteyshenkilönSähköposti.setMinWidth(250);
tcYhteyshenkilönSähköposti.setCellValueFactory(new PropertyValueFactory<>("yhteyshenkilönSähköposti")); tcYhteyshenkilönSähköposti.setCellValueFactory(new PropertyValueFactory<>("yhteyshenkilönSähköposti"));
tvAsiakkaat.getColumns().addAll(tcId, tcNimi, tcOsoite, tcKuljetuspäivät, tcKuljetusmäärät, tcErityisruokavalio, tcAvainTieto, tcLisätiedot, tcYhteyshenkilönNimi, tcLaskutusOsoite, tcYhteyshenkilönPuhelinnumero, tcYhteyshenkilönSähköposti); tvAsiakkaat.getColumns().addAll(tcId, tcNimi, tcOsoite, tcKuljetuspäivät, tcKuljetusmäärät, tcErityisruokavalio, tcAvainTieto, tcLisätiedot, tcYhteyshenkilönNimi, tcLaskutusOsoite, tcYhteyshenkilönPuhelinnumero, tcYhteyshenkilönSähköposti);
for (TableColumn<Asiakas, ?> column : tvAsiakkaat.getColumns()) { for (TableColumn<Asiakas, ?> column : tvAsiakkaat.getColumns()) {
column.setEditable(false); column.getColumns().forEach(this::määritäColumn);
column.setReorderable(false); määritäColumn(column);
column.setResizable(true);
column.setStyle("-fx-alignment: CENTER; -fx-font-size: 16px;");
} }
tvAsiakkaat.setItems(FXCollections.observableArrayList(Objects.requireNonNull(Asiakas.haeKaikki()))); tvAsiakkaat.setItems(FXCollections.observableArrayList(Objects.requireNonNull(Asiakas.haeKaikki())));
@@ -188,4 +180,15 @@ public class Asiakashallinta extends TabPohja {
} }
} }
} }
private void määritäColumn(TableColumn<Asiakas, ?> column) {
column.setEditable(false);
column.setReorderable(false);
column.setResizable(true);
column.setStyle(
"-fx-alignment: CENTER;" +
"-fx-font-size: " + Main.properties.getProperty("tekstiFonttiKoko") + "px;" +
"-fx-font-family: " + Main.properties.getProperty("tekstiFontti")
);
}
} }
@@ -4,7 +4,8 @@ import com.dlsc.gemsfx.MultiColumnListView;
import fi.lpam.dataluokat.Asiakas; import fi.lpam.dataluokat.Asiakas;
import fi.lpam.dataluokat.Kierros; import fi.lpam.dataluokat.Kierros;
import fi.lpam.gui.elementit.AsiakasListCell; import fi.lpam.gui.elementit.AsiakasMCLVListCell;
import fi.lpam.gui.elementit.FontLabel;
import fi.lpam.gui.elementit.TabPohja; import fi.lpam.gui.elementit.TabPohja;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
@@ -30,7 +31,7 @@ public class Kierroshallinta extends TabPohja {
root.setPadding(oletusInsets); root.setPadding(oletusInsets);
root.setCenter(mclv); root.setCenter(mclv);
mclv.setCellFactory(_ -> new AsiakasListCell(mclv)); mclv.setCellFactory(_ -> new AsiakasMCLVListCell(mclv));
mclv.setPlaceholderFrom(new Asiakas("")); mclv.setPlaceholderFrom(new Asiakas(""));
mclv.setPlaceholderTo(new Asiakas("")); mclv.setPlaceholderTo(new Asiakas(""));
rakennaSarakkeet(); rakennaSarakkeet();
@@ -38,8 +39,7 @@ public class Kierroshallinta extends TabPohja {
BorderPane yläpalkki = new BorderPane(); BorderPane yläpalkki = new BorderPane();
root.setTop(yläpalkki); root.setTop(yläpalkki);
Label infoTeksti = new Label("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(tekstiFont, "Siirrä asiakkaat haluamallesi kierrokselle. Kierroksia voit lisätä painamalla lisää uusi kierros painiketta.\nKierrosnumerot päivittyvät, sekä tyhjät poistuvat kierroksia tallentaessa.");
infoTeksti.setFont(tekstiFont);
yläpalkki.setLeft(infoTeksti); yläpalkki.setLeft(infoTeksti);
HBox yläpalkinNapit = new HBox(); HBox yläpalkinNapit = new HBox();
@@ -51,11 +51,11 @@ public class Kierroshallinta extends TabPohja {
int uudenKierroksenNumero = mclv.getColumns().size(); int uudenKierroksenNumero = mclv.getColumns().size();
lisaaKierros(new Kierros(uudenKierroksenNumero, FXCollections.observableArrayList(new ArrayList<>()))); lisaaKierros(new Kierros(uudenKierroksenNumero, FXCollections.observableArrayList(new ArrayList<>())));
}); });
lisääKierros.setFont(TabPohja.buttonFont); lisääKierros.setFont(buttonFont);
yläpalkinNapit.getChildren().add(lisääKierros); yläpalkinNapit.getChildren().add(lisääKierros);
Button tallenna = new Button("Tallenna kierrokset"); Button tallenna = new Button("Tallenna kierrokset");
tallenna.setFont(TabPohja.buttonFont); tallenna.setFont(buttonFont);
tallenna.setOnAction(_ ->tallennaKierrokset()); tallenna.setOnAction(_ ->tallennaKierrokset());
yläpalkinNapit.getChildren().add(tallenna); yläpalkinNapit.getChildren().add(tallenna);
@@ -84,7 +84,8 @@ public class Kierroshallinta extends TabPohja {
} }
} }
MultiColumnListView.ListViewColumn<Asiakas> colEiKierroksella = new MultiColumnListView.ListViewColumn<>(); MultiColumnListView.ListViewColumn<Asiakas> colEiKierroksella = new MultiColumnListView.ListViewColumn<>();
colEiKierroksella.setHeader(new Label("Ei vielä kierroksella")); Label labelEiKierroksella = new FontLabel(tekstiFont, "Ei vielä kierroksella");
colEiKierroksella.setHeader(labelEiKierroksella);
colEiKierroksella.setItems(FXCollections.observableArrayList(eiKierroksella)); colEiKierroksella.setItems(FXCollections.observableArrayList(eiKierroksella));
mclv.getColumns().add(colEiKierroksella); mclv.getColumns().add(colEiKierroksella);
} }
@@ -92,7 +93,7 @@ public class Kierroshallinta extends TabPohja {
private void lisaaKierros(Kierros kierros) { private void lisaaKierros(Kierros kierros) {
if (kierros.getId() == -1) kierrokset.add(kierros); if (kierros.getId() == -1) kierrokset.add(kierros);
MultiColumnListView.ListViewColumn<Asiakas> uusiSarake = new MultiColumnListView.ListViewColumn<>(); MultiColumnListView.ListViewColumn<Asiakas> uusiSarake = new MultiColumnListView.ListViewColumn<>();
uusiSarake.setHeader(new Label("Kierros " + kierros.getKierrosNumero())); uusiSarake.setHeader(new FontLabel(tekstiFont, "Kierros " + kierros.getKierrosNumero()));
uusiSarake.setItems(kierros.getAsiakkaat()); uusiSarake.setItems(kierros.getAsiakkaat());
mclv.getColumns().add(kierros.getKierrosNumero()-1, uusiSarake); mclv.getColumns().add(kierros.getKierrosNumero()-1, uusiSarake);
} }
+12 -9
View File
@@ -1,8 +1,10 @@
package fi.lpam.gui; package fi.lpam.gui;
import fi.lpam.Main;
import fi.lpam.dataluokat.Asiakas; import fi.lpam.dataluokat.Asiakas;
import fi.lpam.dataluokat.Kierros; import fi.lpam.dataluokat.Kierros;
import fi.lpam.dataluokat.Kuljetus; import fi.lpam.dataluokat.Kuljetus;
import fi.lpam.gui.elementit.FontLabel;
import fi.lpam.gui.tableCell.IntegerFieldTableCellFactory; import fi.lpam.gui.tableCell.IntegerFieldTableCellFactory;
import fi.lpam.gui.tableCell.KuljetaTableCell; import fi.lpam.gui.tableCell.KuljetaTableCell;
import fi.lpam.tulostajat.KuljetusListaTulostaja; import fi.lpam.tulostajat.KuljetusListaTulostaja;
@@ -49,30 +51,28 @@ public class KuljetusListat extends TabPohja {
this.getChildren().add(root); this.getChildren().add(root);
BorderPane yläpalkki = new BorderPane(); BorderPane yläpalkki = new BorderPane();
Label infoTeksti = new Label("Kuljetuslistojen luonti"); Label infoTeksti = new FontLabel(tekstiFont, "Kuljetuslistojen luonti");
infoTeksti.setFont(tekstiFont);
yläpalkki.setLeft(infoTeksti); yläpalkki.setLeft(infoTeksti);
HBox kierroksenValintaLaatikko = new HBox(); HBox kierroksenValintaLaatikko = new HBox();
kierroksenValintaLaatikko.setSpacing(5); kierroksenValintaLaatikko.setSpacing(spacing);
kierroksenValintaLaatikko.setSpacing(5);
kierroksenValintaLaatikko.setAlignment(Pos.CENTER); kierroksenValintaLaatikko.setAlignment(Pos.CENTER);
Button valitse = new Button("Valitse"); Button valitse = new Button("Valitse");
valitse.setFont(buttonFont); valitse.setFont(buttonFont);
valitse.setOnAction(_ -> päivitäListanäkymä()); valitse.setOnAction(_ -> päivitäListanäkymä());
tallennusStatus = new Label("Tallennettu: Kyllä"); tallennusStatus = new FontLabel(tekstiFont, "Tallennettu: Kyllä");
tallennusStatus.setFont(tekstiFont); tallennusStatus.setFont(tekstiFont);
datePicker.valueProperty().addListener(_ -> päivitäListanäkymä()); datePicker.valueProperty().addListener(_ -> päivitäListanäkymä());
kierrosValinta.valueProperty().addListener(_ -> päivitäListanäkymä()); kierrosValinta.valueProperty().addListener(_ -> päivitäListanäkymä());
kierroksenValintaLaatikko.getChildren().addAll( kierroksenValintaLaatikko.getChildren().addAll(
new Label("Valitse päivämäärä:"), new FontLabel(tekstiFont, "Päivämäärä:"),
datePicker, datePicker,
new Label("Valitse kierros:"), new FontLabel(tekstiFont, "Kierros:"),
kierrosValinta, tallennusStatus); kierrosValinta, tallennusStatus);
yläpalkki.setCenter(kierroksenValintaLaatikko); yläpalkki.setCenter(kierroksenValintaLaatikko);
HBox napit = new HBox(); HBox napit = new HBox();
napit.setSpacing(5); napit.setSpacing(spacing);
Button poista = new Button("Poista kuljetusrivi"); Button poista = new Button("Poista kuljetusrivi");
poista.setOnAction(_ ->poistaRivi()); poista.setOnAction(_ ->poistaRivi());
poista.setFont(buttonFont); poista.setFont(buttonFont);
@@ -147,7 +147,10 @@ public class KuljetusListat extends TabPohja {
sarake.setSortable(false); sarake.setSortable(false);
sarake.setEditable(true); sarake.setEditable(true);
sarake.setResizable(true); sarake.setResizable(true);
sarake.setStyle("-fx-alignment: CENTER; -fx-font-size: 16px;"); sarake.setStyle(
"-fx-alignment: CENTER;" +
"-fx-font-size: " + Main.properties.getProperty("tekstiFonttiKoko") + "px;" +
"-fx-font-family: " + Main.properties.getProperty("tekstiFontti"));
} }
tcNimi.setEditable(false); tcNimi.setEditable(false);
tcNimi.setResizable(false); tcNimi.setResizable(false);
@@ -1,6 +1,8 @@
package fi.lpam.gui; package fi.lpam.gui;
import fi.lpam.Main;
import fi.lpam.dataluokat.RaporttiRivi; import fi.lpam.dataluokat.RaporttiRivi;
import fi.lpam.gui.elementit.FontLabel;
import fi.lpam.tulostajat.KuljetusRaporttiTulostaja; import fi.lpam.tulostajat.KuljetusRaporttiTulostaja;
import fi.lpam.gui.tableCell.PaivamaaraTableCell; import fi.lpam.gui.tableCell.PaivamaaraTableCell;
import fi.lpam.gui.elementit.TabPohja; import fi.lpam.gui.elementit.TabPohja;
@@ -41,16 +43,16 @@ public class KuljetusRaportit extends TabPohja {
BorderPane yläpalkki = new BorderPane(); BorderPane yläpalkki = new BorderPane();
root.setTop(yläpalkki); root.setTop(yläpalkki);
Label infoTeksti = new Label("Kuljetusraportit. \nTarkka-valinnalla koostetun raportin tulostaminen paperille ei suositeltua."); Label infoTeksti = new FontLabel(tekstiFont, "Kuljetusraportit. \nTarkka-valinnalla koostetun raportin \ntulostaminen paperille ei suositeltua.");
infoTeksti.setFont(tekstiFont);
yläpalkki.setLeft(infoTeksti); yläpalkki.setLeft(infoTeksti);
HBox yläpalkinNapit = new HBox(); HBox yläpalkinNapit = new HBox();
yläpalkinNapit.setAlignment(Pos.CENTER); yläpalkinNapit.setAlignment(Pos.CENTER);
yläpalkinNapit.setSpacing(5); yläpalkinNapit.setSpacing(spacing);
yläpalkki.setRight(yläpalkinNapit); yläpalkki.setRight(yläpalkinNapit);
tarkka = new CheckBox("Tarkka"); tarkka = new CheckBox("Tarkka");
tarkka.setFont(tekstiFont);
alkuPvm = new DatePicker(LocalDate.now().minusDays(LocalDate.now().getDayOfMonth() - 1)); alkuPvm = new DatePicker(LocalDate.now().minusDays(LocalDate.now().getDayOfMonth() - 1));
loppuPvm = new DatePicker(LocalDate.now()); loppuPvm = new DatePicker(LocalDate.now());
Button haeKuljetukset = new Button("Hae"); Button haeKuljetukset = new Button("Hae");
@@ -60,8 +62,8 @@ public class KuljetusRaportit extends TabPohja {
tulostaRaportti.setFont(buttonFont); tulostaRaportti.setFont(buttonFont);
tulostaRaportti.setOnAction(_ ->tulostaRaportti()); tulostaRaportti.setOnAction(_ ->tulostaRaportti());
yläpalkinNapit.getChildren().addAll(tarkka, yläpalkinNapit.getChildren().addAll(tarkka,
new Label("Hae kuljetukset välillä:"), //new FontLabel(tekstiFont,"Hae kuljetukset välillä:"),
alkuPvm, new Label("-"), loppuPvm, alkuPvm, new FontLabel(tekstiFont,"-"), loppuPvm,
haeKuljetukset, tulostaRaportti); haeKuljetukset, tulostaRaportti);
root.setCenter(tableView); root.setCenter(tableView);
@@ -109,12 +111,15 @@ public class KuljetusRaportit extends TabPohja {
tableView.getColumns().addAll(tcNimi, tcPvm, tcSalaatit, tcPääruoat, tcJälkiruoat, tcLisätiedot, tableView.getColumns().addAll(tcNimi, tcPvm, tcSalaatit, tcPääruoat, tcJälkiruoat, tcLisätiedot,
tcYhteyshenkilönNimi, tcLaskutusOsoite, tcYhteyshenkilönPuhelinnumero, tcYhteyshenkilönSähköposti); tcYhteyshenkilönNimi, tcLaskutusOsoite, tcYhteyshenkilönPuhelinnumero, tcYhteyshenkilönSähköposti);
tableView.setPlaceholder(new Label("Hae raportti")); tableView.setPlaceholder(new FontLabel(buttonFont, "Hae raportti"));
for (TableColumn<RaporttiRivi, ?> sarake : tableView.getColumns()) { for (TableColumn<RaporttiRivi, ?> sarake : tableView.getColumns()) {
sarake.setSortable(false); sarake.setSortable(false);
sarake.setEditable(false); sarake.setEditable(false);
sarake.setResizable(true); sarake.setResizable(true);
sarake.setStyle("-fx-alignment: CENTER; -fx-font-size: 16px;"); sarake.setStyle(
"-fx-alignment: CENTER;" +
"-fx-font-size: " + Main.properties.getProperty("tekstiFonttiKoko") + "px;" +
"-fx-font-family: " + Main.properties.getProperty("tekstiFontti"));
} }
} }
} }
@@ -12,13 +12,13 @@ import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
public class AsiakasListCell extends MultiColumnListView.ColumnListCell<Asiakas> { public class AsiakasMCLVListCell extends MultiColumnListView.ColumnListCell<Asiakas> {
private final StackPane wrapper; private final StackPane wrapper;
public AsiakasListCell(MultiColumnListView<Asiakas> multiColumnListView) { public AsiakasMCLVListCell(MultiColumnListView<Asiakas> multiColumnListView) {
super(multiColumnListView); super(multiColumnListView);
this.setMinHeight(60); this.setMinHeight(TabPohja.tekstiFont.getSize()*4);
this.setMaxHeight(60); this.setMaxHeight(TabPohja.tekstiFont.getSize()*4);
VBox content = new VBox(); VBox content = new VBox();
content.visibleProperty().bind(placeholder.not().and(emptyProperty().not())); content.visibleProperty().bind(placeholder.not().and(emptyProperty().not()));
@@ -0,0 +1,11 @@
package fi.lpam.gui.elementit;
import javafx.scene.control.Label;
import javafx.scene.text.Font;
public class FontLabel extends Label {
public FontLabel(Font font, String text) {
super(text);
this.setFont(font);
}
}
@@ -1,22 +1,32 @@
package fi.lpam.gui.elementit; package fi.lpam.gui.elementit;
import fi.lpam.Main;
import javafx.geometry.Insets; import javafx.geometry.Insets;
import javafx.scene.layout.*; import javafx.scene.layout.*;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
import javafx.scene.text.Font; import javafx.scene.text.Font;
import javafx.scene.text.FontWeight; import javafx.scene.text.FontWeight;
import java.util.Properties;
/** /**
* Käyttöliittymän pohja * Käyttöliittymän pohja
*/ */
public class TabPohja extends StackPane { public class TabPohja extends StackPane {
public static final Insets oletusInsets = new Insets(5); public static Insets oletusInsets;
public static final String oletusStyle = "-fx-background-color: lightgray;"; public static Border oletusBorder = new Border(new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, new CornerRadii(5), BorderWidths.DEFAULT));
public static final Font buttonFont = Font.font("Open Sans", FontWeight.BOLD, 16); public static String oletusStyle;
public static final Font tekstiFont = Font.font("Open Sans", FontWeight.NORMAL, 16); public static Font buttonFont;
public static final Border oletusBorder = new Border(new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, new CornerRadii(5), BorderWidths.DEFAULT)); public static Font tekstiFont;
public static double spacing;
public TabPohja() { public TabPohja() {
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.setStyle(oletusStyle);
this.setPadding(oletusInsets); this.setPadding(oletusInsets);
this.setBorder(oletusBorder); this.setBorder(oletusBorder);
@@ -44,7 +44,8 @@ public class KuljetusListaTulostaja extends Tulostaja{
siirräOsoitinta(NIMEN_LEVEYS); siirräOsoitinta(NIMEN_LEVEYS);
sisältö.showText(kuljetus.getLisätieto()); sisältö.showText(kuljetus.getLisätieto());
uusiRivi(RIVI_KORKEUS*0.1F); uusiRivi(RIVI_KORKEUS*0.1F);
sisältö.showText("___________________________________________________________________"); //67 alaviivaa (noin sivun leveys) //67 alaviivaa fonttikoolla 13 (noin sivun leveys)
sisältö.showText("_".repeat((int) (67*13/FONTTI_KOKO)));
} }
tulosta(); tulosta();
@@ -1,5 +1,6 @@
package fi.lpam.tulostajat; package fi.lpam.tulostajat;
import fi.lpam.Main;
import fi.lpam.gui.virheDialogit.SiirtoVirhe; import fi.lpam.gui.virheDialogit.SiirtoVirhe;
import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPage;
@@ -17,7 +18,7 @@ import java.io.IOException;
public abstract class Tulostaja { public abstract class Tulostaja {
final PDRectangle SIVUKOKO = PDRectangle.A4; final PDRectangle SIVUKOKO = PDRectangle.A4;
final PDFont FONTTI = new PDType1Font(Standard14Fonts.FontName.HELVETICA); 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 MARGINAALI = 50;
final float RIVI_KORKEUS = FONTTI_KOKO * 1.2F; final float RIVI_KORKEUS = FONTTI_KOKO * 1.2F;
+10 -1
View File
@@ -1,2 +1,11 @@
version=${project.version} version=${project.version}
viimeisinVersio=0.0.0
buttonFonttiKoko=16
buttonFontti=Arial
tekstiFonttiKoko=16
tekstiFontti=Arial
tulostusFonttiKoko=13
taustaVari=lightgray
insets=5