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;
}
}