diff --git a/client/app/src/main/java/customUI/Tooltip.java b/client/app/src/main/java/customUI/Tooltip.java new file mode 100644 index 0000000..7407500 --- /dev/null +++ b/client/app/src/main/java/customUI/Tooltip.java @@ -0,0 +1,9 @@ +package customUI; + +public class Tooltip extends javafx.scene.control.Tooltip { + + public Tooltip(String tollTipText){ + super(Converter.CONVERT_STR(tollTipText)); + } + +} diff --git a/client/app/src/main/java/helper/SvgBtnCreator.java b/client/app/src/main/java/helper/SvgBtnCreator.java index 5f0e3ff..c9546fe 100644 --- a/client/app/src/main/java/helper/SvgBtnCreator.java +++ b/client/app/src/main/java/helper/SvgBtnCreator.java @@ -4,6 +4,7 @@ import javafx.geometry.Bounds; import javafx.scene.Group; import customUI.Button; import javafx.scene.control.ContentDisplay; +import customUI.Tooltip; import javafx.scene.shape.SVGPath; public class SvgBtnCreator { @@ -23,6 +24,39 @@ public class SvgBtnCreator { return btn; } + public static Button createBtn(Group group, int svgSize, String styleClass) { + Button btn = new Button(); + + Bounds boundsDel = group.getBoundsInParent(); + double scaleDel = Math.min(svgSize / boundsDel.getWidth(), svgSize / boundsDel.getHeight()); + group.setScaleX(scaleDel); + group.setScaleY(scaleDel); + btn.setGraphic(group); + btn.setMaxSize(svgSize, svgSize); + btn.setMinSize(svgSize, svgSize); + btn.getStyleClass().add(styleClass); + + return btn; + } + + public static Button createBtn(Group group, int svgSize, String styleClass, String toolTip) { + Button btn = new Button(); + + Bounds boundsDel = group.getBoundsInParent(); + double scaleDel = Math.min(svgSize / boundsDel.getWidth(), svgSize / boundsDel.getHeight()); + group.setScaleX(scaleDel); + group.setScaleY(scaleDel); + btn.setGraphic(group); + btn.setMaxSize(svgSize, svgSize); + btn.setMinSize(svgSize, svgSize); + btn.setContentDisplay(ContentDisplay.GRAPHIC_ONLY); + btn.getStyleClass().add(styleClass); + Tooltip tooltip = new Tooltip(toolTip); + btn.setTooltip(tooltip); + + return btn; + } + public static SVGPath createPath(String d, String fill, String hoverFill) { SVGPath path = new SVGPath(); path.getStyleClass().add("svg"); diff --git a/client/app/src/main/java/main/MainController.java b/client/app/src/main/java/main/MainController.java index 292598e..098fd12 100644 --- a/client/app/src/main/java/main/MainController.java +++ b/client/app/src/main/java/main/MainController.java @@ -9,7 +9,6 @@ import javafx.geometry.Pos; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.ScrollPane; -import javafx.scene.control.Tooltip; import javafx.scene.layout.GridPane; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; @@ -56,71 +55,8 @@ public class MainController { createWeek(); setDates(); updateEvents(); - + createBtns(); leftNav.setSpacing(40); - - Group svgAdd = new Group( - SvgBtnCreator.createPath("M0 0h24v24H0z", "transparent", "transparent"), - SvgBtnCreator.createPath("M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z", - "white", "gray") - ); - Button addBtn = SvgBtnCreator.createBtn(svgAdd, 40); - addBtn.setOnAction(e -> onAddBtnClick()); - addBtn.getStyleClass().add("main-btn"); - leftNav.getChildren().add(addBtn); - - Group svgSettings = new Group( - SvgBtnCreator.createPath("M0 0h24v24H0V0z", "transparent", "transparent"), - SvgBtnCreator.createPath("M19.14,12.94c0.04-0.3,0.06-0.61,0.06-0.94c0-0.32-0.02-0.64-0.07-0.94l2.03-1.58c0.18-0.14,0.23-0.41,0.12-0.61 l-1.92-3.32c-0.12-0.22-0.37-0.29-0.59-0.22l-2.39,0.96c-0.5-0.38-1.03-0.7-1.62-0.94L14.4,2.81c-0.04-0.24-0.24-0.41-0.48-0.41 h-3.84c-0.24,0-0.43,0.17-0.47,0.41L9.25,5.35C8.66,5.59,8.12,5.92,7.63,6.29L5.24,5.33c-0.22-0.08-0.47,0-0.59,0.22L2.74,8.87 C2.62,9.08,2.66,9.34,2.86,9.48l2.03,1.58C4.84,11.36,4.8,11.69,4.8,12s0.02,0.64,0.07,0.94l-2.03,1.58 c-0.18,0.14-0.23,0.41-0.12,0.61l1.92,3.32c0.12,0.22,0.37,0.29,0.59,0.22l2.39-0.96c0.5,0.38,1.03,0.7,1.62,0.94l0.36,2.54 c0.05,0.24,0.24,0.41,0.48,0.41h3.84c0.24,0,0.44-0.17,0.47-0.41l0.36-2.54c0.59-0.24,1.13-0.56,1.62-0.94l2.39,0.96 c0.22,0.08,0.47,0,0.59-0.22l1.92-3.32c0.12-0.22,0.07-0.47-0.12-0.61L19.14,12.94z M12,15.6c-1.98,0-3.6-1.62-3.6-3.6 s1.62-3.6,3.6-3.6s3.6,1.62,3.6,3.6S13.98,15.6,12,15.6z", - "white", "gray") - ); - Button settingsBtn = SvgBtnCreator.createBtn(svgSettings, 40); - settingsBtn.setOnAction(e -> onSettingBtnClick()); - settingsBtn.getStyleClass().add("main-btn"); - leftNav.getChildren().add(settingsBtn); - - Group svgLogout = new Group( - SvgBtnCreator.createPath("M0 0h24v24H0z", "transparent", "transparent"), - SvgBtnCreator.createPath("M17 7l-1.41 1.41L18.17 11H8v2h10.17l-2.58 2.58L17 17l5-5zM4 5h8V3H4c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h8v-2H4V5z", - "white", "gray") - ); - Button logoutBtn = SvgBtnCreator.createBtn(svgLogout, 40); - logoutBtn.setOnAction(e -> onLogoutBtnClick()); - logoutBtn.getStyleClass().add("main-btn"); - leftNav.getChildren().add(logoutBtn); - - Group svgBack = new Group( - SvgBtnCreator.createPath("M0 0h24v24H0z", "transparent", "transparent"), - SvgBtnCreator.createPath("M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z", - "white", "lightgray") - ); - Button backBtn = SvgBtnCreator.createBtn(svgBack, 40); - backBtn.setOnAction(e -> onBackClick()); - backBtn.getStyleClass().add("navBtn"); - GridPane.setColumnIndex(backBtn, 1); - buttonBox.getChildren().add(backBtn); - - Group svgToday = new Group( - SvgBtnCreator.createPath("M0 0h24v24H0z", "transparent", "transparent"), - SvgBtnCreator.createPath("M20 3h-1V1h-2v2H7V1H5v2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 18H4V8h16v13z", - "white", "lightgray") - ); - Button todayBtn = SvgBtnCreator.createBtn(svgToday, 40); - todayBtn.setOnAction(e -> onTodayClick()); - todayBtn.getStyleClass().add("navBtn"); - GridPane.setColumnIndex(todayBtn, 2); - buttonBox.getChildren().add(todayBtn); - - Group svgNext = new Group( - SvgBtnCreator.createPath("M0 0h24v24H0z", "transparent", "transparent"), - SvgBtnCreator.createPath("M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z", - "white", "lightgray") - ); - Button nextBtn = SvgBtnCreator.createBtn(svgNext, 40); - nextBtn.setOnAction(e -> onNextClick()); - nextBtn.getStyleClass().add("navBtn"); - GridPane.setColumnIndex(nextBtn, 3); - buttonBox.getChildren().add(nextBtn); } private void updateEvents() { @@ -225,7 +161,7 @@ public class MainController { 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); + Button deleteBtn = SvgBtnCreator.createBtn(svgDel, 24, "", "Löschen des Termins"); deleteBtn.getStyleClass().add("deleteEventBtn"); deleteBtn.setOnAction(e -> { @@ -239,7 +175,7 @@ public class MainController { 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); + Button editBtn = SvgBtnCreator.createBtn(svgEdit, 24, "", "Bearbeiten des Termins"); editBtn.getStyleClass().add("editEventBtn"); editBtn.setOnAction(event1 -> { try { @@ -320,5 +256,70 @@ public class MainController { } + private void createBtns(){ + Group svgAdd = new Group( + SvgBtnCreator.createPath("M0 0h24v24H0z", "transparent", "transparent"), + SvgBtnCreator.createPath("M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z", + "white", "gray") + ); + Button addBtn = SvgBtnCreator.createBtn(svgAdd, 40, "main-btn", "Erstellt einen neuen Termin"); + addBtn.setOnAction(e -> onAddBtnClick()); + addBtn.getStyleClass().add("main-btn"); + leftNav.getChildren().add(addBtn); + + Group svgSettings = new Group( + SvgBtnCreator.createPath("M0 0h24v24H0V0z", "transparent", "transparent"), + SvgBtnCreator.createPath("M19.14,12.94c0.04-0.3,0.06-0.61,0.06-0.94c0-0.32-0.02-0.64-0.07-0.94l2.03-1.58c0.18-0.14,0.23-0.41,0.12-0.61 l-1.92-3.32c-0.12-0.22-0.37-0.29-0.59-0.22l-2.39,0.96c-0.5-0.38-1.03-0.7-1.62-0.94L14.4,2.81c-0.04-0.24-0.24-0.41-0.48-0.41 h-3.84c-0.24,0-0.43,0.17-0.47,0.41L9.25,5.35C8.66,5.59,8.12,5.92,7.63,6.29L5.24,5.33c-0.22-0.08-0.47,0-0.59,0.22L2.74,8.87 C2.62,9.08,2.66,9.34,2.86,9.48l2.03,1.58C4.84,11.36,4.8,11.69,4.8,12s0.02,0.64,0.07,0.94l-2.03,1.58 c-0.18,0.14-0.23,0.41-0.12,0.61l1.92,3.32c0.12,0.22,0.37,0.29,0.59,0.22l2.39-0.96c0.5,0.38,1.03,0.7,1.62,0.94l0.36,2.54 c0.05,0.24,0.24,0.41,0.48,0.41h3.84c0.24,0,0.44-0.17,0.47-0.41l0.36-2.54c0.59-0.24,1.13-0.56,1.62-0.94l2.39,0.96 c0.22,0.08,0.47,0,0.59-0.22l1.92-3.32c0.12-0.22,0.07-0.47-0.12-0.61L19.14,12.94z M12,15.6c-1.98,0-3.6-1.62-3.6-3.6 s1.62-3.6,3.6-3.6s3.6,1.62,3.6,3.6S13.98,15.6,12,15.6z", + "white", "gray") + ); + Button settingsBtn = SvgBtnCreator.createBtn(svgSettings, 40, "main-btn", "Öffnet die Einstellungen"); + settingsBtn.setOnAction(e -> onSettingBtnClick()); + settingsBtn.getStyleClass().add("main-btn"); + leftNav.getChildren().add(settingsBtn); + + Group svgLogout = new Group( + SvgBtnCreator.createPath("M0 0h24v24H0z", "transparent", "transparent"), + SvgBtnCreator.createPath("M17 7l-1.41 1.41L18.17 11H8v2h10.17l-2.58 2.58L17 17l5-5zM4 5h8V3H4c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h8v-2H4V5z", + "white", "gray") + ); + Button logoutBtn = SvgBtnCreator.createBtn(svgLogout, 40, "main-btn", "Abmelden"); + logoutBtn.setOnAction(e -> onLogoutBtnClick()); + logoutBtn.getStyleClass().add("main-btn"); + leftNav.getChildren().add(logoutBtn); + + Group svgBack = new Group( + SvgBtnCreator.createPath("M0 0h24v24H0z", "transparent", "transparent"), + SvgBtnCreator.createPath("M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z", + "white", "lightgray") + ); + Button backBtn = SvgBtnCreator.createBtn(svgBack, 40, "navBtn", "Zeigt die vorherige Woche"); + backBtn.setOnAction(e -> onBackClick()); + backBtn.getStyleClass().add("navBtn"); + GridPane.setColumnIndex(backBtn, 1); + buttonBox.getChildren().add(backBtn); + + Group svgToday = new Group( + SvgBtnCreator.createPath("M0 0h24v24H0z", "transparent", "transparent"), + SvgBtnCreator.createPath("M20 3h-1V1h-2v2H7V1H5v2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 18H4V8h16v13z", + "white", "lightgray") + ); + Button todayBtn = SvgBtnCreator.createBtn(svgToday, 40, "navBtn", "Zeigt die aktuelle Woche"); + todayBtn.setOnAction(e -> onTodayClick()); + todayBtn.getStyleClass().add("navBtn"); + GridPane.setColumnIndex(todayBtn, 2); + buttonBox.getChildren().add(todayBtn); + + Group svgNext = new Group( + SvgBtnCreator.createPath("M0 0h24v24H0z", "transparent", "transparent"), + SvgBtnCreator.createPath("M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z", + "white", "lightgray") + ); + Button nextBtn = SvgBtnCreator.createBtn(svgNext, 40, "navBtn", "Zeigt die nächste Woche"); + nextBtn.setOnAction(e -> onNextClick()); + nextBtn.getStyleClass().add("navBtn"); + GridPane.setColumnIndex(nextBtn, 3); + buttonBox.getChildren().add(nextBtn); + } + } \ No newline at end of file