summaryrefslogtreecommitdiffstats
path: root/dozentenmodul
diff options
context:
space:
mode:
authorSimon Rettberg2018-01-29 17:21:31 +0100
committerSimon Rettberg2018-01-29 17:21:31 +0100
commitf15ca29f21911d57bcd05928610cc02797f28577 (patch)
treefbf8b8da429ae905bb5940a362583a0f1ea7dd4d /dozentenmodul
parent[client] Fix endless stream of exceptions in specific Linux setups (diff)
downloadtutor-module-f15ca29f21911d57bcd05928610cc02797f28577.tar.gz
tutor-module-f15ca29f21911d57bcd05928610cc02797f28577.tar.xz
tutor-module-f15ca29f21911d57bcd05928610cc02797f28577.zip
[client] Fix NPE with JDatePicker (by updating it)
Fixes #3292
Diffstat (limited to 'dozentenmodul')
-rw-r--r--dozentenmodul/pom.xml6
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/QDatePickerImpl.java30
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ColorUtil.java14
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/DateTimeHelper.java4
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureDetailsWindowLayout.java16
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/LectureCreationPageLayout.java19
6 files changed, 46 insertions, 43 deletions
diff --git a/dozentenmodul/pom.xml b/dozentenmodul/pom.xml
index e744dd48..db83054e 100644
--- a/dozentenmodul/pom.xml
+++ b/dozentenmodul/pom.xml
@@ -186,9 +186,9 @@
<version>2.9.9</version>
</dependency>
<dependency>
- <groupId>org.jdatepicker</groupId>
- <artifactId>jdatepicker</artifactId>
- <version>1.3.4</version>
+ <groupId>io.github.lzh0379</groupId>
+ <artifactId>jdatepicker</artifactId>
+ <version>2.0.3</version>
</dependency>
<dependency>
<groupId>org.openslx</groupId>
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/QDatePickerImpl.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/QDatePickerImpl.java
index 08f90145..5260f637 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/QDatePickerImpl.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/QDatePickerImpl.java
@@ -1,5 +1,6 @@
package org.openslx.dozmod.gui.control;
+import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.reflect.Field;
@@ -7,16 +8,17 @@ import java.util.HashSet;
import java.util.Set;
import javax.swing.JButton;
-import javax.swing.JFormattedTextField.AbstractFormatter;
import javax.swing.JTextField;
import org.apache.log4j.Logger;
-import org.jdatepicker.impl.JDatePanelImpl;
-import org.jdatepicker.impl.JDatePickerImpl;
+import org.jdatepicker.ComponentColorDefaults;
+import org.jdatepicker.ComponentColorDefaults.Key;
+import org.jdatepicker.JDatePicker;
+import org.openslx.dozmod.gui.helper.ColorUtil;
import org.openslx.dozmod.gui.helper.TextChangeListener;
@SuppressWarnings("serial")
-public class QDatePickerImpl extends JDatePickerImpl {
+public class QDatePickerImpl extends JDatePicker {
private static final Logger LOGGER = Logger.getLogger(QDatePickerImpl.class);
@@ -25,19 +27,31 @@ public class QDatePickerImpl extends JDatePickerImpl {
private final JTextField displayTextField;
private final Set<ActionListener> actionListeners = new HashSet<>();
+
+ static {
+ ComponentColorDefaults def = ComponentColorDefaults.getInstance();
+ Color c1 = def.getColor(Key.FG_MONTH_SELECTOR);
+ Color c2 = def.getColor(Key.BG_MONTH_SELECTOR);
+ if (ColorUtil.getContrast(c1, c2) < 4.5) {
+ def.setColor(Key.FG_MONTH_SELECTOR, Color.WHITE);
+ def.setColor(Key.BG_MONTH_SELECTOR, new Color(0, 0, 128));
+ }
+ }
- public QDatePickerImpl(JDatePanelImpl datePanel, AbstractFormatter formatter) {
- super(datePanel, formatter);
+ public QDatePickerImpl() {
+ super();
+
+ //super(datePanel, formatter);
Field cfButton = null;
Field cfTextField = null;
try {
- cfButton = JDatePickerImpl.class.getDeclaredField("button");
+ cfButton = JDatePicker.class.getDeclaredField("button");
cfButton.setAccessible(true);
} catch (Exception e) {
LOGGER.warn("Could not get button field", e);
}
try {
- cfTextField = JDatePickerImpl.class.getDeclaredField("formattedTextField");
+ cfTextField = JDatePicker.class.getDeclaredField("formattedTextField");
cfTextField.setAccessible(true);
} catch (Exception e) {
LOGGER.warn("Could not get text field", e);
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ColorUtil.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ColorUtil.java
index f086712e..d701313f 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ColorUtil.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ColorUtil.java
@@ -49,11 +49,21 @@ public class ColorUtil {
}
public static float getBrightness(Color color) {
- return Color.RGBtoHSB(color.getRed(), color.getBlue(), color.getGreen(), null)[2];
+ float a[] = new float[3];
+ color.getRGBColorComponents(a);
+ return a[0] * 0.2126f + a[1] * 0.7152f + a[2] * 0.0722f;
+ }
+
+ public static float getContrast(Color a, Color b) {
+ float val = (getBrightness(a) + 0.05f) / (getBrightness(b) + 0.05f);
+ if (val < 1) {
+ val = 1 / val;
+ }
+ return val;
}
public static Color contrastColor(Color color) {
return new Color(color.getRed() ^ 0x80, color.getGreen() ^ 0x80, color.getBlue() ^ 0x80);
}
-
+
}
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 06692a7c..2ab8e9fb 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
@@ -6,7 +6,7 @@ import java.util.Date;
import javax.swing.JSpinner;
import org.apache.log4j.Logger;
-import org.jdatepicker.impl.JDatePickerImpl;
+import org.jdatepicker.JDatePicker;
public class DateTimeHelper {
private static final Calendar calendar = Calendar.getInstance();
@@ -21,7 +21,7 @@ public class DateTimeHelper {
* @param timeSpinner to extract the time from
* @return Date represented by datePicker's day and timeSpinner's time
*/
- public static Date getDateFrom(JDatePickerImpl datePicker, JSpinner timeSpinner) {
+ public static Date getDateFrom(JDatePicker datePicker, JSpinner timeSpinner) {
// start date from the DatePicker
int years = datePicker.getModel().getYear();
int months = datePicker.getModel().getMonth();
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureDetailsWindowLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureDetailsWindowLayout.java
index bdae23d2..57a82b6d 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureDetailsWindowLayout.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureDetailsWindowLayout.java
@@ -7,7 +7,6 @@ import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.util.Calendar;
-import java.util.Date;
import java.util.Properties;
import javax.swing.BorderFactory;
@@ -26,9 +25,7 @@ import javax.swing.JTextField;
import javax.swing.SpinnerDateModel;
import javax.swing.text.DateFormatter;
-import org.jdatepicker.impl.JDatePanelImpl;
-import org.jdatepicker.impl.JDatePickerImpl;
-import org.jdatepicker.impl.UtilDateModel;
+import org.jdatepicker.JDatePicker;
import org.openslx.bwlp.thrift.iface.ImageVersionDetails;
import org.openslx.dozmod.gui.Gui;
import org.openslx.dozmod.gui.control.ComboBox;
@@ -44,7 +41,6 @@ import org.openslx.dozmod.gui.control.WordWrapLabel;
import org.openslx.dozmod.gui.helper.GridManager;
import org.openslx.dozmod.thrift.Session;
import org.openslx.dozmod.thrift.cache.MetaDataCache;
-import org.openslx.dozmod.util.DateLabelFormatter;
import org.openslx.dozmod.util.FormatHelper;
import org.openslx.sat.thrift.version.Feature;
import org.openslx.thrifthelper.Comparators;
@@ -85,8 +81,8 @@ public abstract class LectureDetailsWindowLayout extends JDialog {
protected final JButton btnClose;
protected final JButton btnDownloadImage;
- protected final JDatePickerImpl dtpStartDate;
- protected final JDatePickerImpl dtpEndDate;
+ protected final JDatePicker dtpStartDate;
+ protected final JDatePicker dtpEndDate;
protected final JSpinner spnStartTime;
protected final JSpinner spnEndTime;
@@ -252,8 +248,7 @@ public abstract class LectureDetailsWindowLayout extends JDialog {
// start time of the lecture
JPanel startTimePanel = new JPanel();
startTimePanel.setLayout(new BoxLayout(startTimePanel, BoxLayout.LINE_AXIS));
- dtpStartDate = new QDatePickerImpl(new JDatePanelImpl(new UtilDateModel(new Date()), pickerStrings),
- new DateLabelFormatter());
+ dtpStartDate = new QDatePickerImpl();
spnStartTime = makeTimeSpinner(23, 59);
startTimePanel.add(dtpStartDate);
startTimePanel.add(spnStartTime);
@@ -266,8 +261,7 @@ public abstract class LectureDetailsWindowLayout extends JDialog {
// end time of the lecture
JPanel endTimePanel = new JPanel();
endTimePanel.setLayout(new BoxLayout(endTimePanel, BoxLayout.LINE_AXIS));
- dtpEndDate = new QDatePickerImpl(new JDatePanelImpl(new UtilDateModel(new Date()), pickerStrings),
- new DateLabelFormatter());
+ dtpEndDate = new QDatePickerImpl();
spnEndTime = makeTimeSpinner(00, 59);
endTimePanel.add(dtpEndDate);
endTimePanel.add(spnEndTime);
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 f3944cfd..5df21c1d 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
@@ -1,8 +1,6 @@
package org.openslx.dozmod.gui.wizard.layout;
import java.util.Calendar;
-import java.util.Date;
-import java.util.Properties;
import javax.swing.JScrollPane;
import javax.swing.JSpinner;
@@ -11,15 +9,12 @@ import javax.swing.JTextField;
import javax.swing.SpinnerDateModel;
import javax.swing.text.DateFormatter;
-import org.jdatepicker.impl.JDatePanelImpl;
-import org.jdatepicker.impl.UtilDateModel;
import org.openslx.dozmod.gui.Gui;
import org.openslx.dozmod.gui.control.QDatePickerImpl;
import org.openslx.dozmod.gui.control.QLabel;
import org.openslx.dozmod.gui.helper.GridManager;
import org.openslx.dozmod.gui.wizard.Wizard;
import org.openslx.dozmod.gui.wizard.WizardPage;
-import org.openslx.dozmod.util.DateLabelFormatter;
@SuppressWarnings("serial")
public abstract class LectureCreationPageLayout extends WizardPage {
@@ -32,14 +27,6 @@ public abstract class LectureCreationPageLayout extends WizardPage {
protected final JSpinner spnEndTime;
protected final QLabel lblCalcPeriod;
- private static final Properties pickerStrings = new Properties();
-
- static {
- pickerStrings.put("text.today", "Heute");
- pickerStrings.put("text.month", "Monat");
- pickerStrings.put("text.year", "Jahr");
- }
-
/**
* Page for creating lectures
*
@@ -69,16 +56,14 @@ public abstract class LectureCreationPageLayout extends WizardPage {
grid.nextRow();
// Start date/time
- dtpStartDate = new QDatePickerImpl(new JDatePanelImpl(new UtilDateModel(new Date()), pickerStrings),
- new DateLabelFormatter());
+ dtpStartDate = new QDatePickerImpl();
spnStartTime = makeTimeSpinner(0, 0);
grid.add(new QLabel("Startdatum"));
grid.add(dtpStartDate).fill(true, false).expand(true, false);
grid.add(spnStartTime);
grid.nextRow();
- dtpEndDate = new QDatePickerImpl(new JDatePanelImpl(new UtilDateModel(new Date()), pickerStrings),
- new DateLabelFormatter());
+ dtpEndDate = new QDatePickerImpl();
spnEndTime = makeTimeSpinner(23, 59);
grid.add(new QLabel("Enddatum"));
grid.add(dtpEndDate).fill(true, false).expand(true, false);