Index: /trunk/de.ugoe.cs.swe.exercises/.classpath
===================================================================
--- /trunk/de.ugoe.cs.swe.exercises/.classpath	(revision 13)
+++ /trunk/de.ugoe.cs.swe.exercises/.classpath	(revision 14)
@@ -1,4 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
+	<classpathentry exported="true" kind="lib" path="lib/org.eclipse.nebula.widgets.formattedtext_1.0.0.HEAD.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/org.eclipse.nebula.widgets.datechooser_1.0.0.HEAD.jar"/>
 	<classpathentry exported="true" kind="lib" path="lib/antlr-runtime-3.1.3.jar"/>
 	<classpathentry exported="true" kind="lib" path="lib/jna.jar"/>
Index: /trunk/de.ugoe.cs.swe.exercises/META-INF/MANIFEST.MF
===================================================================
--- /trunk/de.ugoe.cs.swe.exercises/META-INF/MANIFEST.MF	(revision 13)
+++ /trunk/de.ugoe.cs.swe.exercises/META-INF/MANIFEST.MF	(revision 14)
@@ -20,5 +20,7 @@
  lib/svnkit-javahl.jar,
  lib/svnkit.jar,
- lib/trilead.jar
+ lib/trilead.jar,
+ lib/org.eclipse.nebula.widgets.datechooser_1.0.0.HEAD.jar,
+ lib/org.eclipse.nebula.widgets.formattedtext_1.0.0.HEAD.jar
 Bundle-Vendor: Software Engineering for Distributed Systems Group, Uni Goettingen
 Export-Package: de.ugoe.cs.swe.exercises,
Index: /trunk/de.ugoe.cs.swe.exercises/build.properties
===================================================================
--- /trunk/de.ugoe.cs.swe.exercises/build.properties	(revision 13)
+++ /trunk/de.ugoe.cs.swe.exercises/build.properties	(revision 14)
@@ -13,4 +13,6 @@
                lib/svnkit-javahl.jar,\
                lib/svnkit.jar,\
-               lib/trilead.jar
+               lib/trilead.jar,\
+               lib/org.eclipse.nebula.widgets.datechooser_1.0.0.HEAD.jar,\
+               lib/org.eclipse.nebula.widgets.formattedtext_1.0.0.HEAD.jar
 source.. = src/
Index: /trunk/de.ugoe.cs.swe.exercises/src/de/ugoe/cs/swe/exercises/exercisesheet/ExerciseSheet.java
===================================================================
--- /trunk/de.ugoe.cs.swe.exercises/src/de/ugoe/cs/swe/exercises/exercisesheet/ExerciseSheet.java	(revision 13)
+++ /trunk/de.ugoe.cs.swe.exercises/src/de/ugoe/cs/swe/exercises/exercisesheet/ExerciseSheet.java	(revision 14)
@@ -21,5 +21,5 @@
 public class ExerciseSheet extends Model {
 	private int number, revisionNumber, complexityValue, lectureEventId,
-			exerciseMaxRevision, numOfExercises;
+			exerciseMaxRevision, numOfExercises, dueDate;
 	private boolean examination;
 
@@ -42,5 +42,5 @@
 
 	public ExerciseSheet(int id, int number, int revisionNumber,
-			int complexityValue, boolean examination, LectureEvent lectureEvent, int numOfExercises) {
+			int complexityValue, boolean examination, LectureEvent lectureEvent, int numOfExercises, int dueDate) {
 		super(id);
 		this.number = number;
@@ -50,8 +50,9 @@
 		this.lectureEventId = lectureEvent.getId();
 		this.numOfExercises = numOfExercises;
+		this.dueDate = dueDate;
 	}
 
 	public ExerciseSheet(int number, int revisionNumber, int complexityValue,
-			boolean examination, LectureEvent lectureEvent, int numOfExercises) {
+			boolean examination, LectureEvent lectureEvent, int numOfExercises, int dueDate) {
 		super();
 		this.number = number;
@@ -61,4 +62,5 @@
 		this.lectureEventId = lectureEvent.getId();
 		this.numOfExercises = numOfExercises;
+		this.dueDate = dueDate;
 	}
 	
@@ -71,4 +73,6 @@
 		this.lectureEventId = lectureEvent.getId();
 		this.examination = false;
+		long currentTime = (System.currentTimeMillis() / 1000);
+		this.dueDate  = (int) currentTime;
 	}
 
