10 Commits

10 changed files with 162 additions and 56 deletions

View File

@@ -1,6 +1,6 @@
package main; package main;
import com.jfoenix.controls.JFXTimePicker; import com.jfoenix.controls.*;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.Node; import javafx.scene.Node;
@@ -21,15 +21,15 @@ public class CreateEventController {
@FXML @FXML
public GridPane mainGrid; public GridPane mainGrid;
@FXML @FXML
public DatePicker datePickerDate; public JFXDatePicker datePickerDate;
@FXML @FXML
public TextField textName; public JFXTextField textName;
@FXML @FXML
public ComboBox<String> ComboBoxPriotity; public JFXComboBox<String> ComboBoxPriotity;
@FXML @FXML
public CheckBox checkBoxIsFullDay; public JFXToggleButton toggleBtnIsFullDay;
@FXML @FXML
public CheckBox checkBoxIsPrivate; public JFXToggleButton toggleBtnIsPrivate;
@FXML @FXML
public Label labelError; public Label labelError;
@FXML @FXML
@@ -45,20 +45,11 @@ public class CreateEventController {
public void initialize() { public void initialize() {
StringConverter<LocalTime> defaultConverter = new LocalTimeStringConverter(FormatStyle.SHORT, Locale.GERMANY); StringConverter<LocalTime> defaultConverter = new LocalTimeStringConverter(FormatStyle.SHORT, Locale.GERMANY);
timeStart.set24HourView(true);
timeStart.setConverter(defaultConverter);
JFXTimePicker timePickerStart = new JFXTimePicker(); timeEnd.set24HourView(true);
timeStart = timePickerStart; timeEnd.setConverter(defaultConverter);
timePickerStart.set24HourView(true);
timePickerStart.setConverter(defaultConverter);
timePickerStart.getStyleClass().add("timePicker");
mainGrid.add(timePickerStart, 1 , 3);
JFXTimePicker timePickerEnd = new JFXTimePicker();
timeEnd = timePickerEnd;
timePickerEnd.set24HourView(true);
timePickerEnd.setConverter(defaultConverter);
timePickerEnd.getStyleClass().add("timePicker");
mainGrid.add(timePickerEnd, 1 , 4);
} }
@@ -72,8 +63,8 @@ public class CreateEventController {
Event event = new Event( Event event = new Event(
textName.getText(), textName.getText(),
ComboBoxPriotity.getSelectionModel().getSelectedIndex(), ComboBoxPriotity.getSelectionModel().getSelectedIndex(),
checkBoxIsFullDay.isSelected(), toggleBtnIsFullDay.isSelected(),
checkBoxIsPrivate.isSelected(), toggleBtnIsPrivate.isSelected(),
timeStart.getValue().toString(), timeStart.getValue().toString(),
timeEnd.getValue().toString(), timeEnd.getValue().toString(),
datePickerDate.getValue().atStartOfDay(), datePickerDate.getValue().atStartOfDay(),

View File

@@ -1,15 +1,24 @@
package main; package main;
import com.jfoenix.svg.SVGGlyph;
import com.jfoenix.svg.SVGGlyphLoader;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.geometry.Bounds;
import javafx.geometry.Pos; import javafx.geometry.Pos;
import javafx.scene.Group;
import javafx.scene.Scene; import javafx.scene.Scene;
import customUI.Button; import customUI.Button;
import customUI.Label; import customUI.Label;
import javafx.scene.control.ContentDisplay;
import javafx.scene.control.ScrollPane; import javafx.scene.control.ScrollPane;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.GridPane; import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox; import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.SVGPath;
import javafx.stage.Modality; import javafx.stage.Modality;
import javafx.stage.Stage; import javafx.stage.Stage;
import res.DataController; import res.DataController;
@@ -139,15 +148,43 @@ public class MainController {
HBox btnHBox = new HBox(); HBox btnHBox = new HBox();
btnHBox.setAlignment(Pos.BOTTOM_RIGHT); btnHBox.setAlignment(Pos.BOTTOM_RIGHT);
Button deleteBtn = new Button(); Button deleteBtn = new Button();
deleteBtn.setTextValue(" X "); Group svgDel = new Group(
createPath("M0 0h24v24H0z", "transparent", "transparent"),
createPath("M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z",
"white", "lightgray")
);
Bounds boundsDel = svgDel.getBoundsInParent();
double scaleDel = Math.min(20/boundsDel.getWidth(), 20 / boundsDel.getHeight());
svgDel.setScaleX(scaleDel);
svgDel.setScaleY(scaleDel);
deleteBtn.setGraphic(svgDel);
deleteBtn.setMaxSize(24, 24);
deleteBtn.setMinSize(24, 24);
deleteBtn.setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
deleteBtn.getStyleClass().add("deleteEventBtn");
deleteBtn.setOnAction(e -> { deleteBtn.setOnAction(e -> {
DataController dataController = new DataController(); DataController dataController = new DataController();
dataController.deleteEvent(event.getId()); dataController.deleteEvent(event.getId());
updateEvents(); updateEvents();
}); });
Button editBtn = new Button(); Button editBtn = new Button();
editBtn.setTextValue("edit"); Group svgEdit = new Group(
createPath("M0 0h24v24H0z", "transparent", "transparent"),
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", "lightgray")
);
Bounds boundsEdit = svgEdit.getBoundsInParent();
double scaleEdit = Math.min(20/boundsEdit.getWidth(), 20 / boundsEdit.getHeight());
svgEdit.setScaleX(scaleEdit);
svgEdit.setScaleY(scaleEdit);
editBtn.setGraphic(svgEdit);
editBtn.setMaxSize(24, 24);
editBtn.setMinSize(24, 24);
editBtn.setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
editBtn.getStyleClass().add("editEventBtn");
editBtn.setOnAction(event1 -> { editBtn.setOnAction(event1 -> {
try { try {
FXMLLoader fxmlLoader = new FXMLLoader( FXMLLoader fxmlLoader = new FXMLLoader(
@@ -226,4 +263,12 @@ public class MainController {
LabelMonth.setText(dateFormatter.format(weekStartDateTime)); LabelMonth.setText(dateFormatter.format(weekStartDateTime));
} }
private static SVGPath createPath(String d, String fill, String hoverFill) {
SVGPath path = new SVGPath();
path.getStyleClass().add("svg");
path.setContent(d);
path.setStyle("-fill:" + fill + ";-hover-fill:"+hoverFill+';');
return path;
}
} }

View File

@@ -1,18 +1,18 @@
package users; package users;
import com.jfoenix.controls.*;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.Node; import javafx.scene.Node;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.stage.Stage; import javafx.stage.Stage;
import res.DataController; import res.DataController;
public class LoginController { public class LoginController {
@FXML @FXML
public TextField userField; public JFXTextField userField;
@FXML @FXML
public TextField passField; public JFXPasswordField passField;
@FXML @FXML
public Label userErrLabel; public Label userErrLabel;
@FXML @FXML

View File

@@ -28,10 +28,16 @@ Label{
.inputField{ .inputField{
-fx-padding: 10px; -fx-padding: 10px;
-fx-background-color: white;
} }
.mainButton{ .mainButton{
-fx-font-weight: bold; -fx-font-weight: bold;
-fx-background-color: white;
}
JFXButton{
-fx-background-color: white;
} }
#labelError{ #labelError{
@@ -45,7 +51,14 @@ Label{
-fx-font-size: 16px; -fx-font-size: 16px;
} }
.inputDate{
-fx-background-color: white;
}
.comboBox{
-fx-background-color: white;
}
.timePicker{ .timePicker{
-fx-background-color: white; -fx-background-color: white;
-fx-max-width: 200px;
} }

View File

@@ -5,6 +5,8 @@
<?import javafx.collections.FXCollections?> <?import javafx.collections.FXCollections?>
<?import java.lang.String?> <?import java.lang.String?>
<?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="main.CreateEventController">
@@ -36,10 +38,12 @@
<Label styleClass="inputLabel" GridPane.rowIndex="6">Ganztägig:</Label> <Label styleClass="inputLabel" GridPane.rowIndex="6">Ganztägig:</Label>
<Label styleClass="inputLabel" GridPane.rowIndex="7">Privat:</Label> <Label styleClass="inputLabel" GridPane.rowIndex="7">Privat:</Label>
<TextField fx:id="textName" GridPane.columnIndex="1" GridPane.rowIndex="1" maxWidth="400" minWidth="400"/> <JFXTextField styleClass="inputField" fx:id="textName" GridPane.columnIndex="1" GridPane.rowIndex="1" maxWidth="400" minWidth="400"/>
<DatePicker fx:id="datePickerDate" GridPane.columnIndex="1" GridPane.rowIndex="2" maxWidth="200" minWidth="200"/> <JFXDatePicker styleClass="inputDate" fx:id="datePickerDate" GridPane.columnIndex="1" GridPane.rowIndex="2" maxWidth="200" minWidth="200"/>
<JFXTimePicker styleClass="timePicker" fx:id="timeStart" GridPane.columnIndex="1" GridPane.rowIndex="3" maxWidth="200" minWidth="200"/>
<JFXTimePicker styleClass="timePicker" fx:id="timeEnd" GridPane.columnIndex="1" GridPane.rowIndex="4" maxWidth="200" minWidth="200"/>
<ComboBox fx:id="ComboBoxPriotity" GridPane.columnIndex="1" GridPane.rowIndex="5" maxWidth="200" minWidth="200"> <JFXComboBox fx:id="ComboBoxPriotity" styleClass="comboBox" GridPane.columnIndex="1" GridPane.rowIndex="5" maxWidth="200" minWidth="200">
<items> <items>
<FXCollections fx:factory="observableArrayList"> <FXCollections fx:factory="observableArrayList">
<String fx:value="gering"/> <String fx:value="gering"/>
@@ -47,14 +51,14 @@
<String fx:value="hoch"/> <String fx:value="hoch"/>
</FXCollections> </FXCollections>
</items> </items>
</ComboBox> </JFXComboBox>
<CheckBox fx:id="checkBoxIsFullDay" GridPane.columnIndex="1" GridPane.rowIndex="6"/> <JFXToggleButton styleClass="checkbox" fx:id="toggleBtnIsFullDay" GridPane.columnIndex="1" GridPane.rowIndex="6"/>
<CheckBox fx:id="checkBoxIsPrivate" GridPane.columnIndex="1" GridPane.rowIndex="7"/> <JFXToggleButton styleClass="checkbox" fx:id="toggleBtnIsPrivate" GridPane.columnIndex="1" GridPane.rowIndex="7"/>
<Label fx:id="labelError" GridPane.columnIndex="1" GridPane.rowIndex="8"/> <Label fx:id="labelError" GridPane.columnIndex="1" GridPane.rowIndex="8"/>
<HBox GridPane.columnIndex="1" GridPane.rowIndex="9" GridPane.columnSpan="2" alignment="CENTER_RIGHT"> <HBox GridPane.columnIndex="1" GridPane.rowIndex="9" GridPane.columnSpan="2" alignment="CENTER_RIGHT">
<Button onAction="#abortBtnClick" maxWidth="150" minWidth="150">Abbrechen</Button> <JFXButton onAction="#abortBtnClick" maxWidth="150" minWidth="150">Abbrechen</JFXButton>
<Button styleClass="mainButton" onAction="#createBtnClick" maxWidth="150" minWidth="150">Anlegen</Button> <JFXButton styleClass="mainButton" onAction="#createBtnClick" maxWidth="150" minWidth="150">Anlegen</JFXButton>
</HBox> </HBox>
</GridPane> </GridPane>

View File

@@ -2,8 +2,10 @@
<?import javafx.scene.control.*?> <?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?> <?import javafx.scene.layout.*?>
<?import javafx.collections.FXCollections?> <?import javafx.collections.FXCollections?>
<?import java.lang.String?> <?import java.lang.String?>
<?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="main.CreateEventController">
@@ -36,10 +38,12 @@
<Label styleClass="inputLabel" GridPane.rowIndex="6">Ganztägig:</Label> <Label styleClass="inputLabel" GridPane.rowIndex="6">Ganztägig:</Label>
<Label styleClass="inputLabel" GridPane.rowIndex="7">Privat:</Label> <Label styleClass="inputLabel" GridPane.rowIndex="7">Privat:</Label>
<TextField fx:id="textName" GridPane.columnIndex="1" GridPane.rowIndex="1" maxWidth="400" minWidth="400"/> <JFXTextField styleClass="inputField" fx:id="textName" GridPane.columnIndex="1" GridPane.rowIndex="1" maxWidth="400" minWidth="400"/>
<DatePicker fx:id="datePickerDate" GridPane.columnIndex="1" GridPane.rowIndex="2" maxWidth="200" minWidth="200"/> <JFXDatePicker styleClass="inputDate" fx:id="datePickerDate" GridPane.columnIndex="1" GridPane.rowIndex="2" maxWidth="200" minWidth="200"/>
<JFXTimePicker styleClass="timePicker" fx:id="timeStart" GridPane.columnIndex="1" GridPane.rowIndex="3" maxWidth="200" minWidth="200"/>
<JFXTimePicker styleClass="timePicker" fx:id="timeEnd" GridPane.columnIndex="1" GridPane.rowIndex="4" maxWidth="200" minWidth="200"/>
<ComboBox fx:id="ComboBoxPriotity" GridPane.columnIndex="1" GridPane.rowIndex="5" maxWidth="200" minWidth="200"> <JFXComboBox fx:id="ComboBoxPriotity" styleClass="comboBox" GridPane.columnIndex="1" GridPane.rowIndex="5" maxWidth="200" minWidth="200">
<items> <items>
<FXCollections fx:factory="observableArrayList"> <FXCollections fx:factory="observableArrayList">
<String fx:value="gering"/> <String fx:value="gering"/>
@@ -47,14 +51,14 @@
<String fx:value="hoch"/> <String fx:value="hoch"/>
</FXCollections> </FXCollections>
</items> </items>
</ComboBox> </JFXComboBox>
<CheckBox fx:id="checkBoxIsFullDay" GridPane.columnIndex="1" GridPane.rowIndex="6"/> <JFXToggleButton styleClass="checkbox" fx:id="toggleBtnIsFullDay" GridPane.columnIndex="1" GridPane.rowIndex="6"/>
<CheckBox fx:id="checkBoxIsPrivate" GridPane.columnIndex="1" GridPane.rowIndex="7"/> <JFXToggleButton styleClass="checkbox" fx:id="toggleBtnIsPrivate" GridPane.columnIndex="1" GridPane.rowIndex="7"/>
<Label fx:id="labelError" GridPane.columnIndex="1" GridPane.rowIndex="8"/> <Label fx:id="labelError" GridPane.columnIndex="1" GridPane.rowIndex="8"/>
<HBox GridPane.columnIndex="1" GridPane.rowIndex="9" GridPane.columnSpan="2" alignment="CENTER_RIGHT"> <HBox GridPane.columnIndex="1" GridPane.rowIndex="9" GridPane.columnSpan="2" alignment="CENTER_RIGHT">
<Button onAction="#abortBtnClick" maxWidth="150" minWidth="150">Abbrechen</Button> <JFXButton onAction="#abortBtnClick" maxWidth="150" minWidth="150">Abbrechen</JFXButton>
<Button styleClass="mainButton" onAction="#createBtnClick" maxWidth="150" minWidth="150">Speichern</Button> <JFXButton styleClass="mainButton" onAction="#createBtnClick" maxWidth="150" minWidth="150">Speichern</JFXButton>
</HBox> </HBox>
</GridPane> </GridPane>

View File

@@ -72,3 +72,33 @@ Label{
-fx-max-height: 40px; -fx-max-height: 40px;
} }
.navBtn{
-fx-background-color: white;
}
.editEventBtn{
-fx-background-color: transparent;
-fx-border-color: transparent;
}
.editEventBtn .svg {
-fx-fill: -fill;
}
.editEventBtn:hover .svg {
-fx-fill: -hover-fill;
}
.deleteEventBtn{
-fx-background-color: transparent;
-fx-border-color: transparent;
}
.deleteEventBtn .svg {
-fx-fill: -fill;
}
.deleteEventBtn:hover .svg {
-fx-fill: -hover-fill;
}

View File

@@ -4,6 +4,7 @@
<?import javafx.scene.control.*?> <?import javafx.scene.control.*?>
<?import javafx.scene.image.*?> <?import javafx.scene.image.*?>
<?import javafx.scene.layout.*?> <?import javafx.scene.layout.*?>
<?import com.jfoenix.controls.*?>
<GridPane style="-fx-background-color: #424242;" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml/1" <GridPane style="-fx-background-color: #424242;" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="main.MainController"> fx:controller="main.MainController">
@@ -19,15 +20,15 @@
<ImageView fitHeight="50.0" fitWidth="50.0" pickOnBounds="true" preserveRatio="true"> <ImageView fitHeight="50.0" fitWidth="50.0" pickOnBounds="true" preserveRatio="true">
</ImageView> </ImageView>
<Button onAction="#onAddBtnClick" styleClass="main-btn"> <JFXButton onAction="#onAddBtnClick" styleClass="main-btn">
ADD ADD
</Button> </JFXButton>
<Button onAction="#onAddBtnClick" styleClass="main-btn"> <JFXButton onAction="#onAddBtnClick" styleClass="main-btn">
ADD ADD
</Button> </JFXButton>
<Button onAction="#onAddBtnClick" styleClass="main-btn"> <JFXButton onAction="#onAddBtnClick" styleClass="main-btn">
ADD ADD
</Button> </JFXButton>
</VBox> </VBox>
<GridPane prefHeight="200.0" prefWidth="222.0" GridPane.columnIndex="1" GridPane.rowIndex="0"> <GridPane prefHeight="200.0" prefWidth="222.0" GridPane.columnIndex="1" GridPane.rowIndex="0">
<columnConstraints> <columnConstraints>
@@ -48,9 +49,9 @@
<Insets left="5"/> <Insets left="5"/>
</padding> </padding>
</Label> </Label>
<Button onAction="#onBackClick" GridPane.columnIndex="1" maxHeight="1.7976931348623157E308">zurück</Button> <JFXButton styleClass="navBtn" onAction="#onBackClick" GridPane.columnIndex="1" maxHeight="1.7976931348623157E308">zurück</JFXButton>
<Button onAction="#onTodayClick" GridPane.columnIndex="2" maxHeight="1.7976931348623157E308">heute</Button> <JFXButton styleClass="navBtn" onAction="#onTodayClick" GridPane.columnIndex="2" maxHeight="1.7976931348623157E308">heute</JFXButton>
<Button onAction="#onNextClick" GridPane.columnIndex="3" maxHeight="1.7976931348623157E308">weiter</Button> <JFXButton styleClass="navBtn" onAction="#onNextClick" GridPane.columnIndex="3" maxHeight="1.7976931348623157E308">weiter</JFXButton>
<GridPane fx:id="calendarGrid" gridLinesVisible="true" styleClass="gridCalendar" GridPane.columnSpan="4" <GridPane fx:id="calendarGrid" gridLinesVisible="true" styleClass="gridCalendar" GridPane.columnSpan="4"
GridPane.columnIndex="0" GridPane.rowIndex="1"> GridPane.columnIndex="0" GridPane.rowIndex="1">

View File

@@ -34,4 +34,20 @@ Label{
-fx-max-height: 400px; -fx-max-height: 400px;
-fx-wrap-text: true; -fx-wrap-text: true;
-fx-font-size: 16px; -fx-font-size: 16px;
}
.userField{
-fx-background-color: white;
}
.passField{
-fx-background-color: white;
}
.quitBtn{
-fx-background-color: white;
}
.loginBtn{
-fx-background-color: white;
} }

View File

@@ -2,6 +2,8 @@
<?import javafx.scene.control.*?> <?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?> <?import javafx.scene.layout.*?>
<?import com.jfoenix.controls.*?>
<GridPane xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml" fx:controller="users.LoginController"> <GridPane xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml" fx:controller="users.LoginController">
<columnConstraints> <columnConstraints>
@@ -19,14 +21,14 @@
<Label GridPane.columnIndex="1">Anmelden</Label> <Label GridPane.columnIndex="1">Anmelden</Label>
<Label GridPane.rowIndex="1">Username</Label> <Label GridPane.rowIndex="1">Username</Label>
<TextField GridPane.columnIndex="1" GridPane.rowIndex="1" fx:id="userField"/> <JFXTextField styleClass="userField" GridPane.columnIndex="1" GridPane.rowIndex="1" fx:id="userField"/>
<Label styleClass="errorLbl" GridPane.columnIndex="2" GridPane.rowIndex="1" fx:id="userErrLabel"/> <Label styleClass="errorLbl" GridPane.columnIndex="2" GridPane.rowIndex="1" fx:id="userErrLabel"/>
<Label GridPane.rowIndex="2">Paswort</Label> <Label GridPane.rowIndex="2">Paswort</Label>
<PasswordField GridPane.columnIndex="1" GridPane.rowIndex="2" fx:id="passField"/> <JFXPasswordField styleClass="passField" GridPane.columnIndex="1" GridPane.rowIndex="2" fx:id="passField"/>
<Label styleClass="errorLbl" GridPane.columnIndex="2" GridPane.rowIndex="2" fx:id="passErrLabel"/> <Label styleClass="errorLbl" GridPane.columnIndex="2" GridPane.rowIndex="2" fx:id="passErrLabel"/>
<Button onAction="#abortBtnClick" GridPane.columnIndex="1" GridPane.rowIndex="3">Beenden</Button> <JFXButton styleClass="quitBtn" onAction="#abortBtnClick" GridPane.columnIndex="1" GridPane.rowIndex="3">Beenden</JFXButton>
<Button onAction="#login" GridPane.columnIndex="2" GridPane.rowIndex="3">Anmelden</Button> <JFXButton styleClass="loginBtn" onAction="#login" GridPane.columnIndex="2" GridPane.rowIndex="3">Anmelden</JFXButton>
</GridPane> </GridPane>