summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephan Schwaer2015-10-06 17:46:54 +0200
committerStephan Schwaer2015-10-06 17:46:54 +0200
commitae95943aeac83135c7d1a8e8c5d726aef9a20a65 (patch)
treee45dee7a8443d19784f396b4e5ea5b8c52a10801
parent[client] Allow saving of lecture changes if date period is invalid but dates ... (diff)
downloadtutor-module-ae95943aeac83135c7d1a8e8c5d726aef9a20a65.tar.gz
tutor-module-ae95943aeac83135c7d1a8e8c5d726aef9a20a65.tar.xz
tutor-module-ae95943aeac83135c7d1a8e8c5d726aef9a20a65.zip
[client] Calculate and show the days between the selected dates in lecture creation wizard.
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/DateTimeHelper.java21
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/LectureCreationPageLayout.java6
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/LectureCreationPage.java24
3 files changed, 48 insertions, 3 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/DateTimeHelper.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/DateTimeHelper.java
index e60ce55f..06692a7c 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/DateTimeHelper.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/DateTimeHelper.java
@@ -5,13 +5,17 @@ import java.util.Date;
import javax.swing.JSpinner;
+import org.apache.log4j.Logger;
import org.jdatepicker.impl.JDatePickerImpl;
public class DateTimeHelper {
private static final Calendar calendar = Calendar.getInstance();
+ private final static Logger LOGGER = Logger.getLogger(DateTimeHelper.class);
+
/**
- * Returns the Date composed of the given datePicker's date and the given timeSpinner's time
+ * Returns the Date composed of the given datePicker's date and the given
+ * timeSpinner's time
*
* @param datePicker to extract the date from
* @param timeSpinner to extract the time from
@@ -32,9 +36,24 @@ public class DateTimeHelper {
Date date = calendar.getTime();
return date;
}
+
public static Date addDaysTo(Date start, int days) {
calendar.setTime(start);
calendar.add(Calendar.DAY_OF_MONTH, days);
return calendar.getTime();
}
+
+ /**
+ * Calculate the number of days between dates
+ *
+ * @param start start date to use
+ * @param end end date
+ * @return Rounded number of days
+ */
+ public static int calculatePeriodInDays(Date start, Date end) {
+ if (end.before(start))
+ return 0;
+ return Math.round((end.getTime() - start.getTime()) / 86400000f);
+ }
+
}
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/LectureCreationPageLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/LectureCreationPageLayout.java
index 6bc33b84..aa21a214 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/LectureCreationPageLayout.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/LectureCreationPageLayout.java
@@ -30,6 +30,7 @@ public abstract class LectureCreationPageLayout extends WizardPage {
protected final QDatePickerImpl endDate;
protected final JSpinner startTime;
protected final JSpinner endTime;
+ protected final QLabel lblCalcPeriod;
private static final Properties pickerStrings = new Properties();
@@ -84,6 +85,11 @@ public abstract class LectureCreationPageLayout extends WizardPage {
grid.add(endTime);
grid.nextRow();
+ grid.add(new QLabel("Dauer der Veranstaltung: "));
+ lblCalcPeriod = new QLabel();
+ grid.add(lblCalcPeriod, 2);
+ grid.nextRow();
+
grid.finish(true);
}
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/LectureCreationPage.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/LectureCreationPage.java
index b341f95f..cd229635 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/LectureCreationPage.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/LectureCreationPage.java
@@ -41,10 +41,12 @@ public class LectureCreationPage extends LectureCreationPageLayout {
public void removeUpdate(DocumentEvent e) {
changedUpdate(e);
}
+
@Override
public void insertUpdate(DocumentEvent e) {
changedUpdate(e);
}
+
@Override
public void changedUpdate(DocumentEvent e) {
reactToUserInput();
@@ -72,6 +74,7 @@ public class LectureCreationPage extends LectureCreationPageLayout {
endTime.addChangeListener(changeListener);
startDate.addActionListener(actionListener);
endDate.addActionListener(actionListener);
+ calculateDatePeriod();
}
@Override
@@ -86,10 +89,26 @@ public class LectureCreationPage extends LectureCreationPageLayout {
*/
private boolean reactToUserInput() {
boolean b = isPageValid();
+ calculateDatePeriod();
setPageComplete(b);
return b;
}
+ /**
+ * Calculate the days between the selected dates and update the corresponding label.
+ */
+ private void calculateDatePeriod() {
+ Date start = DateTimeHelper.getDateFrom(startDate, startTime);
+ Date end = DateTimeHelper.getDateFrom(endDate, endTime);
+ if (end.before(start)) {
+ lblCalcPeriod.setText("Endzeitpunkt ist vor Startzeitpunkt!");
+ } else {
+ int numberOfDays = DateTimeHelper.calculatePeriodInDays(start, end);
+ String dayString = numberOfDays == 1 ? " Tag" : " Tage";
+ lblCalcPeriod.setText(numberOfDays + dayString);
+ }
+ }
+
private boolean isPageValid() {
if (lectureNameTextField.getText().isEmpty()) {
setWarningMessage("Geben Sie einen Veranstaltungsnamen ein.");
@@ -108,7 +127,7 @@ public class LectureCreationPage extends LectureCreationPageLayout {
final Date end = DateTimeHelper.getDateFrom(endDate, endTime);
if (start.after(end)) {
- setWarningMessage("Startzeit is nach Endzeit!");
+ setWarningMessage("Startzeit ist nach Endzeit!");
return false;
} else if (now.after(end)) {
setWarningMessage("Endzeit liegt in die Vergangenheit!");
@@ -126,7 +145,8 @@ public class LectureCreationPage extends LectureCreationPageLayout {
}
}
String nextText;
- nextText = state.image == null ? ", um eine Virtuelle Maschine auszuwählen" : " für Berechtigungen oder 'Fertigstellen'.";
+ nextText = state.image == null ? ", um eine Virtuelle Maschine auszuwählen"
+ : " für Berechtigungen oder 'Fertigstellen'.";
setDescription("Klicken Sie auf 'Weiter' " + nextText);
return true;
}