@@ -118,6 +122,6 @@
 	@Override
 	protected void update() throws SQLException {
-		PreparedStatement statement = prepareStatement("UPDATE exercisesheet SET number=?, examination=?, revisionnumber=?, complexityvalue=?, lectureevent=?, numOfExercises=? WHERE id=?");
-		statement.setInt(7, this.getId());
+		PreparedStatement statement = prepareStatement("UPDATE exercisesheet SET number=?, examination=?, revisionnumber=?, complexityvalue=?, lectureevent=?, numOfExercises=?, dueDate=? WHERE id=?");
+		statement.setInt(8, this.getId());
 		executeSaveQuery(statement);
 	}
@@ -125,5 +129,5 @@
 	@Override
 	protected PreparedStatement insert() throws SQLException {
-		PreparedStatement statement = prepareStatement("INSERT INTO exercisesheet (number, examination, revisionnumber, complexityvalue, lectureevent, numOfExercises) VALUES (?,?,?,?,?,?)");
+		PreparedStatement statement = prepareStatement("INSERT INTO exercisesheet (number, examination, revisionnumber, complexityvalue, lectureevent, numOfExercises, dueDate) VALUES (?,?,?,?,?,?,?)");
 		executeSaveQuery(statement);
 		return statement;
@@ -142,4 +146,5 @@
 		statement.setInt(5, this.lectureEventId);
 		statement.setInt(6, this.numOfExercises);
+		statement.setInt(7, this.dueDate);
 		statement.executeUpdate();
 	}
@@ -176,5 +181,5 @@
 					resultset.getInt("complexityvalue"), resultset
 							.getBoolean("examination"), LectureEvent
-							.get(resultset.getInt("lectureevent")), resultset.getInt("numOfExercises")));
+							.get(resultset.getInt("lectureevent")), resultset.getInt("numOfExercises"), resultset.getInt("dueDate")));
 		}
 		return lectures;
@@ -316,3 +321,13 @@
 
 	}
+
+	public int getDueDate() {
+		return dueDate;
+	}
+
+	public void setDueDate(int dueDate) {
+		this.dueDate = dueDate;
+	}
+	
+	
 }
Index: /trunk/de.ugoe.cs.swe.exercises/src/de/ugoe/cs/swe/exercises/exercisesheet/ExerciseSheetComposite.java
===================================================================
--- /trunk/de.ugoe.cs.swe.exercises/src/de/ugoe/cs/swe/exercises/exercisesheet/ExerciseSheetComposite.java	(revision 13)
+++ /trunk/de.ugoe.cs.swe.exercises/src/de/ugoe/cs/swe/exercises/exercisesheet/ExerciseSheetComposite.java	(revision 14)
@@ -3,7 +3,10 @@
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
 
 import org.eclipse.core.filesystem.EFS;
 import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.nebula.widgets.datechooser.DateChooserCombo;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.SashForm;
@@ -26,5 +29,4 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.FileDialog;
-import org.eclipse.swt.widgets.Group;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Shell;
@@ -60,5 +62,5 @@
 	private TableColumn possibleTitle;
 	private TableColumn possibleComplexity;
-	private Group group;
+	private Composite lectureEventFields;
 	private SashForm sashForm;
 	private Button generateButton;
@@ -70,4 +72,7 @@
 	private Button previewButton;
 	private Button solutionButton;
