diff --git a/Sda2/P/account/.gitignore b/Sda2/P/account/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..a1c3ab4d08c0f9f91918f21c730272a4711885e8 --- /dev/null +++ b/Sda2/P/account/.gitignore @@ -0,0 +1,4 @@ +/target/ +/.settings/ +.classpath +.project diff --git a/Sda2/P/account/pom.xml b/Sda2/P/account/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..364aa607f64f5fec8fd1d0523729d96753e476ec --- /dev/null +++ b/Sda2/P/account/pom.xml @@ -0,0 +1,48 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>de.hdm-stuttgart.mi.sda2</groupId> + <artifactId>account</artifactId> + <version>0.9</version> + <packaging>jar</packaging> + + <name>account</name> + + <!--Fixme: Add a sensible project related domain here --> + <url>http://somedomain.org</url> + + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + </properties> + + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.11</version> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + <version>1.2.17</version> + </dependency> + + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>3.1</version> + <configuration> + <source>1.8</source> + <target>1.8</target> + </configuration> + </plugin> + </plugins> + </build> +</project> diff --git a/Sda2/P/account/src/main/java/de/hdm_stuttgart/mi/sda2/account/Driver.java b/Sda2/P/account/src/main/java/de/hdm_stuttgart/mi/sda2/account/Driver.java new file mode 100644 index 0000000000000000000000000000000000000000..2af860570717e7c8509f869bbddcab1c63dee950 --- /dev/null +++ b/Sda2/P/account/src/main/java/de/hdm_stuttgart/mi/sda2/account/Driver.java @@ -0,0 +1,13 @@ +package de.hdm_stuttgart.mi.sda2.account; + +import org.apache.log4j.Logger; + +/** + * Hello world! + * + */ +public class Driver { + private static Logger log = Logger.getLogger(Driver.class); + + +} diff --git a/Sda2/P/account/src/main/java/de/hdm_stuttgart/mi/sda2/account/MainGUI.java b/Sda2/P/account/src/main/java/de/hdm_stuttgart/mi/sda2/account/MainGUI.java new file mode 100644 index 0000000000000000000000000000000000000000..d136b70a423b04f62ba87cf3d3b4e74c41b6efa6 --- /dev/null +++ b/Sda2/P/account/src/main/java/de/hdm_stuttgart/mi/sda2/account/MainGUI.java @@ -0,0 +1,86 @@ +package de.hdm_stuttgart.mi.sda2.account; + +import javafx.application.Application; +import javafx.geometry.Insets; +import javafx.geometry.Pos; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.layout.GridPane; +import javafx.scene.text.Font; +import javafx.scene.text.FontWeight; +import javafx.scene.text.Text; +import javafx.stage.Stage; +import de.hdm_stuttgart.mi.sda2.account.gui.NumberField; + +public class MainGUI extends Application { + + public static void main( String[] args ) { + launch(args); + } + public MainGUI() { + + initEditor(); + srcAccountNoField.textProperty().addListener(event -> amountField.setDisable(false)); + + amountField.textProperty().addListener(event -> { + srcAccountNoField.setDisable(true); + destAccountNoField.setDisable(false); + }); + destAccountNoField.textProperty().addListener(event -> { + amountField.setDisable(true); + commitBtn.setDisable(false); + }); + + commitBtn.setOnAction(event-> initEditor()); + } + + final NumberField + srcAccountNoField = new NumberField() + ,amountField = new NumberField() + ,destAccountNoField = new NumberField(); + + final Button commitBtn = new Button("Commit transaction"); + + @Override + public void start(final Stage primaryStage) { + primaryStage.setTitle("Account transfer!"); + + final GridPane grid = new GridPane(); + grid.setAlignment(Pos.CENTER); + grid.setHgap(10); + grid.setVgap(10); + grid.setPadding(new Insets(25, 25, 25, 25)); + + int currentRowIndex = 0; + final Text scenetitle = new Text("Account transfer");//rowIndex == 0 + scenetitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20)); + grid.add(scenetitle, 0, currentRowIndex, 2, 1); + + currentRowIndex++; + grid.add(new Label("Source account:"), 0, currentRowIndex); + grid.add(srcAccountNoField, 1, currentRowIndex); + + currentRowIndex++; + grid.add(new Label("Amount:"), 0, currentRowIndex); + grid.add(amountField, 1, currentRowIndex); + + currentRowIndex++; + grid.add(new Label("Destination account:"), 0, currentRowIndex); + grid.add(destAccountNoField, 1, currentRowIndex); + + currentRowIndex++; + grid.add(commitBtn, 1, currentRowIndex); + + Scene scene = new Scene(grid, 300, 250); + primaryStage.setScene(scene); + primaryStage.show(); + } + + private void initEditor() { + srcAccountNoField.setDisable(false); + amountField.setDisable(true); + destAccountNoField.setDisable(true); + commitBtn.setDisable(true); + } +} diff --git a/Sda2/P/account/src/main/java/de/hdm_stuttgart/mi/sda2/account/gui/NumberField.java b/Sda2/P/account/src/main/java/de/hdm_stuttgart/mi/sda2/account/gui/NumberField.java new file mode 100644 index 0000000000000000000000000000000000000000..fdbc928b08b9f32197ed2ef6e8413b41feca0b29 --- /dev/null +++ b/Sda2/P/account/src/main/java/de/hdm_stuttgart/mi/sda2/account/gui/NumberField.java @@ -0,0 +1,37 @@ +package de.hdm_stuttgart.mi.sda2.account.gui; + +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.scene.control.TextField; + +public class NumberField extends TextField { + + int value = 0; + + public NumberField() { + + setText("0"); + textProperty().addListener(new ChangeListener<String>() { + + @Override + public void changed(ObservableValue<? extends String> observable, + String oldValue, String newValue) { + switch (newValue) { + case "": + case "-": + return; + } + + try { + value = Integer.parseInt(newValue); + } catch (NumberFormatException e) { + setText(oldValue); + } + } + }); + } + + int getValue() { + return value; + } +} \ No newline at end of file diff --git a/Sda2/P/account/src/main/resources/log4j.properties b/Sda2/P/account/src/main/resources/log4j.properties new file mode 100644 index 0000000000000000000000000000000000000000..a81103b6e4443b267790f46db3b8f2930af696e3 --- /dev/null +++ b/Sda2/P/account/src/main/resources/log4j.properties @@ -0,0 +1,15 @@ +#Set root logger level to DEBUG and its only appender to A1. +log4j.rootLogger=DEBUG, A1 + +# A1 is set to be a ConsoleAppender. +log4j.appender.A1=org.apache.log4j.ConsoleAppender + +# A1 uses PatternLayout comforting Eclipse's debugger. +log4j.appender.A1.layout=org.apache.log4j.PatternLayout +log4j.appender.A1.layout.ConversionPattern=%p: %m at %c.%M(%C{1}.java:%L)%n + +# Activate per-class or package logging rules if required. For example +# reducing logging to INFO level for class de.hdm-stuttgart.mi.sda2.account.App +# can be achieved by un-commenting the following line: + +#log4j.logger.de.hdm-stuttgart.mi.sda2.account.App.parse.Group=INFO diff --git a/Sda2/P/account/src/test/java/de/hdm_stuttgart/mi/sda2/account/AppTest.java b/Sda2/P/account/src/test/java/de/hdm_stuttgart/mi/sda2/account/AppTest.java new file mode 100644 index 0000000000000000000000000000000000000000..8ceb561cfd85e7fc08c781f7418b051ee0d60275 --- /dev/null +++ b/Sda2/P/account/src/test/java/de/hdm_stuttgart/mi/sda2/account/AppTest.java @@ -0,0 +1,14 @@ +package de.hdm_stuttgart.mi.sda2.account; + +import org.junit.Assert; +import org.junit.Test; + +/** + * Unit test for simple App. + */ +public class AppTest { + @Test + public void testApp() { + Assert.assertTrue( true ); + } +}