Skip to content

Commit

Permalink
bearbeitung und speicherung
Browse files Browse the repository at this point in the history
  • Loading branch information
onehunga committed Jun 2, 2024
1 parent 1585393 commit d873d87
Show file tree
Hide file tree
Showing 13 changed files with 227 additions and 37 deletions.
12 changes: 12 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,19 @@
<mainClass>oop.lernquiz.App</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>jar-with-dependencies</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,56 @@
package oop.lernquiz.controller;

import oop.lernquiz.model.Antwort;
import oop.lernquiz.model.Frage;
import oop.lernquiz.model.Schwierigkeit;
import oop.lernquiz.navigator.Navigator;
import oop.lernquiz.navigator.props.ThemaBearbeitungsProperties;
import oop.lernquiz.store.ThemaStore;
import oop.lernquiz.view.FrageErstellenView;
import oop.lernquiz.view.IView;

import java.util.ArrayList;

public class FrageErstellenController extends Controller<FrageErstellenView> {
private ThemaBearbeitungsProperties props;

private FrageErstellenController(ThemaBearbeitungsProperties props) {
this.props = props;
}

public void weitereErstellen(String[] fragenDaten) {
this.frageErstellen(fragenDaten);
Navigator.navigateTo("frage-erstellen", this.props);
}

public void weitereErstellen() {
Navigator.navigateTo("frage-erstellen");
public void erstellen(String[] fragenDaten) {
this.frageErstellen(fragenDaten);
Navigator.navigateTo("thema-bearbeiten", this.props);
}

public void erstellen() {
Navigator.navigateTo("thema-bearbeiten");
private void frageErstellen(String[] fragenDaten) {
var antworten = new ArrayList<Antwort>();
for (int i = 2; i < fragenDaten.length; i++) {
antworten.add(new Antwort(fragenDaten[i], i == 2));
}

Schwierigkeit schwierigkeit = Schwierigkeit.ALLE;
for (Schwierigkeit s : Schwierigkeit.values()) {
if (s.name().equals(fragenDaten[1])) {
schwierigkeit = s;
}
}
if(schwierigkeit == Schwierigkeit.ALLE) {
throw new IllegalArgumentException("Schwierigkeit kann nicht ALLE sein");
}

var frage = new Frage(fragenDaten[0], antworten, schwierigkeit);

ThemaStore.getInstance().addFrage(this.props.getThema(), frage);
}

public void abbrechen() {
Navigator.navigateTo("thema-bearbeiten");
Navigator.navigateTo("thema-bearbeiten", this.props);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,31 @@
package oop.lernquiz.controller;

import oop.lernquiz.model.Lernkarte;
import oop.lernquiz.navigator.Navigator;
import oop.lernquiz.navigator.props.ThemaBearbeitungsProperties;
import oop.lernquiz.store.ThemaStore;
import oop.lernquiz.view.IView;
import oop.lernquiz.view.LernkarteErstellenView;

public class LernkarteErstellenController extends Controller<LernkarteErstellenView> {
private ThemaBearbeitungsProperties props;

public void erstellen() {
Navigator.goBack();
private LernkarteErstellenController(ThemaBearbeitungsProperties props) {
this.props = props;
}

public void erstellen(String name, String inhalt) {
var lernkarte = new Lernkarte(name, inhalt);

System.out.println("Lernkarte: " + name);

ThemaStore.getInstance().addLernkarte(this.props.getThema(), lernkarte);

Navigator.navigateTo("thema-bearbeiten", this.props);
}

public void abbrechen() {
Navigator.goBack();
Navigator.navigateTo("thema-bearbeiten", this.props);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,23 @@
package oop.lernquiz.controller;

import oop.lernquiz.navigator.Navigator;
import oop.lernquiz.navigator.props.ThemaBearbeitungsProperties;
import oop.lernquiz.view.IView;
import oop.lernquiz.view.ThemaBearbeitenView;

public class ThemaBearbeitenController extends Controller<ThemaBearbeitenView> {
private final ThemaBearbeitungsProperties props;

private ThemaBearbeitenController(ThemaBearbeitungsProperties props) {
this.props = props;
}

public void frageHinzufuegen() {
Navigator.navigateTo("frage-erstellen");
Navigator.navigateTo("frage-erstellen", this.props);
}

public void lernkarteHinzufuegen() {
Navigator.navigateTo("lernkarte-erstellen");
Navigator.navigateTo("lernkarte-erstellen", this.props);
}

public void abbrechen() {
Expand All @@ -22,6 +28,13 @@ public void speichern() {
Navigator.navigateTo("themen");
}

@Override
public void setView(ThemaBearbeitenView view) {
super.setView(view);

this.view.setFragen(this.props.getThema().getFragen());
}

@Override
public void setView(IView view) {
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package oop.lernquiz.controller;

import oop.lernquiz.navigator.Navigator;
import oop.lernquiz.store.ThemaStore;
import oop.lernquiz.view.IView;
import oop.lernquiz.view.ThemaErstellenView;

Expand All @@ -11,6 +12,9 @@ public void abbrechen() {
}

public void erstellen(String name) {
if(!ThemaStore.getInstance().addThema(name)) {
}

Navigator.goBack();
}

Expand Down
3 changes: 2 additions & 1 deletion src/main/java/oop/lernquiz/controller/ThemenController.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import oop.lernquiz.model.Thema;
import oop.lernquiz.navigator.Navigator;
import oop.lernquiz.navigator.props.ThemaBearbeitungsProperties;
import oop.lernquiz.store.ThemaStore;
import oop.lernquiz.view.IView;
import oop.lernquiz.view.ThemenView;
Expand All @@ -10,7 +11,7 @@ public class ThemenController extends Controller<ThemenView> {
private ThemenController() {}

public void themaBearbeiten(Thema thema) {
Navigator.navigateTo("thema-bearbeiten");
Navigator.navigateTo("thema-bearbeiten", new ThemaBearbeitungsProperties(thema));
}

public void themaErstellen() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public ViewController createViewController(NavigatorProperties properties) {
controllerConstructor.setAccessible(true);
controller = controllerConstructor.newInstance();
} else {
var controllerConstructor = controllerClass.getDeclaredConstructor(NavigatorProperties.class);
var controllerConstructor = controllerClass.getDeclaredConstructor(properties.getClass());
controllerConstructor.setAccessible(true);
controller = controllerConstructor.newInstance(properties);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package oop.lernquiz.navigator.props;

import oop.lernquiz.model.Thema;

public class ThemaBearbeitungsProperties implements NavigatorProperties {
private Thema thema;

public ThemaBearbeitungsProperties(Thema thema) {
this.thema = thema;
}

public Thema getThema() {
return thema;
}
}
25 changes: 25 additions & 0 deletions src/main/java/oop/lernquiz/store/ThemaStore.java
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,31 @@ public List<Thema> getThemen() {
return themaList;
}

/**
* fügt ein Thema hinzu, wenn kein Thema mit dem Namen existiert
*
* @return true wenn das thema erstellt wurde
*/
public boolean addThema(String name) {
for (Thema thema : themaList) {
if (thema.getName().equals(name)) {
return false;
}
}

themaList.add(new Thema(name, ""));

return true;
}

public void addFrage(Thema thema, Frage frage) {
thema.getFragen().add(frage);
}

public void addLernkarte(Thema thema, Lernkarte lernkarte) {
thema.getLernkarten().add(lernkarte);
}

public static ThemaStore getInstance() {
if (instance == null) {
instance = new ThemaStore();
Expand Down
38 changes: 31 additions & 7 deletions src/main/java/oop/lernquiz/view/FrageErstellenView.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,9 @@

import oop.lernquiz.controller.FrageErstellenController;
import oop.lernquiz.controller.IController;
import oop.lernquiz.model.Schwierigkeit;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.*;

public class FrageErstellenView extends View<FrageErstellenController> {
private Label frageLabel;
Expand All @@ -17,6 +15,8 @@ public class FrageErstellenView extends View<FrageErstellenController> {
private Label richtigeAntwortLabel;
private Label[] falscheAntwortLabel;

private Combo schwierigkeit;

protected FrageErstellenView(Composite composite) {
super(composite);
}
Expand Down Expand Up @@ -62,20 +62,44 @@ protected void buildUI() {
y += 35;
}

var lbl = new Label(composite, SWT.NONE);
lbl.setText("Schwierigkeit");
lbl.setLocation(25, y);
lbl.pack();

this.schwierigkeit = new Combo(this.composite, SWT.DROP_DOWN | SWT.BORDER);
this.schwierigkeit.setLocation(150, y);
for (int i = 1; i < Schwierigkeit.values().length; i++) {
this.schwierigkeit.add(Schwierigkeit.values()[i].name());
}
this.schwierigkeit.select(0);
this.schwierigkeit.pack();

var abbrechen = new Button(composite, 0);
abbrechen.setText("Abbrechen");
abbrechen.setBounds(400, 400, 100, 40);
abbrechen.addListener(SWT.Selection, ev -> controller.erstellen());
abbrechen.addListener(SWT.Selection, ev -> controller.abbrechen());

var erstellen = new Button(composite, 0);
erstellen.setText("Erstellen");
erstellen.setBounds(520, 400, 100, 40);
erstellen.addListener(SWT.Selection, ev -> controller.erstellen());
erstellen.addListener(SWT.Selection, ev -> controller.erstellen(this.fragenDaten()));

var weitereErstellen = new Button(composite, 0);
weitereErstellen.setText("Weitere Erstellen");
weitereErstellen.setBounds(640, 400, 140, 40);
weitereErstellen.addListener(SWT.Selection, ev -> controller.weitereErstellen());
weitereErstellen.addListener(SWT.Selection, ev -> controller.weitereErstellen(this.fragenDaten()));
}

private String[] fragenDaten() {
return new String[]{
frageText.getText(),
schwierigkeit.getText(),
richtigeAntwort.getText(),
falscheAntwort[0].getText(),
falscheAntwort[1].getText(),
falscheAntwort[2].getText()
};
}

@Override
Expand Down
8 changes: 2 additions & 6 deletions src/main/java/oop/lernquiz/view/LernkarteErstellenView.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,16 +39,12 @@ protected void buildUI() {
var abbrechen = new Button(composite, 0);
abbrechen.setText("Abbrechen");
abbrechen.setBounds(540, 400, 100, 40);
abbrechen.addListener(SWT.Selection, ev -> {
controller.erstellen();
});
abbrechen.addListener(SWT.Selection, ev -> controller.abbrechen());

var erstellen = new Button(composite, 0);
erstellen.setText("Erstellen");
erstellen.setBounds(680, 400, 100, 40);
erstellen.addListener(SWT.Selection, ev -> {
controller.abbrechen();
});
erstellen.addListener(SWT.Selection, ev -> controller.erstellen(name.getText(), inhalt.getText()));
}

@Override
Expand Down
Loading

0 comments on commit d873d87

Please sign in to comment.