+	private Label lblLecureEvent;
+	private Label lblDueDate;
+	private DateChooserCombo dueDateChooserCombo;
 
 	class ExerciseDragger implements DragSourceListener {
@@ -154,38 +159,50 @@
 		setLayout(new GridLayout(4, true));
 
-		group = new Group(this, SWT.NONE);
-		group.setLayout(new GridLayout(2, false));
-		group.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false,
-				2, 6));
-
-		Label sheetLabel = new Label(group, SWT.NONE);
-		sheetLabel.setLayoutData(new GridData(SWT.LEFT, SWT.BOTTOM, false,
-				true, 1, 1));
+		lectureEventFields = new Composite(this, SWT.NONE);
+		lectureEventFields.setLayout(new GridLayout(2, false));
+		GridData gridData_1 = new GridData(SWT.FILL, SWT.TOP, false, false,
+				2, 6);
+		gridData_1.heightHint = 201;
+		lectureEventFields.setLayoutData(gridData_1);
+
+		Label sheetLabel = new Label(lectureEventFields, SWT.NONE);
+		sheetLabel.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false,
+				false, 1, 1));
 		sheetLabel.setText("Sheet #");
 
-		sheetNumberText = new Text(group, SWT.BORDER);
-		sheetNumberText.setLayoutData(new GridData(SWT.LEFT, SWT.BOTTOM, false,
+		sheetNumberText = new Text(lectureEventFields, SWT.BORDER);
+		sheetNumberText.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false,
 				false, 1, 1));
-
-		lectureEventLabel = new Label(group, SWT.NONE);
-		lectureEventLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER,
-				false, false, 2, 1));
-		lectureEventLabel.setText("Lecture Event");
-
-		Label complexityLabel = new Label(group, SWT.NONE);
-		complexityLabel.setText("maximal complexity:");
-
-		complexityText = new Text(group, SWT.BORDER);
-
-		lblOfExercises = new Label(group, SWT.NONE);
+				
+				lblLecureEvent = new Label(lectureEventFields, SWT.NONE);
+				lblLecureEvent.setText("Lecure Event:");
+		
+				lectureEventLabel = new Label(lectureEventFields, SWT.NONE);
+				lectureEventLabel.setLayoutData(new GridData(SWT.FILL, SWT.TOP,
+						true, false, 1, 1));
+				lectureEventLabel.setText("Lecture Event");
+
+		Label complexityLabel = new Label(lectureEventFields, SWT.NONE);
+		complexityLabel.setText("Maximum Complexity:");
+
+		complexityText = new Text(lectureEventFields, SWT.BORDER);
+		complexityText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
+
+		lblOfExercises = new Label(lectureEventFields, SWT.NONE);
 		lblOfExercises.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false,
 				false, 1, 1));
 		lblOfExercises.setText("# of exercises");
 
-		numOfExercisesText = new Text(group, SWT.BORDER);
-		numOfExercisesText.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER,
+		numOfExercisesText = new Text(lectureEventFields, SWT.BORDER);
+		numOfExercisesText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER,
 				true, false, 1, 1));
-
-		examinationCheck = new Button(group, SWT.CHECK);
+		
+		lblDueDate = new Label(lectureEventFields, SWT.NONE);
+		lblDueDate.setText("Due Date:");
+		
+		dueDateChooserCombo = new DateChooserCombo(lectureEventFields, SWT.NONE);
+		dueDateChooserCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
+
+		examinationCheck = new Button(lectureEventFields, SWT.CHECK);
 		examinationCheck.addSelectionListener(new SelectionAdapter() {
 			@Override
@@ -196,7 +213,7 @@
 		examinationCheck.setSelection(true);
 		examinationCheck.setText("is Examination");
-		new Label(group, SWT.NONE);
-
-		sashForm = new SashForm(group, SWT.NONE);
+		new Label(lectureEventFields, SWT.NONE);
+
+		sashForm = new SashForm(lectureEventFields, SWT.NONE);
 		sashForm.setLayoutData(new GridData(SWT.FILL, SWT.BOTTOM, false, false,
 				2, 1));
@@ -265,5 +282,5 @@
 		sashForm.setWeights(new int[] { 1, 1 });
 
-		sashForm_1 = new SashForm(group, SWT.NONE);
+		sashForm_1 = new SashForm(lectureEventFields, SWT.NONE);
 		sashForm_1.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false,
 				false, 2, 1));
@@ -336,5 +353,5 @@
 			}
 		});
-		previewButton.setText("PDF preview");
+		previewButton.setText("PDF Preview");
 
 		sashForm_1.setWeights(new int[] { 1, 1 });
@@ -366,5 +383,5 @@
 
 		Label currentExerciseLabel = new Label(this, SWT.NONE);
