summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/LectureCreationPageLayout.java
blob: c184b3e2bac98b51f84a5fe025b19f7c0526d660 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package org.openslx.dozmod.gui.wizard.layout;

import java.util.Calendar;

import javax.swing.JScrollPane;
import javax.swing.JSpinner;
import javax.swing.JTextField;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.SpinnerDateModel;
import javax.swing.text.DateFormatter;
import javax.swing.text.StyledEditorKit;

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 java.awt.Dimension;
import java.awt.GridLayout;

@SuppressWarnings("serial")
public abstract class LectureCreationPageLayout extends WizardPage {

	protected final JTextField txtName;
	protected final JEditorPane txtDescription;
	protected final QDatePickerImpl dtpStartDate;
	protected final QDatePickerImpl dtpEndDate;
	protected final JSpinner spnStartTime;
	protected final JSpinner spnEndTime;
	protected final QLabel lblCalcPeriod;

	protected final JButton btnBold;
	protected final JButton btnItalic;
	protected final JButton btnUnderline;

	/**
	 * Page for creating lectures
	 * 
	 * @param editExistingLecture whether to edit existing lecture or create new one
	 */
	public LectureCreationPageLayout(Wizard wizard, String title) {
		super(wizard, title);
		setDescription("Geben Sie bitte einen aussagekräftigen Namen für die neue Veranstaltung ein.");
		GridManager grid = new GridManager(this, 3);

		// lecture name
		txtName = new JTextField();
		grid.add(new QLabel("Veranstaltungsname"));
		grid.add(txtName, 2).fill(true, false).expand(true, false);
		grid.nextRow();

		// buttons for text editing
		JPanel editingPanel = new JPanel();
		editingPanel.setLayout(new GridLayout(1, 3));
		JPanel emptyPanel = new JPanel();
		grid.add(emptyPanel);
		btnBold = new JButton(new StyledEditorKit.BoldAction());
		btnBold.setIcon(Gui.getScaledIconResource("/img/bold.png", "B", 24, this));
		btnBold.setText("");
		btnItalic = new JButton(new StyledEditorKit.ItalicAction());
		btnItalic.setIcon(Gui.getScaledIconResource("/img/italic.png", "B", 24, this));
		btnItalic.setText("");
		btnUnderline = new JButton(new StyledEditorKit.UnderlineAction());
		btnUnderline.setIcon(Gui.getScaledIconResource("/img/underline.png", "B", 24, this));
		btnUnderline.setText("");
		editingPanel.add(btnBold);
		editingPanel.add(btnItalic);
		editingPanel.add(btnUnderline);
		grid.add(editingPanel);
		grid.add(emptyPanel);
		grid.nextRow();

		// description
		txtDescription = new JEditorPane();
		txtDescription.setContentType("text/html");
		txtDescription.setPreferredSize(new Dimension(600,800));
		JScrollPane descPane = new JScrollPane(txtDescription, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
				JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
		txtDescription.setMinimumSize(Gui.getScaledDimension(0, 60));
		descPane.setMinimumSize(txtDescription.getMinimumSize());
		grid.add(new QLabel("Beschreibung"));
		grid.add(descPane, 2).fill(true, false).expand(true, false);
		grid.nextRow();

		// Start date/time
		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();
		spnEndTime = makeTimeSpinner(23, 59);
		grid.add(new QLabel("Enddatum"));
		grid.add(dtpEndDate).fill(true, false).expand(true, false);
		grid.add(spnEndTime);
		grid.nextRow();

		grid.add(new QLabel("Dauer der Veranstaltung: "));
		lblCalcPeriod = new QLabel();
		grid.add(lblCalcPeriod, 2);
		grid.nextRow();

		grid.finish(true);
	}

	private JSpinner makeTimeSpinner(int h, int m) {
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.HOUR_OF_DAY, h); // 24 == 12 PM == 00:00:00
		calendar.set(Calendar.MINUTE, m);
		calendar.set(Calendar.SECOND, 0);
		SpinnerDateModel model = new SpinnerDateModel();
		model.setValue(calendar.getTime());
		JSpinner spinner = new JSpinner(model);
		JSpinner.DateEditor editor = new JSpinner.DateEditor(spinner, "HH:mm");
		DateFormatter formatter = (DateFormatter) editor.getTextField().getFormatter();
		formatter.setAllowsInvalid(false); // this makes what you want
		formatter.setOverwriteMode(true);
		spinner.setEditor(editor);
		return spinner;
	}

}