Skip to content

Commit 3eaa64a

Browse files
committed
Fix: Module name and minor issues
1 parent 0457325 commit 3eaa64a

File tree

4 files changed

+65
-63
lines changed

4 files changed

+65
-63
lines changed

.project

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<projectDescription>
3-
<name>noor.calculator</name>
3+
<name>guiCalculator</name>
44
<comment></comment>
55
<projects>
66
</projects>

pom.xml

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2-
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
2+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>com.zynotic.studios</groupId>
5-
<artifactId>noor.calculator</artifactId>
5+
<artifactId>guiCalculator</artifactId>
6+
<name>GUI_Calculator</name>
7+
<url>https://github.com/mrasadatik/basic-java-gui-calculator.git</url>
68
<version>0.0.1</version>
79
<properties>
810
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
9-
<maven.compiler.source>11</maven.compiler.source>
10-
<maven.compiler.target>11</maven.compiler.target>
11+
<maven.compiler.source>14</maven.compiler.source>
12+
<maven.compiler.target>14</maven.compiler.target>
1113
</properties>
1214
<dependencies>
1315
<dependency>
@@ -28,7 +30,9 @@
2830
<artifactId>maven-compiler-plugin</artifactId>
2931
<version>3.8.0</version>
3032
<configuration>
31-
<release>11</release>
33+
<release>14</release>
34+
<source>14</source>
35+
<target>14</target>
3236
</configuration>
3337
</plugin>
3438
<plugin>
@@ -41,7 +45,7 @@
4145
<!-- Usage: mvn clean javafx:run -->
4246
<id>default-cli</id>
4347
<configuration>
44-
<mainClass>com.zynotic.studios.noor.calculator.App</mainClass>
48+
<mainClass>GUI_Calculator/com.zynotic.studios.guiCalculator.App</mainClass>
4549
</configuration>
4650
</execution>
4751
<execution>
@@ -52,7 +56,7 @@
5256
<options>
5357
<option>-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=localhost:8000</option>
5458
</options>
55-
<mainClass>com.zynotic.studios.noor.calculator.App</mainClass>
59+
<mainClass>GUI_Calculator/com.zynotic.studios.guiCalculator.App</mainClass>
5660
</configuration>
5761
</execution>
5862
<execution>
@@ -62,7 +66,7 @@
6266
<options>
6367
<option>-agentlib:jdwp=transport=dt_socket,server=n,address=${jpda.address}</option>
6468
</options>
65-
<mainClass>com.zynotic.studios.noor.calculator.App</mainClass>
69+
<mainClass>GUI_Calculator/com.zynotic.studios.guiCalculator.App</mainClass>
6670
</configuration>
6771
</execution>
6872
</executions>

src/main/java/com/zynotic/studios/noor/calculator/App.java renamed to src/main/java/com/zynotic/studios/guiCalculator/App.java

Lines changed: 50 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.zynotic.studios.noor.calculator;
1+
package com.zynotic.studios.guiCalculator;
22

33
import javafx.util.Duration;
44

@@ -8,8 +8,6 @@
88
import javafx.animation.PauseTransition;
99
import javafx.application.Application;
1010
import javafx.application.Platform;
11-
import javafx.event.ActionEvent;
12-
import javafx.event.EventHandler;
1311
import javafx.geometry.Insets;
1412
import javafx.geometry.Pos;
1513
import javafx.scene.Scene;
@@ -23,13 +21,14 @@
2321
import javafx.stage.Stage;
2422

