diff --git a/.gitignore b/.gitignore
index 037e9ef..c4dc2a0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
.settings/
target/
*.class
+config.yaml
\ No newline at end of file
diff --git a/README.md b/README.md
index df80d3a..e350bd2 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@ Student ID: 19023939
### *Student 2*
```css
Name: Jack Sandford;
-Student ID: ???
+Student ID: 19025303
```
---
@@ -30,4 +30,6 @@ Fletcher:
```
Jack:
+```css
+ ```
---
diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml
new file mode 100644
index 0000000..2f4e2c7
--- /dev/null
+++ b/dependency-reduced-pom.xml
@@ -0,0 +1,44 @@
+
+
+ 4.0.0
+ nz.ac.massey.cs
+ nz.ac.massey.cs.flackpad
+ 0.3.4-SNAPSHOT
+
+
+
+ maven-compiler-plugin
+ 3.8.1
+
+ 16
+ 16
+
+
+
+ maven-shade-plugin
+ 3.2.4
+
+
+ package
+
+ shade
+
+
+
+
+ nz.ac.massey.cs.flackpad.RunApp
+
+
+
+
+
+
+
+
+
+ 16
+ 16
+ 16
+ UTF-8
+
+
diff --git a/pom.xml b/pom.xml
index aa0e1ab..40cf87a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
nz.ac.massey.cs
nz.ac.massey.cs.flackpad
- 0.3.4-SNAPSHOT
+ 0.3.5
16
16
@@ -22,6 +22,11 @@
itextpdf
5.5.13.2
+
+ org.yaml
+ snakeyaml
+ 1.29
+
diff --git a/src/main/java/nz/ac/massey/cs/flackpad/Config.java b/src/main/java/nz/ac/massey/cs/flackpad/Config.java
new file mode 100644
index 0000000..a8c1888
--- /dev/null
+++ b/src/main/java/nz/ac/massey/cs/flackpad/Config.java
@@ -0,0 +1,89 @@
+package nz.ac.massey.cs.flackpad;
+
+import java.awt.Font;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintWriter;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import org.yaml.snakeyaml.DumperOptions;
+import org.yaml.snakeyaml.Yaml;
+
+class Config {
+
+ private Window window;
+ private Map defaults = new LinkedHashMap();
+ private Map config = new LinkedHashMap();
+
+ Config(Window window) {
+ this.window = window;
+
+ loadDefaults();
+ loadConfigFile();
+ }
+
+ private void loadDefaults() {
+ defaults.put("fontFamily", "Consolas");
+ defaults.put("fontStyle", Font.PLAIN);
+ defaults.put("fontSize", 12);
+ }
+
+ void loadConfigFile() {
+ // Read config file
+ Yaml yaml = new Yaml();
+
+ try {
+ InputStream inputStream = new FileInputStream("config.yaml");
+ config = yaml.load(inputStream);
+ inputStream.close();
+ } catch (FileNotFoundException e) {
+ Dialogs.error("Configuration file does not exist, using defaults", window);
+ } catch (IOException e) {
+ Dialogs.error("Something wen't wrong when loading configuration file", window);
+ }
+
+ // Set missing values with defaults
+ for (String key:defaults.keySet()) {
+ if (!config.containsKey(key)) config.put(key, defaults.get(key));
+ }
+
+ // Save config
+ saveConfigFile();
+ }
+
+ void saveConfigFile() {
+ DumperOptions options = new DumperOptions();
+ options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
+ options.setPrettyFlow(true);
+ Yaml yaml = new Yaml(options);
+
+ try {
+ PrintWriter writer = new PrintWriter("config.yaml");
+ yaml.dump(config, writer);
+ writer.flush();
+ writer.close();
+ } catch (IOException e) {
+ Dialogs.error("Something wen't wrong when saving configuration", window);
+ }
+ }
+
+ Font getFont() {
+ try {
+ return new Font((String) config.get("fontFamily"), (int) config.get("fontStyle"), (int) config.get("fontSize"));
+ } catch (Exception e) {
+ Dialogs.error("Something wen't wrong when loading the configured font, using defaults", window);
+ }
+ setFont(new Font((String) defaults.get("fontFamily"), (int) defaults.get("fontStyle"), (int) defaults.get("fontSize")));
+ return getFont();
+ }
+
+ void setFont(Font font) {
+ config.put("fontFamily", font.getFamily());
+ config.put("fontStyle", font.getStyle());
+ config.put("fontSize", font.getSize());
+ }
+
+}
diff --git a/src/main/java/nz/ac/massey/cs/flackpad/TextArea.java b/src/main/java/nz/ac/massey/cs/flackpad/TextArea.java
index 131fec6..af99616 100644
--- a/src/main/java/nz/ac/massey/cs/flackpad/TextArea.java
+++ b/src/main/java/nz/ac/massey/cs/flackpad/TextArea.java
@@ -39,6 +39,12 @@ void addTimeAndDate() {
}
}
+ void setFontWithZoom(Font font) {
+ fontSize = font.getSize();
+ setFont(font);
+ zoom();
+ }
+
//Zoom methods work by changing font size
void zoomIn() {
if (fontPercentage < 1000) {
diff --git a/src/main/java/nz/ac/massey/cs/flackpad/Window.java b/src/main/java/nz/ac/massey/cs/flackpad/Window.java
index 0ccfa03..d5d59b5 100644
--- a/src/main/java/nz/ac/massey/cs/flackpad/Window.java
+++ b/src/main/java/nz/ac/massey/cs/flackpad/Window.java
@@ -17,6 +17,7 @@ class Window extends JFrame {
private String name = "FlackPad";
private JFrame frame;
private WindowListener winListener;
+ private Config config;
private MenuBar menuBar;
private TextArea textArea;
@@ -32,14 +33,11 @@ class Window extends JFrame {
frame = new JFrame(fileName + " - " + name);
// Add icon
-// ImageIcon icon = new ImageIcon("./flackpad.png");
-// System.out.println(icon.getImageLoadStatus());
-// frame.setIconImage(icon.getImage());
frame.setIconImages(List.of(
- new ImageIcon("16x16.png").getImage(),
- new ImageIcon("32x32.png").getImage(),
- new ImageIcon("64x64.png").getImage(),
- new ImageIcon("128x128.png").getImage()));
+ new ImageIcon("icons/16x16.png").getImage(),
+ new ImageIcon("icons/32x32.png").getImage(),
+ new ImageIcon("icons/64x64.png").getImage(),
+ new ImageIcon("icons/128x128.png").getImage()));
// Add window listener
winListener = new WinListener(this);
@@ -61,6 +59,12 @@ class Window extends JFrame {
frame.setSize(1000, 500);
frame.setVisible(true);
frame.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
+
+ // Get config
+ config = new Config(this);
+
+ // Set configuration
+ textArea.setFontWithZoom(config.getFont());
}
void newDoc() {
@@ -85,6 +89,7 @@ void exit() {
if (saveChoice == JOptionPane.YES_OPTION) saved = FileIO.save(this);
if (saved == FileIO.SAVED) {
+ config.saveConfigFile();
frame.dispose();
}
}
@@ -126,7 +131,6 @@ void setFile(File file) {
this.file = file;
fileName = file == null ? "Untitled" : file.getName();
fileMIME = FileIO.getFileMIME(file);
-// System.out.println(fileMIME);
}
String getFileName() {
diff --git a/src/main/resources/config.yaml b/src/main/resources/config.yaml
new file mode 100644
index 0000000..eb60f36
--- /dev/null
+++ b/src/main/resources/config.yaml
@@ -0,0 +1,3 @@
+fontFamily: Consolas
+fontStyle: 0
+fontSize: 12
\ No newline at end of file
diff --git a/src/main/resources/128x128.png b/src/main/resources/icons/128x128.png
similarity index 100%
rename from src/main/resources/128x128.png
rename to src/main/resources/icons/128x128.png
diff --git a/src/main/resources/16x16.png b/src/main/resources/icons/16x16.png
similarity index 100%
rename from src/main/resources/16x16.png
rename to src/main/resources/icons/16x16.png
diff --git a/src/main/resources/32x32.png b/src/main/resources/icons/32x32.png
similarity index 100%
rename from src/main/resources/32x32.png
rename to src/main/resources/icons/32x32.png
diff --git a/src/main/resources/64x64.png b/src/main/resources/icons/64x64.png
similarity index 100%
rename from src/main/resources/64x64.png
rename to src/main/resources/icons/64x64.png