This commit is contained in:
Marc Beyer 2022-01-31 12:42:31 +01:00
parent 2fbf3895c5
commit 8c3925ea1a
8 changed files with 175 additions and 136 deletions

View File

@ -1,4 +1,4 @@
package main; package events;
import com.jfoenix.controls.*; import com.jfoenix.controls.*;
import helper.HttpRequestException; import helper.HttpRequestException;

View File

@ -1,4 +1,4 @@
package main; package events;
import helper.HttpRequestException; import helper.HttpRequestException;
import container.DataController; import container.DataController;

View File

@ -2,15 +2,20 @@ package main;
import config.Config; import config.Config;
import config.ConfigLoader; import config.ConfigLoader;
import helper.Tuple;
import javafx.application.Application; import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.stage.Modality;
import javafx.stage.Stage; import javafx.stage.Stage;
import container.DataController; import container.DataController;
import container.HttpRequest; import container.HttpRequest;
import java.io.IOException; import java.io.IOException;
import java.util.Objects; import java.util.Objects;
import java.util.function.Consumer;
public class MainApplication extends Application { public class MainApplication extends Application {
@Override @Override
@ -70,4 +75,32 @@ public class MainApplication extends Application {
public static void main(String[] args) { public static void main(String[] args) {
launch(); launch();
} }
public static void loadScene(
String title,
String fxml,
String css,
int width,
int height,
Consumer<FXMLLoader> method
) {
FXMLLoader fxmlLoader = new FXMLLoader(
MainApplication.class.getResource(fxml));
try {
Scene scene = new Scene(fxmlLoader.load(), width, height);
scene.getStylesheets().add(Objects.requireNonNull(
MainApplication.class.getResource(css)).toExternalForm());
Stage stage = new Stage();
stage.setTitle(title);
stage.setScene(scene);
stage.initModality(Modality.APPLICATION_MODAL);
stage.setResizable(false);
if(method != null)method.accept(fxmlLoader);
stage.showAndWait();
} catch (IOException e) {
e.printStackTrace();
}
}
} }

View File

@ -2,12 +2,13 @@ package main;
import config.Config; import config.Config;
import config.ConfigLoader; import config.ConfigLoader;
import events.EditEventController;
import ui.DayPane; import ui.DayPane;
import ui.EventPane;
import ui.SvgBtnCreator; import ui.SvgBtnCreator;
import helper.HttpRequestException; import helper.HttpRequestException;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.geometry.Pos;
import javafx.scene.Group; import javafx.scene.Group;
import javafx.scene.Node; import javafx.scene.Node;
import javafx.scene.Scene; import javafx.scene.Scene;
@ -125,21 +126,14 @@ public class MainController {
} }
protected void onSettingBtnClick(){ protected void onSettingBtnClick(){
try{ MainApplication.loadScene(
FXMLLoader fxmlLoader = new FXMLLoader( "Einstellungen",
MainApplication.class.getResource("option-view.fxml")); "option-view.fxml",
Scene scene = new Scene(fxmlLoader.load(), 650, 650); "option-view.css",
scene.getStylesheets().add(Objects.requireNonNull( 650,
MainApplication.class.getResource("option-view.css")).toExternalForm()); 600,
Stage stage = new Stage(); null
stage.setTitle("Einstellungen"); );
stage.setScene(scene);
stage.initModality(Modality.APPLICATION_MODAL);
stage.setResizable(false);
stage.showAndWait();
} catch (IOException e) {
e.printStackTrace();
}
} }
protected void onLogoutBtnClick(ActionEvent event){ protected void onLogoutBtnClick(ActionEvent event){
@ -161,104 +155,38 @@ public class MainController {
} }
private void addEvent(Event event) { private void addEvent(Event event) {
VBox vBox = new VBox(); EventPane eventPane = new EventPane(event);
vBox.getStyleClass().add("event"); eventPane.getEditBtn().setOnAction(event1 -> MainApplication.loadScene(
vBox.setSpacing(5); "edit-event.fxml",
"create-event.css",
"Termin bearbeiten",
600,
600,
fxmlLoader -> {
EditEventController editEventController = fxmlLoader.getController();
editEventController.setCurrentEvent(event);
}
));
HBox btnHBox = new HBox(); eventPane.getDeleteBtn().setOnAction(e -> {
btnHBox.setAlignment(Pos.BOTTOM_RIGHT);
Group svgDel = new Group(
SvgBtnCreator.createPath("M0 0h24v24H0z", "transparent", "transparent"),
SvgBtnCreator.createPath("M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z",
"white", "gray")
);
Button deleteBtn = SvgBtnCreator.createBtn(svgDel, 24, "", "Löschen des Termins");
deleteBtn.getStyleClass().add("deleteEventBtn");
deleteBtn.setOnAction(e -> {
DataController dataController = new DataController(); DataController dataController = new DataController();
try { try {
dataController.deleteEvent(event.getOwnerId(), event.getId(), event.getDate()); dataController.deleteEvent(event.getOwnerId(), event.getId(), event.getDate());
} catch (HttpRequestException ex) { } catch (HttpRequestException ex) {
ex.printStackTrace(); new Alert(Alert.AlertType.ERROR, ex.getMessage()).showAndWait();
} }
updateEvents(); updateEvents();
}); });
Group svgEdit = new Group(
SvgBtnCreator.createPath("M0 0h24v24H0z", "transparent", "transparent"),
SvgBtnCreator.createPath("M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z",
"white", "gray")
);
Button editBtn = SvgBtnCreator.createBtn(svgEdit, 24, "", "Bearbeiten des Termins");
editBtn.getStyleClass().add("editEventBtn");
editBtn.setOnAction(event1 -> {
try {
FXMLLoader fxmlLoader = new FXMLLoader(
MainApplication.class.getResource("edit-event.fxml"));
Scene scene = new Scene(fxmlLoader.load(), 650, 650);
scene.getStylesheets().add(Objects.requireNonNull(
MainApplication.class.getResource("create-event.css")).toExternalForm());
Stage stage = new Stage();
stage.setTitle("Termin bearbeiten");
stage.setScene(scene);
stage.initModality(Modality.APPLICATION_MODAL);
stage.setResizable(false);
EditEventController editEventController = fxmlLoader.getController();
editEventController.setCurrentEvent(event);
stage.showAndWait();
updateEvents();
} catch (IOException e) {
e.printStackTrace();
}
});
btnHBox.getChildren().add(editBtn);
btnHBox.getChildren().add(deleteBtn);
vBox.getChildren().add(btnHBox);
Label nameLabel = new Label(event.getName());
nameLabel.setWrapText(true);
vBox.getChildren().add(nameLabel);
if (event.getStart() != null || event.getEnd() != null) {
String timeStr = (event.getStart() != null ? formatTime(event.getStart()) : "")
+ (event.getEnd() != null ? " - " + formatTime(event.getEnd()) : "");
Label timeLabel = new Label(timeStr);
vBox.getChildren().add(timeLabel);
}
Label typeLabel = new Label("Wer: " + event.getOwnerName());
vBox.getChildren().add(typeLabel);
Label prioLabel = new Label("Priorität: " + event.getPriority());
vBox.getChildren().add(prioLabel);
if (event.isFullDay()) {
Label fullDayLabel = new Label("Dieser Termin bockiert den ganzen Tag!");
fullDayLabel.setWrapText(true);
vBox.getChildren().add(fullDayLabel);
}
LocalDateTime eventDate = event.getDate(); LocalDateTime eventDate = event.getDate();
int day = (int) Duration.between( int day = (int) Duration.between(
weekStartDateTime.toLocalDate().atStartOfDay(), eventDate.toLocalDate().atStartOfDay()).toDays(); weekStartDateTime.toLocalDate().atStartOfDay(), eventDate.toLocalDate().atStartOfDay()).toDays();
if (day >= 0 && day < 7) { if (day >= 0 && day < 7) {
dayVBoxes[day].getChildren().add(vBox); dayVBoxes[day].getChildren().add(eventPane);
} }
} }
private String formatTime(String time) {
String[] timeArr = time.split(":");
if (timeArr.length > 2) {
return timeArr[0] + ":" + timeArr[1];
}
return time;
}
private void setDates() { private void setDates() {
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("LLLL yyyy"); DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("LLLL yyyy");
DateTimeFormatter dayFormatter = DateTimeFormatter.ofPattern("E dd.MM"); DateTimeFormatter dayFormatter = DateTimeFormatter.ofPattern("E dd.MM");

View File

@ -11,24 +11,18 @@ import javafx.event.ActionEvent;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.scene.Node; import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Alert; import javafx.scene.control.Alert;
import javafx.scene.control.ButtonType; import javafx.scene.control.ButtonType;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.scene.layout.GridPane; import javafx.scene.layout.GridPane;
import javafx.stage.Modality;
import javafx.stage.Stage; import javafx.stage.Stage;
import container.DataController; import container.DataController;
import container.User; import container.User;
import users.EditUserController; import users.EditUserController;
import java.awt.*;
import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.function.Consumer;
public class OptionController { public class OptionController {
@ -80,7 +74,14 @@ public class OptionController {
} }
public void onCreateBtnClick(ActionEvent actionEvent) { public void onCreateBtnClick(ActionEvent actionEvent) {
loadUserScene(actionEvent, "User erstellen", "../users/create-user.fxml", null); MainApplication.loadScene(
"User erstellen",
"../users/create-user.fxml",
"../users/create-user.css",
800,
650,
null
);
} }
public void onUpdateBtnClick(ActionEvent actionEvent) { public void onUpdateBtnClick(ActionEvent actionEvent) {
@ -88,11 +89,16 @@ public class OptionController {
if(editIndex < 0 || editIndex >= users.size()) return; if(editIndex < 0 || editIndex >= users.size()) return;
FXMLLoader fxmlLoader = loadUserScene( MainApplication.loadScene(
actionEvent,
"User bearbeiten", "User bearbeiten",
"../users/edit-user.fxml", "../users/edit-user.fxml",
this::setUserAtController "../users/create-user.css",
800,
650,
fxmlLoader -> {
EditUserController editUserController = fxmlLoader.getController();
editUserController.setCurrentUser(users.get(editIndex));
}
); );
} }
@ -113,31 +119,6 @@ public class OptionController {
} }
} }
private FXMLLoader loadUserScene(ActionEvent actionEvent, String title, String fxml, Consumer<FXMLLoader> method) {
FXMLLoader fxmlLoader = new FXMLLoader(
MainApplication.class.getResource(fxml));
try {
Scene scene = new Scene(fxmlLoader.load(), 800, 650);
scene.getStylesheets().add(Objects.requireNonNull(
MainApplication.class.getResource("../users/create-user.css")).toExternalForm());
Stage stage = new Stage();
stage.setTitle(title);
stage.setScene(scene);
stage.initModality(Modality.APPLICATION_MODAL);
stage.setResizable(false);
if(method != null)method.accept(fxmlLoader);
stage.showAndWait();
Stage stageOld = (Stage) ((Node) actionEvent.getSource()).getScene().getWindow();
stageOld.close();
} catch (IOException e) {
e.printStackTrace();
e.printStackTrace();
}
return fxmlLoader;
}
private void setUserAtController(FXMLLoader fxmlLoader){ private void setUserAtController(FXMLLoader fxmlLoader){
int editIndex = comboBox.getSelectionModel().getSelectedIndex(); int editIndex = comboBox.getSelectionModel().getSelectedIndex();
EditUserController editUserController = fxmlLoader.getController(); EditUserController editUserController = fxmlLoader.getController();

View File

@ -0,0 +1,97 @@
package ui;
import container.DataController;
import container.Event;
import events.EditEventController;
import helper.HttpRequestException;
import javafx.fxml.FXMLLoader;
import javafx.geometry.Pos;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Modality;
import javafx.stage.Stage;
import main.MainApplication;
import java.io.IOException;
import java.time.Duration;
import java.time.LocalDateTime;
import java.util.Objects;
public class EventPane extends VBox {
private Button deleteBtn;
private Button editBtn;
public EventPane(Event event) {
this.getStyleClass().add("event");
this.setSpacing(5);
HBox btnHBox = new HBox();
btnHBox.setAlignment(Pos.BOTTOM_RIGHT);
Group svgDel = new Group(
SvgBtnCreator.createPath("M0 0h24v24H0z", "transparent", "transparent"),
SvgBtnCreator.createPath("M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z",
"white", "gray")
);
deleteBtn = SvgBtnCreator.createBtn(svgDel, 24, "", "Löschen des Termins");
deleteBtn.getStyleClass().add("deleteEventBtn");
Group svgEdit = new Group(
SvgBtnCreator.createPath("M0 0h24v24H0z", "transparent", "transparent"),
SvgBtnCreator.createPath("M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z",
"white", "gray")
);
editBtn = SvgBtnCreator.createBtn(svgEdit, 24, "", "Bearbeiten des Termins");
editBtn.getStyleClass().add("editEventBtn");
btnHBox.getChildren().add(editBtn);
btnHBox.getChildren().add(deleteBtn);
this.getChildren().add(btnHBox);
Label nameLabel = new Label(event.getName());
nameLabel.setWrapText(true);
this.getChildren().add(nameLabel);
if (event.getStart() != null || event.getEnd() != null) {
String timeStr = (event.getStart() != null ? formatTime(event.getStart()) : "")
+ (event.getEnd() != null ? " - " + formatTime(event.getEnd()) : "");
Label timeLabel = new Label(timeStr);
this.getChildren().add(timeLabel);
}
Label typeLabel = new Label("Wer: " + event.getOwnerName());
this.getChildren().add(typeLabel);
Label prioLabel = new Label("Priorität: " + event.getPriority());
this.getChildren().add(prioLabel);
if (event.isFullDay()) {
Label fullDayLabel = new Label("Dieser Termin bockiert den ganzen Tag!");
fullDayLabel.setWrapText(true);
this.getChildren().add(fullDayLabel);
}
}
public Button getDeleteBtn() {
return deleteBtn;
}
public Button getEditBtn() {
return editBtn;
}
private String formatTime(String time) {
String[] timeArr = time.split(":");
if (timeArr.length > 2) {
return timeArr[0] + ":" + timeArr[1];
}
return time;
}
}

View File

@ -8,7 +8,7 @@
<?import com.jfoenix.controls.*?> <?import com.jfoenix.controls.*?>
<GridPane fx:id="mainGrid" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml/1" <GridPane fx:id="mainGrid" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="main.CreateEventController"> fx:controller="events.CreateEventController">
<columnConstraints> <columnConstraints>
<ColumnConstraints/> <ColumnConstraints/>

View File

@ -8,7 +8,7 @@
<?import com.jfoenix.controls.*?> <?import com.jfoenix.controls.*?>
<GridPane fx:id="mainGrid" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml/1" <GridPane fx:id="mainGrid" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="main.EditEventController"> fx:controller="events.EditEventController">
<columnConstraints> <columnConstraints>
<ColumnConstraints/> <ColumnConstraints/>