Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,27 +1,88 @@
package github.weichware10.analyse.gui.admin;

import github.weichware10.analyse.Main;
import github.weichware10.util.Logger;
import github.weichware10.util.gui.AbsScene;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
import javafx.application.Platform;
import javafx.scene.Parent;
import javafx.stage.FileChooser;
import javafx.stage.FileChooser.ExtensionFilter;

/**
* Interface zum Erstellen von Trials (auf Basis von configIds).
*/
public class TrialCreator extends AbsScene {
private static Parent root;
private static TrialCreatorController controller;

/**
* Startet den TrialCreator.
*/
public static void start() {
root = start(Main.primaryStage,
InitResult ir = start(Main.primaryStage,
TrialCreator.class.getResource("TrialCreator.fxml"),
root,
null,
controller,
"Analyse - Trialerstellung",
null,
null,
null,
null).root;
null);
root = ir.root;
controller = (TrialCreatorController) ir.controller;
}

protected static void createTrials() {
final String configId = controller.configIdField.getText();
new Thread(new Runnable() {
@Override
public void run() {
Platform.runLater(() -> controller.trialsCreateButton.setDisable(true));
List<String> trialIds = Main.dataBaseClient.trials.add(
configId, controller.countBox.getValue());
Platform.runLater(
() -> controller.trialIdArea.setText(String.join("\n", trialIds)));
Platform.runLater(
() -> controller.trialsCreateButton.setDisable(false));
}
}).start();
}

protected static void saveToTxt() {
String content = controller.trialIdArea.getText();

FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("JSON Config Speicherort auswählen");
fileChooser.getExtensionFilters().add(
new ExtensionFilter("Text Dateien",
"*.txt"));
File txtFile = fileChooser.showSaveDialog(Main.primaryStage);

if (txtFile != null) {
FileWriter fw;
try {
fw = new FileWriter(txtFile.getAbsolutePath(), true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(content);
bw.newLine();
bw.close();
} catch (IOException e) {
Logger.error("An error occured while saving trialId List", e);
}
}
}

protected static Runnable configAvailabiltyChecker = new Runnable() {
@Override
public void run() {
String configId = controller.configIdField.getText();
boolean availability = Main.dataBaseClient.configurations.getAvailability(configId);
Platform.runLater(() -> controller.trialsCreateButton.setDisable(!availability));
}
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,73 @@
import github.weichware10.analyse.gui.general.FunctionChooser;
import github.weichware10.util.Logger;
import github.weichware10.util.gui.AbsSceneController;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;

/**
* Controller für {@link TrialCreator}.
*/
public class TrialCreatorController extends AbsSceneController {
@FXML
private ResourceBundle resources;
@FXML
private URL location;
@FXML
protected TextField configIdField;
@FXML
protected ComboBox<Integer> countBox;
@FXML
private Button saveButton;
@FXML
protected TextArea trialIdArea;
@FXML
protected Button trialsCreateButton;

@FXML
private void startFunctionChooser() {
Logger.info("trialcreator:content Starting Function Chooser");
FunctionChooser.start();
}

@FXML
private void createTrials() {
Logger.info("trialcreator:content Creating trials");
TrialCreator.createTrials();
}

@FXML
private void saveToTxt() {
Logger.info("trialcreator:content Saving to text file");
TrialCreator.saveToTxt();
}

@Override
protected void initialize() {
// TODO Auto-generated method stub
assert configIdField != null
: "fx:id=\"configIdField\" not injected: check 'TrialCreator.fxml'.";
assert countBox != null
: "fx:id=\"countBox\" not injected: check 'TrialCreator.fxml'.";
assert saveButton != null
: "fx:id=\"saveButton\" not injected: check 'TrialCreator.fxml'.";
assert trialIdArea != null
: "fx:id=\"trialIdArea\" not injected: check 'TrialCreator.fxml'.";
assert trialsCreateButton != null
: "fx:id=\"trialsCreateButton\" not injected: check 'TrialCreator.fxml'.";

for (int i = 0; i < 10; i++) {
countBox.getItems().add((int) Math.pow(2, i));
}
countBox.setValue(1);

trialIdArea.textProperty().addListener(
(o, s, newValue) -> saveButton.setDisable(newValue.length() == 0));
configIdField.textProperty().addListener(
(o) -> new Thread(TrialCreator.configAvailabiltyChecker).start());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@
<HBox alignment="CENTER" spacing="10.0">
<children>
<Label text="Bitte config-ID und Anzahl angeben:" />
<TextField prefWidth="150.0" promptText="Konfigurations-ID" />
<ComboBox editable="true" prefWidth="100.0" promptText="Anzahl" />
<Button mnemonicParsing="false" text="Trials erstellen" />
<TextField fx:id="configIdField" prefWidth="150.0" promptText="Konfigurations-ID" />
<ComboBox fx:id="countBox" prefWidth="100.0" promptText="Anzahl" />
<Button fx:id="trialsCreateButton" defaultButton="true" disable="true" mnemonicParsing="false" onAction="#createTrials" text="Trials erstellen" />
</children>
</HBox>
<GridPane VBox.vgrow="ALWAYS">
Expand All @@ -36,13 +36,13 @@
<RowConstraints minHeight="10.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<TextArea prefHeight="200.0" prefWidth="200.0" promptText="hier werden die erzeugten TrialIDs erscheinen." GridPane.columnIndex="1" />
<TextArea fx:id="trialIdArea" editable="false" prefHeight="200.0" prefWidth="200.0" promptText="hier werden die erzeugten TrialIDs erscheinen." GridPane.columnIndex="1" />
</children>
</GridPane>
<ButtonBar>
<buttons>
<Button mnemonicParsing="false" onAction="#startFunctionChooser" text="zurück" ButtonBar.buttonData="LEFT" />
<Button defaultButton="true" mnemonicParsing="false" text="IDs als txt-Datei speichern" />
<Button fx:id="saveButton" defaultButton="true" disable="true" mnemonicParsing="false" onAction="#saveToTxt" text="IDs als txt-Datei speichern" />
</buttons>
</ButtonBar>
</children>
Expand Down