2523
public class App extends Application {
26-
24+
2725
Font sevenSegmentFont;
2826

2927
private TextField displayField;
3028
private double firstNumber = 0;
3129
private String operator = "";
3230
private boolean startNewNumber = true;
31+
private boolean errorOccurred = false;
3332

3433
public static void main(String[] args) {
3534
launch(args);
@@ -38,9 +37,9 @@ public static void main(String[] args) {
3837
@SuppressWarnings("exports")
3938
@Override
4039
public void start(Stage primaryStage) {
41-
Application.setUserAgentStylesheet(new PrimerLight().getUserAgentStylesheet());
42-
43-
sevenSegmentFont = Font.loadFont(getClass().getResource("/assets/fonts/seven_segment.ttf").toExternalForm(), 30);
40+
Application.setUserAgentStylesheet(new PrimerLight().getUserAgentStylesheet());
41+
42+
sevenSegmentFont = Font.loadFont(Objects.requireNonNull(getClass().getResource("/assets/fonts/seven_segment.ttf")).toExternalForm(), 30);
4443

4544
if (sevenSegmentFont == null) {
4645
System.out.println("Font could not be loaded.");
@@ -103,12 +102,12 @@ private GridPane createButtonGrid() {
103102

104103
Button button0 = createButton("0", "#426573", "white");
105104
Button buttonDecimal = createButton(".", "#426573", "white");
106-
Button buttonDelete = createButton("Del", "#426573", "#fff");
105+
Button buttonDelete = createButton("Del", "#426573", "white");
107106
Button buttonAdd = createButton("+", "#b3c2c2", "black");
108107

109108
Button buttonOff = createButton("OFF", "#ce0d08", "white");
110109
Button buttonClear = createButton("C", "#ed6971", "white");
111-
Button buttonEquals = createButton("=", "#7eb3e5", "#fff");
110+
Button buttonEquals = createButton("=", "#7eb3e5", "white");
112111
Button buttonSqrt = createButton("√", "#b3c2c2", "black");
113112

114113
grid.add(button7, 0, 0);
@@ -150,34 +149,19 @@ private Button createButton(String label, String bgColor, String color) {
150149
}
151150

152151
private void buttonClicked(String label, Button button) {
152+
if (errorOccurred) {
153+
clearDisplay();
154+
}
155+
153156
switch (label) {
154-
case "+":
155-
case "-":
156-
case "×":
157-
case "÷":
158-
handleOperator(label);
159-
break;
160-
case "=":
161-
handleEquals();
162-
break;
163-
case ".":
164-
handleDecimalPoint();
165-
break;
166-
case "√":
167-
handleSquareRoot();
168-
break;
169-
case "Del":
170-
handleDelete();
171-
break;
172-
case "C":
173-
clearDisplay();
174-
break;
175-
case "OFF":
176-
displayOff(button);
177-
break;
178-
default: // numbers
179-
handleNumber(label);
180-
break;
157+
case "+", "-", "×", "÷" -> handleOperator(label);
158+
case "=" -> handleEquals();
159+
case "." -> handleDecimalPoint();
160+
case "√" -> handleSquareRoot();
161+
case "Del" -> handleDelete();
162+
case "C" -> clearDisplay();
163+
case "OFF" -> displayOff(button);
164+
default -> handleNumber(label);
181165
}
182166
}
183167

@@ -187,11 +171,14 @@ private void handleOperator(String label) {
187171
}
188172
firstNumber = Double.parseDouble(displayField.getText());
189173
operator = label;
190-
displayField.setText(firstNumber + " " + (operator == "÷" ? "/" : operator));
174+
displayField.setText(firstNumber + " " + (Objects.equals(operator, "÷") ? "/" : operator));
191175
startNewNumber = true;
192176
}
193177

194178
private void handleEquals() {
179+
if (operator.isEmpty()) {
180+
return; // No operation to perform
181+
}
195182
double secondNumber = Double.parseDouble(displayField.getText().replace(firstNumber + " " + operator + " ", ""));
196183
double result = 0;
197184
switch (operator) {
@@ -209,6 +196,7 @@ private void handleEquals() {
209196
result = firstNumber / secondNumber;
210197
} else {
211198
displayField.setText("Error");
199+
errorOccurred = true;
212200
return;
213201
}
214202
break;
@@ -219,13 +207,26 @@ private void handleEquals() {
219207
}
220208

221209
private void handleSquareRoot() {
222-
double number = Double.parseDouble(displayField.getText());
223-
if (number >= 0) {
224-
double result = Math.sqrt(number);
225-
displayField.setText(String.valueOf(result));
226-
startNewNumber = true;
227-
} else {
210+
String text = displayField.getText();
211+
if (text.isEmpty()) {
212+
displayField.setText("Error");
213+
errorOccurred = true;
214+
return;
215+
}
216+
217+
try {
218+
double number = Double.parseDouble(text);
219+
if (number >= 0) {
220+
double result = Math.sqrt(number);
221+
displayField.setText(String.valueOf(result));
222+
startNewNumber = true;
223+
} else {
224+
displayField.setText("Error");
225+
errorOccurred = true;
226+
}
227+
} catch (NumberFormatException e) {
228228
displayField.setText("Error");
229+
errorOccurred = true;
229230
}
230231
}
231232

@@ -246,7 +247,7 @@ private void handleNumber(String label) {
246247

247248
private void handleDelete() {
248249
String text = displayField.getText();
249-
if (text.length() > 0) {
250+
if (!text.isEmpty()) {
250251
displayField.setText(text.substring(0, text.length() - 1));
251252
}
252253
}
@@ -255,21 +256,18 @@ private void clearDisplay() {
255256
displayField.setText("");
256257
operator = "";
257258
startNewNumber = true;
259+
errorOccurred = false;
258260
}
259261

260262
private void displayOff(Button button) {
261263
displayField.setText("Are you Sure?");
262264
button.setOnAction(
263-
new EventHandler <ActionEvent> () {
265+
actionEvent -> {
266+
displayField.setText("Ok Fine! BYE");
264267

265-
@Override
266-
public void handle(ActionEvent actionEvent) {
267-
displayField.setText("Ok Fine! BYE");
268-
269-
PauseTransition delay = new PauseTransition(Duration.seconds(1));
268+
PauseTransition delay = new PauseTransition(Duration.seconds(1));
270269
delay.setOnFinished(event -> Platform.exit());
271270
delay.play();
272-
}
273-
});
271+
});
274272
}
275273
}

src/main/java/module-info.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
module com.zynotic.studios.noor.calculator {
1+
module GUI_Calculator {
22
requires javafx.controls;
33
requires javafx.graphics;
44
requires atlantafx.base;
55

6-
exports com.zynotic.studios.noor.calculator;
6+
exports com.zynotic.studios.guiCalculator;
77
}

0 commit comments

Comments
 (0)