Ultra Geile Studenten Benutzer Oberfläche (UGSBO)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

210 lines
7.8 KiB

package com.ugsbo.matrixcalc;
import javafx.fxml.FXML;
import javafx.scene.control.*;
import javafx.scene.text.Text;
import javafx.scene.text.TextAlignment;
public class MatrixCalcController {
// Hier werden die fx:id Attribute verknuepft.
@FXML
private Button multiplyButton, addButton, DetAButton, DetBButton, substractButton, transposeButton;
@FXML
private Text errorText, outputText;
@FXML
private TextArea matrixATextArea, matrixBTextArea;
private MatrixCalcMath math = new MatrixCalcMath();
private MatrixCalcIOUtils util = new MatrixCalcIOUtils();
/**
* Konstructor is called before initialize()
*/
public MatrixCalcController() {
// Setup of some Fields could be defined here.
}
/**
* Initializes the controller class. This method is automatically called after
* the fxml file has been loaded.
*/
@FXML
public void initialize() {
/**
* Convert Strings to matricies, multiply them and output the result.
*/
multiplyButton.setOnMouseClicked((event) -> {
String stringMatrixA = matrixATextArea.getText();
String stringMatrixB = matrixBTextArea.getText();
String[] stringMatrix = { stringMatrixA, stringMatrixB };
checkInputAndDisplayIfInputIsNotValid(stringMatrix, 2);
double[][] matrixA = util.stringToMatrix(stringMatrixA);
double[][] matrixB = util.stringToMatrix(stringMatrixB);
double[][] result = math.matrixMultiplication(matrixA, matrixB);
String DisplayableString = util.outputMatrixToOutputText(result);
outputText.setText(DisplayableString);
outputText.setTextAlignment(TextAlignment.CENTER);
// System.out.println(matrixATextArea.getText());
});
transposeButton.setOnMouseClicked((event) -> {
String stringMatrixA = matrixATextArea.getText();
String[] stringMatrix = { stringMatrixA, "" };
checkInputAndDisplayIfInputIsNotValid(stringMatrix, 1);
double[][] matrixA = util.stringToMatrix(stringMatrixA);
double[][] result = math.matrixTransponation(matrixA);
String DisplayableString = util.outputMatrixToOutputText(result);
outputText.setText(DisplayableString);
outputText.setTextAlignment(TextAlignment.CENTER);
});
addButton.setOnMouseClicked((event) -> {
String stringMatrixA = matrixATextArea.getText();
String stringMatrixB = matrixBTextArea.getText();
String[] stringMatrix = { stringMatrixA, stringMatrixB };
checkInputAndDisplayIfInputIsNotValid(stringMatrix, 2);
double[][] matrixA = util.stringToMatrix(stringMatrixA);
double[][] matrixB = util.stringToMatrix(stringMatrixB);
double[][] result = math.matrixAddition(matrixA, matrixB);
String DisplayableString = util.outputMatrixToOutputText(result);
outputText.setText(DisplayableString);
outputText.setTextAlignment(TextAlignment.CENTER);
});
substractButton.setOnMouseClicked((event) -> {
String stringMatrixA = matrixATextArea.getText();
String stringMatrixB = matrixBTextArea.getText();
String[] stringMatrix = { stringMatrixA, stringMatrixB };
checkInputAndDisplayIfInputIsNotValid(stringMatrix, 2);
double[][] matrixA = util.stringToMatrix(stringMatrixA);
double[][] matrixB = util.stringToMatrix(stringMatrixB);
try {
double[][] result = math.matrixSubstraction(matrixA, matrixB);
String DisplayableString = util.outputMatrixToOutputText(result);
outputText.setText(DisplayableString);
outputText.setTextAlignment(TextAlignment.CENTER);
} catch (Exception e) {
outputText.setText(e.getMessage());
outputText.setTextAlignment(TextAlignment.CENTER);
}
});
DetAButton.setOnMouseClicked((event) -> {
String stringMatrixA = matrixATextArea.getText();
String[] stringMatrix = { stringMatrixA, "" };
checkInputAndDisplayIfInputIsNotValid(stringMatrix, 1);
double[][] matrixA = util.stringToMatrix(stringMatrixA);
try {
double result = math.calcDeterminat(matrixA);
String DisplayableString = Double.toString(result);
outputText.setText(DisplayableString);
outputText.setTextAlignment(TextAlignment.CENTER);
} catch (IllegalArgumentException e) {
outputText.setText(e.getMessage());
outputText.setTextAlignment(TextAlignment.CENTER);
}
});
DetBButton.setOnMouseClicked((event) -> {
String stringMatrixB = matrixBTextArea.getText();
String[] stringMatrix = { "", stringMatrixB };
checkInputAndDisplayIfInputIsNotValid(stringMatrix, 1);
double[][] matrixB = util.stringToMatrix(stringMatrixB);
try {
double result = math.calcDeterminat(matrixB);
String DisplayableString = Double.toString(result);
outputText.setText(DisplayableString);
outputText.setTextAlignment(TextAlignment.CENTER);
} catch (IllegalArgumentException e) {
outputText.setText(e.getMessage());
outputText.setTextAlignment(TextAlignment.CENTER);
}
});
}
// TODO Wirte tests for the extracted Methode.
/**
* Checks the Input and Displays it if the Input is Valid.
*
* @param stringMatrix Contains both input matrices if
* numberOfMarriciesToMatch is 2. If the number
* is 1 than one of them has to be a empty String
* @param numberOfMatricesToMatch If the number is 1 onely one Marix will be
* verifyed and the otherone needs to be an empty
* String in the stringMatrix
*/
private void checkInputAndDisplayIfInputIsNotValid(String[] stringMatrix, int numberOfMatricesToMatch) {
if (numberOfMatricesToMatch == 1 && !stringMatrix[0].equals("")) {
try {
util.checkInput(stringMatrix[0]);
} catch (Exception e) {
outputText.setText(e.getMessage() + "A");
outputText.setTextAlignment(TextAlignment.CENTER);
}
} else if (numberOfMatricesToMatch == 1 && !stringMatrix[1].equals("")) {
try {
util.checkInput(stringMatrix[1]);
} catch (Exception e) {
outputText.setText(e.getMessage() + "B");
outputText.setTextAlignment(TextAlignment.CENTER);
}
} else if (numberOfMatricesToMatch == 2 && !stringMatrix[0].equals("") && !stringMatrix[1].equals("")) {
try {
util.checkInput(stringMatrix[0]);
} catch (Exception e) {
outputText.setText(e.getMessage() + "A");
outputText.setTextAlignment(TextAlignment.CENTER);
}
try {
util.checkInput(stringMatrix[1]);
} catch (Exception e) {
outputText.setText(e.getMessage() + "B");
outputText.setTextAlignment(TextAlignment.CENTER);
}
} else if (stringMatrix[0].equals("")) {
outputText.setText("Pease insert MatrixA");
outputText.setTextAlignment(TextAlignment.CENTER);
} else if (stringMatrix[1].equals("")) {
outputText.setText("Pease insert MatrixB");
outputText.setTextAlignment(TextAlignment.CENTER);
}
}
}