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

                                             
                          


                            
 
                               
                            
                             






                                            
                                             
                                                 




                                                  

                                                                    





                                                        
 






                                                                         



                                     
                                                                                    

                         

                                                                       
                                                                                                                
                                                            
 
                               
                                                        
                                                           
                                                                                        
                               
 
                                                       



                                                                                                              

                                                                          
                                                     
                                                                            
                               
 
                                  


                                                                                                                 
                                                   


                                                                          
 


                                                                                                               
                                                 


                                                                        
 
                                  
         
















                                                                                               
 
package org.openslx.dozmod.gui.wizard.layout;

import java.awt.Dimension;
import java.util.Calendar;
import java.util.Date;
import java.util.Properties;

import javax.swing.JScrollPane;
import javax.swing.JSpinner;
import javax.swing.JTextArea;
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.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 {

	protected final JTextField lectureNameTextField;
	protected final JTextArea descriptionText;
	protected final JDatePickerImpl startDate;
	protected final JDatePickerImpl endDate;
	protected final JSpinner startTime;
	protected final JSpinner endTime;

	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
	 * 
	 * @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
		lectureNameTextField = new JTextField();
		grid.add(new QLabel("Veranstaltungsname"));
		grid.add(lectureNameTextField, 2).fill(true, false).expand(true, false);
		grid.nextRow();

		descriptionText = new JTextArea(3, 50);
		descriptionText.setLineWrap(true);
		descriptionText.setWrapStyleWord(true);
		JScrollPane descPane = new JScrollPane(descriptionText, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
				JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
		descriptionText.setMinimumSize(new Dimension(0, 60));
		descPane.setMinimumSize(descriptionText.getMinimumSize());
		grid.add(new QLabel("Beschreibung"));
		grid.add(descPane, 2).fill(true, false).expand(true, false);
		grid.nextRow();

		// Start date/time
		startDate = new JDatePickerImpl(new JDatePanelImpl(new UtilDateModel(new Date()), pickerStrings),
				new DateLabelFormatter());
		startTime = makeTimeSpinner(0, 0);
		grid.add(new QLabel("Startdatum"));
		grid.add(startDate).fill(true, false).expand(true, false);
		grid.add(startTime);
		grid.nextRow();

		endDate = new JDatePickerImpl(new JDatePanelImpl(new UtilDateModel(new Date()), pickerStrings),
				new DateLabelFormatter());
		endTime = makeTimeSpinner(23, 59);
		grid.add(new QLabel("Enddatum"));
		grid.add(endDate).fill(true, false).expand(true, false);
		grid.add(endTime);
		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;
	}

}