31 Commits

Author SHA1 Message Date
laurimaaninka fd7e736574 Versio 3.2.1
Signed-off-by: laurimaaninka <lauri.maaninka@gmail.com>
2026-05-29 21:12:38 +03:00
laurimaaninka fadda42b56 Merge pull request 'fix #28' (#30) from issue28 into master
Reviewed-on: #30
2026-05-29 21:09:04 +03:00
laurimaaninka a598c15e62 fix #28
Signed-off-by: laurimaaninka <lauri.maaninka@gmail.com>
2026-05-29 21:08:02 +03:00
laurimaaninka 778402910f Versio 3.2.0
Signed-off-by: laurimaaninka <lauri.maaninka@gmail.com>
2026-05-25 13:39:30 +03:00
laurimaaninka b66958697b Merge pull request 'fix #24' (#25) from bug24 into master
Reviewed-on: #25
2026-05-25 13:29:20 +03:00
laurimaaninka b406ee3e0b fix #24
Signed-off-by: laurimaaninka <lauri.maaninka@gmail.com>
2026-05-25 13:28:55 +03:00
laurimaaninka f08c67cf79 Merge pull request 'fix #22' (#23) from bug22 into master
Reviewed-on: #23
2026-05-25 13:20:44 +03:00
laurimaaninka 0d761c2ab2 fix #22
Signed-off-by: laurimaaninka <lauri.maaninka@gmail.com>
2026-05-25 13:20:18 +03:00
laurimaaninka 0d28b37a93 Lisätty infoteksti asetusvälilehteen 2026-05-15 17:03:02 +03:00
laurimaaninka cf8f8589d8 Adjusteering
Signed-off-by: laurimaaninka <lauri.maaninka@gmail.com>
2026-05-14 23:58:31 +03:00
laurimaaninka 7e356c6c6a Update README.md 2026-05-14 23:36:17 +03:00
laurimaaninka 1188c65802 Update README.md 2026-05-14 23:36:01 +03:00
laurimaaninka 809c571398 Update README.md 2026-05-14 23:34:46 +03:00
laurimaaninka b050e500e6 Merge pull request '#fix 19 TabPohja on nyt Tab, joka hoitaa monia asioita kuin itsestään' (#21) from TabPohja into master
Reviewed-on: #21
2026-05-14 23:32:11 +03:00
laurimaaninka fd6f074dda Merge branch 'master' into TabPohja 2026-05-14 23:31:27 +03:00
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 2fb7e24aac Merge remote-tracking branch 'origin/TabPohja' into TabPohja 2026-05-14 23:27:44 +03:00
laurimaaninka e123721e18 fix #19
Signed-off-by: laurimaaninka <lauri.maaninka@gmail.com>
2026-05-14 23:27:40 +03:00
laurimaaninka 2ad2d85c58 Merge remote-tracking branch 'origin/TabPohja' into TabPohja 2026-05-14 23:27:13 +03:00
laurimaaninka 342f62dedd #fix 19 TabPohja on nyt Tab, joka hoitaa monia asioita kuin itsestään
Signed-off-by: laurimaaninka <lauri.maaninka@gmail.com>
2026-05-14 23:27:09 +03:00
laurimaaninka 18a849dfa6 #fix 19 TabPohja on nyt Tab, joka hoitaa monia asioita kuin itsestään
Signed-off-by: laurimaaninka <lauri.maaninka@gmail.com>
2026-05-14 23:24:22 +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
20 changed files with 390 additions and 179 deletions
+2 -1
View File
@@ -17,10 +17,11 @@ Pienen kotiateriapalvelun käyttöön rakennettu ohjelma sisältäen seuraavat o
# Käyttöönotto
- Vaatimukset
- Windows
- Windows (Linux melkein täydellisellä yhteensopivuudella)
- Java 25+
- Usean tietokoneen käyttöön OneDrive -tili (samanaikaisuus ei tuettu)
- Lataa haluamasi ohjelmaversio julkaisuista
- Aja .JAR tiedosto
- Tietokanta sijaitsee osoitteessa `~/OneDrive/Kuljetusruokasovellus/tietokanta.db`
- Asetukset sijaitsee osoitteessa `~/OneDrive/Kuljetusruokasovellus/asetukset.properties`
- Ohjelma luo tietokannan, mikäli sitä ei löydy.
+1 -1
View File
@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>fi.lpam.ruokamanageri</groupId>
<artifactId>Ruokamanageri</artifactId>
<version>3.1.0</version>
<version>3.2.1</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>25</maven.compiler.source>
+23 -38
View File
@@ -1,15 +1,11 @@
package fi.lpam;
import fi.lpam.dataluokat.Tietokanta;
import fi.lpam.gui.Asiakashallinta;
import fi.lpam.gui.Kierroshallinta;
import fi.lpam.gui.KuljetusRaportit;
import fi.lpam.gui.KuljetusListat;
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;
@@ -18,6 +14,8 @@ import java.util.Objects;
@SuppressWarnings("InstantiationOfUtilityClass")
public class App extends Application {
TabPohja asiakasHallinta, kierrostenHallinta, kuljetusListat, kuljetetut, asetukset;
static void main() {
launch();
}
@@ -26,36 +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(35);
root.setTabMaxHeight(50);
Tab asiakasHallinta, kierrostenHallinta, kuljetusListat, kuljetetut;
asiakasHallinta = new Tab("Asiakashallinta", new Asiakashallinta());
kierrostenHallinta = new Tab("Kierrostenhallinta");
kuljetusListat = new Tab("Kuljetuslistat");
kuljetetut = new Tab("Kuljetetut");
root.getTabs().addAll(asiakasHallinta, kierrostenHallinta, kuljetusListat, kuljetetut);
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;
}
});
for (Tab tab : root.getTabs()) {
tab.setClosable(false);
tab.setStyle("-fx-font-size: 18px; -fx-font-weight: bold; -fx-font-family: Open Sans");
}
Scene scene = new Scene(root);
primaryStage.setScene(scene);
StringBuilder title = new StringBuilder();
title.append("Ruokamanageri");
title.append(" v").append(Main.properties.getProperty("version"));
@@ -63,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"))));
if (!Main.properties.getProperty("version").equals(Main.properties.getProperty("viimeisinVersio"))) new MuutosIlmoitus();
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();
}
}
@@ -135,7 +135,7 @@ public class Asiakas implements TietokantaOlio {
parsiResultSet(rs).forEach(asiakas -> asiakkaat.put(asiakas.getId(), asiakas));
ArrayList<Asiakas> järjestetyt = new ArrayList<>(asiakkaat.size());
for (int id : IDt) {
järjestetyt.add(asiakkaat.get(id));
if (asiakkaat.containsKey(id)) järjestetyt.add(asiakkaat.get(id)); //Huomioidaan, onko asiakas poistettu
}
return järjestetyt;
}
@@ -11,6 +11,7 @@ public class RaporttiRivi {
private final String nimi;
private final LocalDate pvm;
private final int salaatit, pääruoat, jälkiruoat;
private final String erva;
private final String lisätiedot;
private final String yhteyshenkilönNimi, laskutusOsoite, yhteyshenkilönPuhelinnumero, yhteyshenkilönSähköposti;
@@ -23,13 +24,15 @@ public class RaporttiRivi {
String yhteyshenkilönNimi,
String laskutusOsoite,
String yhteyshenkilönPuhelinnumero,
String yhteyshenkilönSähköposti) {
String yhteyshenkilönSähköposti,
String erva) {
this.nimi = nimi;
this.pvm = pvm;
this.salaatit = salaatit;
this.pääruoat = pääruoat;
this.jälkiruoat = jälkiruoat;
this.lisätiedot = lisätiedot;
this.erva = erva;
this.yhteyshenkilönNimi = yhteyshenkilönNimi;
this.laskutusOsoite = laskutusOsoite;
this.yhteyshenkilönPuhelinnumero = yhteyshenkilönPuhelinnumero;
@@ -53,7 +56,8 @@ public class RaporttiRivi {
asiakkaat.yhteyshenkilönNimi,
asiakkaat.laskutusosoite,
asiakkaat.yhteyshenkilönPuhelinnumero,
asiakkaat.yhteyshenkilönSähköposti
asiakkaat.yhteyshenkilönSähköposti,
asiakkaat.erityisruokavalio
from kuljetukset
left join asiakkaat on kuljetukset.asiakasID=asiakkaat.id
where kuljetusPäivämäärä between ? and ?
@@ -75,6 +79,7 @@ public class RaporttiRivi {
rs.getString(i++),
rs.getString(i++),
rs.getString(i++),
rs.getString(i++),
rs.getString(i++)
);
raportti.add(uusi);
@@ -93,7 +98,8 @@ public class RaporttiRivi {
asiakkaat.yhteyshenkilönNimi,
asiakkaat.laskutusosoite,
asiakkaat.yhteyshenkilönPuhelinnumero,
asiakkaat.yhteyshenkilönSähköposti
asiakkaat.yhteyshenkilönSähköposti,
asiakkaat.erityisruokavalio
from kuljetukset
left join asiakkaat on kuljetukset.asiakasID=asiakkaat.id
where kuljetusPäivämäärä between ? and ?
@@ -117,6 +123,7 @@ public class RaporttiRivi {
rs.getString(i++),
rs.getString(i++),
rs.getString(i++),
rs.getString(i++),
rs.getString(i++)
);
raportti.add(uusi);
@@ -137,7 +144,7 @@ public class RaporttiRivi {
"\n" + yhteyshenkilönPuhelinnumero +
"\n" + yhteyshenkilönSähköposti;
return nimi +
return nimi + " " + erva +
"\nSal: " + salaatit + ", Pr: " + pääruoat + ", Jr: " + jälkiruoat +
"\nLisätiedot:\n" +
getLisätiedot() +
@@ -184,4 +191,8 @@ public class RaporttiRivi {
public String getYhteyshenkilönSähköposti() {
return yhteyshenkilönSähköposti;
}
public String getErva() {
return erva;
}
}
+124
View File
@@ -0,0 +1,124 @@
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<String> 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<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(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();
}
}
}
+5 -9
View File
@@ -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();
+59 -50
View File
@@ -1,6 +1,8 @@
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;
@@ -25,45 +27,9 @@ public class Asiakashallinta extends TabPohja {
final TableView<Asiakas> 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(5);
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"));
@@ -117,40 +83,72 @@ public class Asiakashallinta extends TabPohja {
tcKuljetusmäärät.getColumns().addAll(tcSalaatit, tcPääruoat, tcJälkiruoat);
TableColumn<Asiakas, String> tcErityisruokavalio = new TableColumn<>("Ruokarajoitteet");
// tcErityisruokavalio.setMinWidth(150);
tcErityisruokavalio.setCellValueFactory(new PropertyValueFactory<>("erityisruokavalio"));
TableColumn<Asiakas, String> tcAvainTieto = new TableColumn<>("Avaintieto");
// tcAvainTieto.setMinWidth(150);
tcAvainTieto.setCellValueFactory(new PropertyValueFactory<>("avainTieto"));
TableColumn<Asiakas, String> tcLisätiedot = new TableColumn<>("Lisätieto kuljetukselle");
// tcLisätiedot.setMinWidth(250);
tcLisätiedot.setCellValueFactory(new PropertyValueFactory<>("lisätiedot"));
TableColumn<Asiakas, String> tcYhteyshenkilönNimi = new TableColumn<>("Yhteyshenkilö");
// tcYhteyshenkilönNimi.setMinWidth(250);
tcYhteyshenkilönNimi.setCellValueFactory(new PropertyValueFactory<>("yhteyshenkilönNimi"));
TableColumn<Asiakas, String> tcLaskutusOsoite = new TableColumn<>("Laskutusosoite");
// tcLaskutusOsoite.setMinWidth(250);
tcLaskutusOsoite.setCellValueFactory(new PropertyValueFactory<>("laskutusOsoite"));
TableColumn<Asiakas, String> tcYhteyshenkilönPuhelinnumero = new TableColumn<>("Yhteyshenkilön puhelinnumero");
// tcYhteyshenkilönPuhelinnumero.setMinWidth(250);
tcYhteyshenkilönPuhelinnumero.setCellValueFactory(new PropertyValueFactory<>("yhteyshenkilönPuhelinnumero"));
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"));
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()) {
column.setEditable(false);
column.setReorderable(false);
column.setResizable(true);
column.setStyle("-fx-alignment: CENTER; -fx-font-size: 16px;");
column.getColumns().forEach(this::määritäColumn);
määritäColumn(column);
}
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);
@@ -188,4 +186,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")
);
}
}
+18 -13
View File
@@ -4,7 +4,8 @@ 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.FontLabel;
import fi.lpam.gui.elementit.TabPohja;
import javafx.collections.FXCollections;
@@ -22,15 +23,13 @@ import java.util.Objects;
public class Kierroshallinta extends TabPohja {
private final MultiColumnListView<Asiakas> mclv = new MultiColumnListView<>();
private final ArrayList<Kierros> kierrokset = Kierros.haeKaikki();
private final ArrayList<Asiakas> kaikkiAsiakkaat = Asiakas.haeKaikki();
private ArrayList<Asiakas> kaikkiAsiakkaat = Asiakas.haeKaikki();
public Kierroshallinta() {
BorderPane root = new BorderPane();
this.getChildren().add(root);
root.setPadding(oletusInsets);
super("Kierroshallinta");
root.setCenter(mclv);
mclv.setCellFactory(_ -> new AsiakasListCell(mclv));
mclv.setCellFactory(_ -> new AsiakasMCLVListCell(mclv));
mclv.setPlaceholderFrom(new Asiakas(""));
mclv.setPlaceholderTo(new Asiakas(""));
rakennaSarakkeet();
@@ -38,8 +37,7 @@ public class Kierroshallinta extends TabPohja {
BorderPane yläpalkki = new BorderPane();
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.");
infoTeksti.setFont(tekstiFont);
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(TabPohja.buttonFont);
lisääKierros.setFont(BUTTON_FONT);
yläpalkinNapit.getChildren().add(lisääKierros);
Button tallenna = new Button("Tallenna kierrokset");
tallenna.setFont(TabPohja.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<Asiakas> eiKierroksella = FXCollections.observableArrayList(new ArrayList<>());
HashSet<Integer> kierroksellaOlevatAsiakasIDt = new HashSet<>();
@@ -84,15 +83,16 @@ public class Kierroshallinta extends TabPohja {
}
}
MultiColumnListView.ListViewColumn<Asiakas> colEiKierroksella = new MultiColumnListView.ListViewColumn<>();
colEiKierroksella.setHeader(new Label("Ei vielä kierroksella"));
Label labelEiKierroksella = new FontLabel(TEKSTI_FONT, "Ei vielä kierroksella");
colEiKierroksella.setHeader(labelEiKierroksella);
colEiKierroksella.setItems(FXCollections.observableArrayList(eiKierroksella));
mclv.getColumns().add(colEiKierroksella);
}
private void lisaaKierros(Kierros kierros) {
if (kierros.getId() == -1) kierrokset.add(kierros);
if (!kierrokset.contains(kierros)) kierrokset.add(kierros);
MultiColumnListView.ListViewColumn<Asiakas> uusiSarake = new MultiColumnListView.ListViewColumn<>();
uusiSarake.setHeader(new Label("Kierros " + kierros.getKierrosNumero()));
uusiSarake.setHeader(new FontLabel(TEKSTI_FONT, "Kierros " + kierros.getKierrosNumero()));
uusiSarake.setItems(kierros.getAsiakkaat());
mclv.getColumns().add(kierros.getKierrosNumero()-1, uusiSarake);
}
@@ -125,4 +125,9 @@ public class Kierroshallinta extends TabPohja {
info.setContentText(null);
info.showAndWait();
}
@Override
public void päivitä() {
rakennaSarakkeet();
}
}
+29 -23
View File
@@ -1,8 +1,10 @@
package fi.lpam.gui;
import fi.lpam.Main;
import fi.lpam.dataluokat.Asiakas;
import fi.lpam.dataluokat.Kierros;
import fi.lpam.dataluokat.Kuljetus;
import fi.lpam.gui.elementit.FontLabel;
import fi.lpam.gui.tableCell.IntegerFieldTableCellFactory;
import fi.lpam.gui.tableCell.KuljetaTableCell;
import fi.lpam.tulostajat.KuljetusListaTulostaja;
@@ -36,6 +38,8 @@ public class KuljetusListat extends TabPohja {
private final HashMap<Integer, Asiakas> asiakkaat = new HashMap<>();
public KuljetusListat() {
super("Kuljetuslistat");
ObservableList<Integer> määräVaihtoehdot = FXCollections.observableArrayList();
for (int i = 0; i <= 10; i++) {
määräVaihtoehdot.add(i);}
@@ -44,51 +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 Label("Kuljetuslistojen luonti");
infoTeksti.setFont(tekstiFont);
Label infoTeksti = new FontLabel(TEKSTI_FONT, "Kuljetuslistojen luonti");
yläpalkki.setLeft(infoTeksti);
HBox kierroksenValintaLaatikko = new HBox();
kierroksenValintaLaatikko.setSpacing(5);
kierroksenValintaLaatikko.setSpacing(5);
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 Label("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 Label("Valitse päivämäärä:"),
new FontLabel(TEKSTI_FONT, "Päivämäärä:"),
datePicker,
new Label("Valitse kierros:"),
new FontLabel(TEKSTI_FONT, "Kierros:"),
kierrosValinta, tallennusStatus);
yläpalkki.setCenter(kierroksenValintaLaatikko);
HBox napit = new HBox();
napit.setSpacing(5);
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<Kuljetus, Boolean> tcNappi = new TableColumn<>("Kuljeta");
@@ -97,7 +95,7 @@ public class KuljetusListat extends TabPohja {
tcNappi.setCellValueFactory(features -> new SimpleBooleanProperty(features.getValue() != null));
TableColumn<Kuljetus, String> tcNimi = new TableColumn<>("Nimi");
tcNimi.setMinWidth(150);
tcNimi.setMinWidth(200);
tcNimi.setCellFactory(TextFieldTableCell.forTableColumn());
tcNimi.setCellValueFactory(new PropertyValueFactory<>("nimi"));
tcNimi.setOnEditCommit((TableColumn.CellEditEvent<Kuljetus, String> event) -> {event.getTableView().getItems().get(event.getTablePosition().getRow()).setNimi(event.getNewValue()); tallennusStatus.setText("Tallennettu: Ei");});
@@ -147,10 +145,12 @@ public class KuljetusListat extends TabPohja {
sarake.setSortable(false);
sarake.setEditable(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.setResizable(false);
}
private void päivitäListanäkymä() {
@@ -217,4 +217,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ä();
}
}
+23 -13
View File
@@ -1,6 +1,8 @@
package fi.lpam.gui;
import fi.lpam.Main;
import fi.lpam.dataluokat.RaporttiRivi;
import fi.lpam.gui.elementit.FontLabel;
import fi.lpam.tulostajat.KuljetusRaporttiTulostaja;
import fi.lpam.gui.tableCell.PaivamaaraTableCell;
import fi.lpam.gui.elementit.TabPohja;
@@ -34,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 Label("Kuljetusraportit. \nTarkka-valinnalla koostetun raportin tulostaminen paperille ei suositeltua.");
infoTeksti.setFont(tekstiFont);
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(5);
yläpalkinNapit.setSpacing(SPACING);
yläpalkki.setRight(yläpalkinNapit);
tarkka = new CheckBox("Tarkka");
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 Label("Hae kuljetukset välillä:"),
alkuPvm, new Label("-"), loppuPvm,
//new FontLabel(tekstiFont,"Hae kuljetukset välillä:"),
alkuPvm, new FontLabel(TEKSTI_FONT,"-"), loppuPvm,
haeKuljetukset, tulostaRaportti);
root.setCenter(tableView);
@@ -87,6 +87,10 @@ public class KuljetusRaportit extends TabPohja {
tcJälkiruoat.setMinWidth(100);
tcJälkiruoat.setCellValueFactory(new PropertyValueFactory<>("jälkiruoat"));
TableColumn<RaporttiRivi, String> tcErva = new TableColumn<>("Erityisruokavalio");
tcErva.setMinWidth(200);
tcErva.setCellValueFactory(new PropertyValueFactory<>("erva"));
TableColumn<RaporttiRivi, String> tcLisätiedot = new TableColumn<>("Lisätiedot");
tcLisätiedot.setMinWidth(300);
tcLisätiedot.setCellValueFactory(new PropertyValueFactory<>("lisätiedot"));
@@ -107,14 +111,20 @@ public class KuljetusRaportit extends TabPohja {
tcYhteyshenkilönSähköposti.setMinWidth(200);
tcYhteyshenkilönSähköposti.setCellValueFactory(new PropertyValueFactory<>("yhteyshenkilönSähköposti"));
tableView.getColumns().addAll(tcNimi, tcPvm, tcSalaatit, tcPääruoat, tcJälkiruoat, tcLisätiedot,
tableView.getColumns().addAll(tcNimi, tcPvm, tcSalaatit, tcPääruoat, tcJälkiruoat, tcErva, tcLisätiedot,
tcYhteyshenkilönNimi, tcLaskutusOsoite, tcYhteyshenkilönPuhelinnumero, tcYhteyshenkilönSähköposti);
tableView.setPlaceholder(new Label("Hae raportti"));
tableView.setPlaceholder(new FontLabel(BUTTON_FONT, "Hae raportti"));
for (TableColumn<RaporttiRivi, ?> sarake : tableView.getColumns()) {
sarake.setSortable(false);
sarake.setEditable(false);
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"));
}
}
@Override
public void päivitä() {}
}
@@ -12,13 +12,13 @@ import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
public class AsiakasListCell extends MultiColumnListView.ColumnListCell<Asiakas> {
public class AsiakasMCLVListCell extends MultiColumnListView.ColumnListCell<Asiakas> {
private final StackPane wrapper;
public AsiakasListCell(MultiColumnListView<Asiakas> multiColumnListView) {
public AsiakasMCLVListCell(MultiColumnListView<Asiakas> multiColumnListView) {
super(multiColumnListView);
this.setMinHeight(60);
this.setMaxHeight(60);
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 AsiakasListCell extends MultiColumnListView.ColumnListCell<Asiakas>
contentPlaceholder.managedProperty().bind(placeholder);
Label label = new Label();
label.setFont(TabPohja.tekstiFont);
label.setFont(TabPohja.TEKSTI_FONT);
label.textProperty().bind(textProperty());
wrapper = new StackPane(content, contentPlaceholder, label);
@@ -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);
}
}
@@ -5,7 +5,6 @@ import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.*;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import one.jpro.platform.mdfx.MarkdownView;
@@ -17,8 +16,8 @@ public class MuutosIlmoitus extends Stage {
public MuutosIlmoitus() {
super();
VBox root = new VBox();
root.setBorder(TabPohja.oletusBorder);
root.setPadding(TabPohja.oletusInsets);
root.setBorder(TabPohja.BORDER);
root.setPadding(TabPohja.INSETS);
root.setAlignment(Pos.CENTER);
root.setSpacing(10);
@@ -39,7 +38,7 @@ public class MuutosIlmoitus extends Stage {
root.getChildren().add(markdownView);
Button ok = new Button("OK");
ok.setFont(TabPohja.buttonFont);
ok.setFont(TabPohja.BUTTON_FONT);
ok.setOnAction(e -> this.close());
root.getChildren().add(ok);
@@ -1,24 +1,54 @@
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;
import javafx.scene.text.FontWeight;
/**
* 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));
import java.util.Properties;
public TabPohja() {
this.setStyle(oletusStyle);
this.setPadding(oletusInsets);
this.setBorder(oletusBorder);
/**
* Käyttöliittymän välilehden pohja
*/
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;
protected BorderPane root = new BorderPane();
public TabPohja(String title) {
super(title);
Properties prop = Main.properties;
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 (this.isSelected()) 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ä() {}
}
@@ -3,6 +3,7 @@ package fi.lpam.gui.tableCell;
import fi.lpam.dataluokat.Asiakas;
import fi.lpam.dataluokat.Kuljetus;
import fi.lpam.gui.KuljetusListat;
import fi.lpam.gui.elementit.TabPohja;
import javafx.geometry.Insets;
import javafx.scene.control.Button;
import javafx.scene.control.ContentDisplay;
@@ -16,7 +17,8 @@ public class KuljetaTableCell extends TableCell<Kuljetus, Boolean> {
public KuljetaTableCell(HashMap<Integer, Asiakas> asiakkaat) {
paddedNappi.setPadding(new Insets(3));
Button nappi = new Button("Muuta");
Button nappi = new Button("Kuljeta?");
nappi.setFont(TabPohja.TEKSTI_FONT);
paddedNappi.getChildren().add(nappi);
nappi.setOnMouseClicked(_ -> {
getTableView().getSelectionModel().select(getIndex());
@@ -44,7 +44,8 @@ public class KuljetusListaTulostaja extends Tulostaja{
siirräOsoitinta(NIMEN_LEVEYS);
sisältö.showText(kuljetus.getLisätieto());
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();
@@ -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;
+9
View File
@@ -1,3 +1,12 @@
# 3.2.1
- Asiakkaan erityisruokavalio osaksi raporttia
# 3.2.0
- Lisätty Asetukset -välilehti
- Asiakkaan voi poistaa ilman, että se rikkoo kierroksia
- Ohjelma ei enään kaadu, mikäli on tallentamaton kierros kierroshallinnassa
- Yhtenäistetty ulkoasua välilehtien välillä
# 3.1.0
- Muutosloki näkyy käynnistäessä uutta versiota ensimmäistä kertaa
- Ohjelman taustariippuvuuksia päivitetty
+12 -1
View File
@@ -1,2 +1,13 @@
version=${project.version}
viimeisinVersio=0.0.0
buttonFonttiKoko=16
buttonFontti=Arial
tekstiFonttiKoko=16
tekstiFontti=Arial
tulostusFonttiKoko=13
taustaVari=lightgray
insets=5