summaryrefslogblamecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/LectureCreationPageLayout.java
blob: c184b3e2bac98b51f84a5fe025b19f7c0526d660 (plain) (tree)
1
2
3
4
5
6
7
8
9
10

                                             
                          
 
                               

                              


                               

                                      
                                        
 
                                  
                                                      
                                             
                                                 

                                                
 


                           
                           

                                                                    
                                           
                                                   



                                                     
                                             
 



                                             


                                     
                                                                                        
           

                                                                       
                                                                                                                 
                                                            
 
                               
                                           
                                                           
                                                                           
                               
 
























                                                                                                     
                                                                                                             
                                                                        

                                                                             
                                                     
                                                                            
                               
 
                                  
                                                     
                                                     
                                                   

                                                                             
                               
 
                                                   
                                                     
                                                 

                                                                           
                               
 




                                                                  
                                  
         
















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

}