-		currentExerciseLabel.setText("current Exercises:");
+		currentExerciseLabel.setText("Current Exercises:");
 
 		generateButton = new Button(this, SWT.NONE);
@@ -380,8 +397,8 @@
 			}
 		});
-		generateButton.setText("Generate Exercises");
+		generateButton.setText("Auto-Assign Exercises");
 
 		Label possibleExerciseLabel = new Label(this, SWT.NONE);
-		possibleExerciseLabel.setText("possible Exercises:");
+		possibleExerciseLabel.setText("Possible Exercises:");
 		new Label(this, SWT.NONE);
 
@@ -454,4 +471,20 @@
 		selected.setNumOfExercises(Integer.parseInt(numOfExercisesText
 				.getText()));
+		String[] dateComponents = dueDateChooserCombo.getText().split("\\.");
+		if (dateComponents.length == 3) {
+			String year = dateComponents[2].trim();
+			String month = dateComponents[1].trim();
+			String day = dateComponents[0].trim();
+			if ((year.length() > 0) && (month.length() > 0) && (day.length() > 0)) {
+				Calendar dueDate = new GregorianCalendar();
+				dueDate.set(Calendar.DAY_OF_MONTH, Integer.parseInt(day));
+				dueDate.set(Calendar.MONTH, Integer.parseInt(month)-1);
+				dueDate.set(Calendar.YEAR, Integer.parseInt(year));
+				long timestamp = (dueDate.getTimeInMillis() / 1000);
+				int dueDateTimestamp = (int) timestamp;
+				
+				selected.setDueDate(dueDateTimestamp);
+			}
+		}
 		selected.save();
 	}
@@ -462,4 +495,9 @@
 		sheetNumberText.setText("" + exerciseSheet.getNumber());
 		complexityText.setText("" + exerciseSheet.getComplexityValue());
+		
+		Calendar dueDate = new GregorianCalendar();
+		long timestamp = ((long) exerciseSheet.getDueDate()) * 1000;
+		dueDate.setTimeInMillis(timestamp);
+		dueDateChooserCombo.setValue(dueDate.getTime());
 		numOfExercisesText.setText(String.valueOf(exerciseSheet
 				.getNumOfExercises()));
Index: /trunk/de.ugoe.cs.swe.exercises/src/de/ugoe/cs/swe/exercises/exercisesheet/PdfGenerator.java
===================================================================
--- /trunk/de.ugoe.cs.swe.exercises/src/de/ugoe/cs/swe/exercises/exercisesheet/PdfGenerator.java	(revision 13)
+++ /trunk/de.ugoe.cs.swe.exercises/src/de/ugoe/cs/swe/exercises/exercisesheet/PdfGenerator.java	(revision 14)
@@ -9,5 +9,9 @@
 import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
+import java.text.DateFormat;
 import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.Locale;
 import java.util.Scanner;
 import java.util.regex.Matcher;
@@ -112,5 +116,9 @@
 			templatePath = templatePath.replace('\\','/');
 
-			String deliveryDate = "todo...";
+			long dueDateTimeStamp = ((long)exercisesheet.getDueDate()) * 1000;
+			Calendar dueDate = new GregorianCalendar();
+			dueDate.setTimeInMillis(dueDateTimeStamp);
+			DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.GERMANY);
+			String deliveryDate = dateFormat.format(dueDate.getTime());
 			
 			template = template.replaceAll("(\\W)LECTURE(\\W)", "$1"
Index: /trunk/de.ugoe.cs.swe.exercises/src/de/ugoe/cs/swe/exercises/lecture/GUITreeView.java
===================================================================
--- /trunk/de.ugoe.cs.swe.exercises/src/de/ugoe/cs/swe/exercises/lecture/GUITreeView.java	(revision 13)
+++ /trunk/de.ugoe.cs.swe.exercises/src/de/ugoe/cs/swe/exercises/lecture/GUITreeView.java	(revision 14)
@@ -186,5 +186,5 @@
 		btnSaveChanges.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false,
 				false, 1, 1));
-		btnSaveChanges.setText("Save changes");
+		btnSaveChanges.setText("Save Changes");
 		switchComposite();
 	}
