83ae429c65
Signed-off-by: laurimaaninka <lauri.maaninka@gmail.com>
189 lines
9.1 KiB
Java
189 lines
9.1 KiB
Java
package fi.lpam.ruokamanageri.gui;
|
|
|
|
import fi.lpam.ruokamanageri.Main;
|
|
import fi.lpam.ruokamanageri.dataluokat.Asiakas;
|
|
import fi.lpam.ruokamanageri.gui.elementit.MaaraTableColumn;
|
|
import fi.lpam.ruokamanageri.gui.elementit.TabPohja;
|
|
import javafx.collections.FXCollections;
|
|
import javafx.scene.control.*;
|
|
import javafx.scene.control.Button;
|
|
import javafx.scene.control.Label;
|
|
import javafx.scene.control.cell.PropertyValueFactory;
|
|
import javafx.scene.input.KeyCode;
|
|
import javafx.scene.input.MouseEvent;
|
|
import javafx.scene.layout.*;
|
|
|
|
import java.awt.*;
|
|
import java.io.IOException;
|
|
import java.net.MalformedURLException;
|
|
import java.net.URI;
|
|
import java.net.URISyntaxException;
|
|
import java.net.URL;
|
|
import java.util.Objects;
|
|
import java.util.Optional;
|
|
|
|
|
|
@SuppressWarnings("unchecked")
|
|
public class Asiakashallinta extends TabPohja {
|
|
final TableView<Asiakas> tvAsiakkaat = new TableView<>();
|
|
|
|
public Asiakashallinta() {
|
|
BorderPane root = new BorderPane();
|
|
this.getChildren().add(root);
|
|
root.setPadding(oletusInsets);
|
|
|
|
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("Avaa muutosloki");
|
|
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"));
|
|
tvAsiakkaat.setOnMouseClicked((MouseEvent mouseEvent) -> {
|
|
if (mouseEvent.getClickCount() == 2) {
|
|
muokkaaValittua();
|
|
}
|
|
});
|
|
tvAsiakkaat.setOnKeyPressed(e -> {
|
|
if (tvAsiakkaat.getSelectionModel().getSelectedItem() != null) {
|
|
if (e.getCode() == KeyCode.ENTER) {
|
|
muokkaaValittua();
|
|
}
|
|
}
|
|
|
|
});
|
|
root.setCenter(tvAsiakkaat);
|
|
|
|
TableColumn<Asiakas, String> tcNimi = new TableColumn<>("Nimi");
|
|
tcNimi.setMinWidth(180);
|
|
tcNimi.setCellValueFactory(new PropertyValueFactory<>("nimi"));
|
|
TableColumn<Asiakas, String> tcOsoite = new TableColumn<>("Osoite");
|
|
tcOsoite.setMinWidth(250);
|
|
tcOsoite.setCellValueFactory(new PropertyValueFactory<>("osoite"));
|
|
|
|
TableColumn<Asiakas, MaaraTableColumn<Asiakas, Integer>> tcKuljetuspäivät = new TableColumn<>("Kuljetukset per päivä");
|
|
MaaraTableColumn<Asiakas, Integer> tcMaanantaiKpl = new MaaraTableColumn<>("MA", 20);
|
|
tcMaanantaiKpl.setCellValueFactory(new PropertyValueFactory<>("maanantaiKpl"));
|
|
MaaraTableColumn<Asiakas, Integer> tcTiistaiKpl = new MaaraTableColumn<>("TI", 20);
|
|
tcTiistaiKpl.setCellValueFactory(new PropertyValueFactory<>("tiistaiKpl"));
|
|
MaaraTableColumn<Asiakas, Integer> tcKeskiviikkoKpl = new MaaraTableColumn<>("KE", 20);
|
|
tcKeskiviikkoKpl.setCellValueFactory(new PropertyValueFactory<>("keskiviikkoKpl"));
|
|
MaaraTableColumn<Asiakas, Integer> tcTorstaiKpl = new MaaraTableColumn<>("TO", 20);
|
|
tcTorstaiKpl.setCellValueFactory(new PropertyValueFactory<>("torstaiKpl"));
|
|
MaaraTableColumn<Asiakas, Integer> tcPerjantaiKpl = new MaaraTableColumn<>("PE", 20);
|
|
tcPerjantaiKpl.setCellValueFactory(new PropertyValueFactory<>("perjantaiKpl"));
|
|
tcKuljetuspäivät.getColumns().addAll(tcMaanantaiKpl, tcTiistaiKpl, tcKeskiviikkoKpl, tcTorstaiKpl, tcPerjantaiKpl);
|
|
|
|
TableColumn<Asiakas, MaaraTableColumn<Asiakas, Integer>> tcKuljetusmäärät = new TableColumn<>("Määrät per kuljetus");
|
|
MaaraTableColumn<Asiakas, Integer> tcSalaatit = new MaaraTableColumn<>("Salaatit", 90);
|
|
tcSalaatit.setCellValueFactory(new PropertyValueFactory<>("salaatit"));
|
|
MaaraTableColumn<Asiakas, Integer> tcPääruoat = new MaaraTableColumn<>("Pääruoat", 90);
|
|
tcPääruoat.setCellValueFactory(new PropertyValueFactory<>("pääruoat"));
|
|
MaaraTableColumn<Asiakas, Integer> tcJälkiruoat = new MaaraTableColumn<>("Jälkiruoat", 90);
|
|
tcJälkiruoat.setCellValueFactory(new PropertyValueFactory<>("jälkiruoat"));
|
|
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(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(false);
|
|
column.setStyle("-fx-alignment: CENTER; -fx-font-size: 16px;");
|
|
|
|
}
|
|
|
|
tvAsiakkaat.setItems(FXCollections.observableArrayList(Objects.requireNonNull(Asiakas.haeKaikki())));
|
|
}
|
|
|
|
private void uusiAsiakas() {
|
|
Asiakas luotavaAsiakas = new Asiakas();
|
|
AsiakasIkkuna asiakasIkkuna = new AsiakasIkkuna(luotavaAsiakas);
|
|
asiakasIkkuna.showAndWait();
|
|
if (luotavaAsiakas.getId() != -1) {
|
|
//Asiakas luotu ja id saatu tietokannasta
|
|
tvAsiakkaat.getItems().add(luotavaAsiakas);
|
|
tvAsiakkaat.refresh();
|
|
}
|
|
}
|
|
|
|
private void muokkaaValittua() {
|
|
Asiakas muokattavaAsiakas = tvAsiakkaat.getSelectionModel().getSelectedItem();
|
|
if (muokattavaAsiakas == null) {return;}
|
|
AsiakasIkkuna asiakasIkkuna = new AsiakasIkkuna(muokattavaAsiakas);
|
|
asiakasIkkuna.showAndWait();
|
|
tvAsiakkaat.refresh();
|
|
}
|
|
|
|
private void poistaValittu() {
|
|
Asiakas valittuAsiakas = tvAsiakkaat.getSelectionModel().getSelectedItem();
|
|
boolean läpi = false;
|
|
if (valittuAsiakas != null) {
|
|
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
|
|
alert.setTitle("Oletko varma?");
|
|
alert.setHeaderText("Poistetaanko valittu asiakas?");
|
|
alert.setContentText(valittuAsiakas.getNimi());
|
|
Optional<ButtonType> result = alert.showAndWait();
|
|
if (result.isPresent() && result.get() == ButtonType.OK) {
|
|
läpi = valittuAsiakas.poista();
|
|
}
|
|
if (läpi) {
|
|
tvAsiakkaat.getItems().remove(valittuAsiakas);
|
|
tvAsiakkaat.refresh();
|
|
}
|
|
}
|
|
}
|
|
} |