diff --git a/pom.xml b/pom.xml
index 2b4db6d..9f82b77 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
4.0.0
tdt4100-v2021
- project
+ banana-editor
1.0.0
UTF-8
@@ -99,9 +99,6 @@
@{argLine} --enable-preview
1
true
-
diff --git a/src/main/java/app/Main.java b/src/main/java/app/Main.java
index f342938..0c26d03 100644
--- a/src/main/java/app/Main.java
+++ b/src/main/java/app/Main.java
@@ -37,11 +37,19 @@ public class Main extends Application {
window.getIcons().add(new Image(getClass().getResourceAsStream(ICON_PATH)));
}
+ /**
+ * Loads all FXML documents of the main UI and initializes all correlated subcontrollers
+ * @throws IOException
+ */
private void loadFXML() throws IOException {
+ // TODO: Error handle this function.
this.fxmlLoader = new FXMLLoader(getClass().getResource("/fxml/Main.fxml"));
this.fxmlRoot = fxmlLoader.load();
}
+ /**
+ * Generates a scene for the window, and adds it to {@link Model}
+ */
private void createScene() {
this.scene = new Scene(fxmlRoot);
Model.setScene(scene);
diff --git a/src/main/java/app/MainController.java b/src/main/java/app/MainController.java
index facfb25..d80c36b 100644
--- a/src/main/java/app/MainController.java
+++ b/src/main/java/app/MainController.java
@@ -46,31 +46,47 @@ public class MainController implements Initializable {
}
/**
- * Get the global eventbus.
+ * Get the global eventbus
*
- * @return The eventbus
+ * @return The EventBus object
*/
public EventBus getEventBus() {
return this.eventBus;
}
+ /**
+ * Get the global Host Services API
+ *
+ * @return The JavaFX HostServices object
+ * @see #setHostServices(HostServices)
+ */
public HostServices getHostServices() {
return hostServices;
}
+ /**
+ * Set a reference to the global Host Services API
+ * @param hostServices The JavaFX HostServices object
+ * @see #getHostServices()
+ */
public void setHostServices(HostServices hostServices) {
this.hostServices = hostServices;
}
+ /**
+ * Replace a CSS file in a specific location in the application CSS array
+ * @param position The position of the CSS file to replace
+ * @param cssPath The path in resources to the new CSS file
+ */
private void setCSSAt(int position, String cssPath) {
+ //TODO: Error check that position in range 0 to 1
String nextStyleSheet = getClass().getResource(cssPath).toExternalForm();
Model.getScene().getStylesheets().set(position, nextStyleSheet);
}
/**
- * Change the CSS according to which language is being used.
- *
+ * Change the CSS according to which language is being used
* @param event
*/
@Subscribe
@@ -78,19 +94,26 @@ public class MainController implements Initializable {
this.setCSSAt(1, "/styling/languages/" + event.getLanguage().toLowerCase() + ".css");
}
+ /**
+ * Change the CSS according to which theme the user chooses
+ * @param event
+ */
@Subscribe
private void handle(ThemeChangedEvent event) {
this.setCSSAt(0, "/styling/themes/" + event.getTheme().toLowerCase().replace(" ", "-") + ".css");
}
+ /**
+ * Open a link in the browser.
+ * @param event
+ */
@Subscribe
private void handle(OpenLinkInBrowserEvent event) {
this.getHostServices().showDocument(event.getLink());
}
/**
- * Handle an exit request for the whole program.
- *
+ * Handle an exit request for the whole program
* @param event
*/
@Subscribe
diff --git a/src/main/java/app/controllers/ModelineController.java b/src/main/java/app/controllers/ModelineController.java
index f990196..c636cd5 100644
--- a/src/main/java/app/controllers/ModelineController.java
+++ b/src/main/java/app/controllers/ModelineController.java
@@ -53,7 +53,7 @@ public class ModelineController implements Initializable, Controller {
*/
@Subscribe
private void handle(EditorChangedEvent event) {
- this.setColumnRow(event.getColumn(), event.getLineNumber());
+ this.setColumnRow(event.getColumn(), event.getLine());
}
/**
diff --git a/src/main/java/app/events/CopyEvent.java b/src/main/java/app/events/CopyEvent.java
index 1a33b4e..11f537f 100644
--- a/src/main/java/app/events/CopyEvent.java
+++ b/src/main/java/app/events/CopyEvent.java
@@ -1,5 +1,8 @@
package app.events;
+/**
+ * Event signalizing that something is being copied to the clipboard in an arbitrary place in the UI
+ */
public class CopyEvent extends Event {
}
diff --git a/src/main/java/app/events/CutEvent.java b/src/main/java/app/events/CutEvent.java
index b2c6309..4059019 100644
--- a/src/main/java/app/events/CutEvent.java
+++ b/src/main/java/app/events/CutEvent.java
@@ -1,5 +1,8 @@
package app.events;
+/**
+ * Event signalizing that something is being cut to the clipboard in an arbitrary place in the UI
+ */
public class CutEvent extends Event {
}
diff --git a/src/main/java/app/events/EditorChangedEvent.java b/src/main/java/app/events/EditorChangedEvent.java
index 3bae935..d9bb43d 100644
--- a/src/main/java/app/events/EditorChangedEvent.java
+++ b/src/main/java/app/events/EditorChangedEvent.java
@@ -1,19 +1,33 @@
package app.events;
+/**
+ * Event signalizing that the content or the cursor state in the editor has been modified
+ */
public class EditorChangedEvent extends Event {
- private int lineNumber;
+ private int line;
private int column;
- public EditorChangedEvent(int lineNumber, int column) {
- this.lineNumber = lineNumber;
+/**
+ * Event signalizing that the content or the cursor state in the editor has been modified
+ * @param line The line number of the cursor
+ * @param column The column number of the cursor
+ */
+ public EditorChangedEvent(int line, int column) {
+ this.line = line;
this.column = column;
}
- public int getLineNumber() {
- return this.lineNumber;
+ /**
+ * @return The line number of the cursor
+ */
+ public int getLine() {
+ return this.line;
}
+ /**
+ * @return The column number of the cursor
+ */
public int getColumn() {
return column;
}
diff --git a/src/main/java/app/events/Event.java b/src/main/java/app/events/Event.java
index ebec937..2438df1 100644
--- a/src/main/java/app/events/Event.java
+++ b/src/main/java/app/events/Event.java
@@ -1,3 +1,6 @@
package app.events;
-class Event {}
+/**
+ * Base class for any type of event of the eventbus
+ */
+abstract class Event {}
diff --git a/src/main/java/app/events/ExitApplicationEvent.java b/src/main/java/app/events/ExitApplicationEvent.java
index ed6e52f..57a628a 100644
--- a/src/main/java/app/events/ExitApplicationEvent.java
+++ b/src/main/java/app/events/ExitApplicationEvent.java
@@ -1,5 +1,8 @@
package app.events;
+/**
+ * Event signalizing a shutdown request for the whole applicaton
+ */
public class ExitApplicationEvent extends Event {
}
diff --git a/src/main/java/app/events/FileSaveStateChangedEvent.java b/src/main/java/app/events/FileSaveStateChangedEvent.java
index 6a3861b..75ab680 100644
--- a/src/main/java/app/events/FileSaveStateChangedEvent.java
+++ b/src/main/java/app/events/FileSaveStateChangedEvent.java
@@ -2,15 +2,25 @@ package app.events;
import app.model.Model;
+/**
+ * Event signalizing that the current file either has been modified or saved
+ */
public class FileSaveStateChangedEvent extends Event {
private boolean isSaved;
+ /**
+ * Event signalizing that the current file either has been modified or saved
+ * @param isSaved Whether or not the file has been modified or saved
+ */
public FileSaveStateChangedEvent(boolean isSaved) {
this.isSaved = isSaved;
Model.setFileIsSaved(isSaved);
}
+ /**
+ * @return Whether or not the file has been modified or saved
+ */
public boolean getIsSaved() {
return this.isSaved;
}
diff --git a/src/main/java/app/events/FileSelectedEvent.java b/src/main/java/app/events/FileSelectedEvent.java
index 6328ce3..052b187 100644
--- a/src/main/java/app/events/FileSelectedEvent.java
+++ b/src/main/java/app/events/FileSelectedEvent.java
@@ -1,15 +1,29 @@
package app.events;
-public class FileSelectedEvent {
+/**
+ * Event signalizing that a file was selected in the filetree.
+ *
+ * Not to be confused with {@link OpenFileEvent}
+ */
+public class FileSelectedEvent extends Event {
- private String path;
+ private String path;
- public FileSelectedEvent(String path) {
- this.path = path;
- }
+ /**
+ * Event signalizing that a file was selected in the filetree.
+ *
+ * Not to be confused with {@link OpenFileEvent}
+ * @param path The path of the selected file
+ */
+ public FileSelectedEvent(String path) {
+ this.path = path;
+ }
- public String getPath() {
- return this.path;
- }
+ /**
+ * @return The path of the selected file
+ */
+ public String getPath() {
+ return this.path;
+ }
}
diff --git a/src/main/java/app/events/LanguageChangedEvent.java b/src/main/java/app/events/LanguageChangedEvent.java
index 546687a..42709b1 100644
--- a/src/main/java/app/events/LanguageChangedEvent.java
+++ b/src/main/java/app/events/LanguageChangedEvent.java
@@ -1,13 +1,19 @@
package app.events;
-import app.model.languages.Java;
-import app.model.languages.Markdown;
+import app.model.languages.*;
import app.model.Model;
+/**
+ * Event signalizing that the programming language of the editor has changed
+ */
public class LanguageChangedEvent extends Event {
private String language;
+ /**
+ * Event signalizing that the programming language of the editor has changed
+ * @param language The name of the language, capitalized
+ */
public LanguageChangedEvent(String language) {
this.language = language;
@@ -26,6 +32,9 @@ public class LanguageChangedEvent extends Event {
}
}
+ /**
+ * @return The name of the language
+ */
public String getLanguage() {
return language;
}
diff --git a/src/main/java/app/events/OpenFileEvent.java b/src/main/java/app/events/OpenFileEvent.java
index 86983c6..8227135 100644
--- a/src/main/java/app/events/OpenFileEvent.java
+++ b/src/main/java/app/events/OpenFileEvent.java
@@ -1,13 +1,25 @@
package app.events;
+/**
+ * Event signalizing that a file outside the current project is supposed to be opened in the editor.
+ *
+ * Not to be confused with {@link FileSelectedEvent}
+ */
public class OpenFileEvent extends Event {
private String path;
+ /**
+ * Event signalizing that a file outside the current project is supposed to be opened in the editor.
+ * @param path The path of the file to be opened
+ */
public OpenFileEvent(String path) {
this.path = path;
}
+ /**
+ * @return The path of the file to be opened
+ */
public String getPath() {
return this.path;
}
diff --git a/src/main/java/app/events/OpenLinkInBrowserEvent.java b/src/main/java/app/events/OpenLinkInBrowserEvent.java
index 07fb855..ca01577 100644
--- a/src/main/java/app/events/OpenLinkInBrowserEvent.java
+++ b/src/main/java/app/events/OpenLinkInBrowserEvent.java
@@ -1,13 +1,23 @@
package app.events;
+/**
+ * Event signalizing that the application is going to open a link in an external browser
+ */
public class OpenLinkInBrowserEvent extends Event {
private String link;
+ /**
+ * Event signalizing that the application is going to open a link in an external browser
+ * @param link The link to open
+ */
public OpenLinkInBrowserEvent(String link) {
this.link = link;
}
+ /**
+ * @return The link to open
+ */
public String getLink() {
return link;
}
diff --git a/src/main/java/app/events/OpenProjectEvent.java b/src/main/java/app/events/OpenProjectEvent.java
index 31bbbf7..9701e84 100644
--- a/src/main/java/app/events/OpenProjectEvent.java
+++ b/src/main/java/app/events/OpenProjectEvent.java
@@ -1,13 +1,23 @@
package app.events;
+/**
+ * Event signalizing that a folder is supposed to be opened in the filetree.
+ */
public class OpenProjectEvent extends Event {
private String path;
+ /**
+ * Event signalizing that a folder is supposed to be opened in the filetree.
+ * @param path The path of the folder to be opened
+ */
public OpenProjectEvent(String path) {
this.path = path;
}
+ /**
+ * @return The path of the folder to be opened
+ */
public String getPath() {
return this.path;
}
diff --git a/src/main/java/app/events/PasteEvent.java b/src/main/java/app/events/PasteEvent.java
index ae904b0..1cf1f98 100644
--- a/src/main/java/app/events/PasteEvent.java
+++ b/src/main/java/app/events/PasteEvent.java
@@ -1,5 +1,8 @@
package app.events;
+/**
+ * Event signalizing that something is being pasted from the clipboard in an arbitrary place in the UI
+ */
public class PasteEvent extends Event {
}
diff --git a/src/main/java/app/events/RedoEvent.java b/src/main/java/app/events/RedoEvent.java
index 90f15c8..3c584f9 100644
--- a/src/main/java/app/events/RedoEvent.java
+++ b/src/main/java/app/events/RedoEvent.java
@@ -1,5 +1,8 @@
package app.events;
+/**
+ * Event signalizing that an action is being undone in an arbitrary place in the UI
+ */
public class RedoEvent extends Event {
}
diff --git a/src/main/java/app/events/ThemeChangedEvent.java b/src/main/java/app/events/ThemeChangedEvent.java
index b3452ee..ef66e6e 100644
--- a/src/main/java/app/events/ThemeChangedEvent.java
+++ b/src/main/java/app/events/ThemeChangedEvent.java
@@ -1,13 +1,23 @@
package app.events;
-public class ThemeChangedEvent {
+/**
+ * Event signalizing that the theme of the applicaton has been changed
+ */
+public class ThemeChangedEvent extends Event {
private String theme;
+ /**
+ * Event signalizing that the theme of the applicaton has been changed
+ * @param theme The name of the theme
+ */
public ThemeChangedEvent(String theme) {
this.theme = theme;
}
+ /**
+ * @return The name of the theme
+ */
public String getTheme() {
return theme;
}
diff --git a/src/main/java/app/events/ToggleCommentEvent.java b/src/main/java/app/events/ToggleCommentEvent.java
index 3278015..073a5e7 100644
--- a/src/main/java/app/events/ToggleCommentEvent.java
+++ b/src/main/java/app/events/ToggleCommentEvent.java
@@ -1,5 +1,8 @@
package app.events;
+/**
+ * Event signalizing that the editor is going to toggle a language specific comment of a line or selecton
+ */
public class ToggleCommentEvent extends Event {
}
diff --git a/src/main/java/app/events/ToggleWrapTextEvent.java b/src/main/java/app/events/ToggleWrapTextEvent.java
index 6204100..28a1842 100644
--- a/src/main/java/app/events/ToggleWrapTextEvent.java
+++ b/src/main/java/app/events/ToggleWrapTextEvent.java
@@ -1,13 +1,23 @@
package app.events;
+/**
+ * Event signalizing that the editor wrap text function was toggled on or off
+ */
public class ToggleWrapTextEvent extends Event {
private boolean isWrapped;
+ /**
+ * Event signalizing that the editor wraptext function was toggled on or off
+ * @param isWrapped Whether or not wraptext was turned on or off
+ */
public ToggleWrapTextEvent(boolean isWrapped) {
this.isWrapped = isWrapped;
}
+ /**
+ * @return Whether or not wraptext was turned on or off
+ */
public boolean getIsWrapped() {
return this.isWrapped;
}
diff --git a/src/main/java/app/events/UndoEvent.java b/src/main/java/app/events/UndoEvent.java
index e7fab08..b8aee97 100644
--- a/src/main/java/app/events/UndoEvent.java
+++ b/src/main/java/app/events/UndoEvent.java
@@ -1,5 +1,8 @@
package app.events;
+/**
+ * Event signalizing that an action is being undone in an arbitrary place in the UI
+ */
public class UndoEvent extends Event {
}
diff --git a/src/main/java/app/model/Model.java b/src/main/java/app/model/Model.java
index 1f0a6ce..92e1d9f 100644
--- a/src/main/java/app/model/Model.java
+++ b/src/main/java/app/model/Model.java
@@ -8,7 +8,7 @@ import javafx.scene.Scene;
* Data model of the application.
*
* Contains a static reference to state that has to be accessed by multiple
- * pieces in the application, including the primary scene.
+ * pieces in the application, including the state like primary scene.
*/
public class Model {
private static boolean fileIsSaved;
diff --git a/src/main/java/app/service/LanguageOperations.java b/src/main/java/app/service/LanguageOperations.java
index 10942b4..e6496ce 100644
--- a/src/main/java/app/service/LanguageOperations.java
+++ b/src/main/java/app/service/LanguageOperations.java
@@ -11,14 +11,28 @@ import app.model.ProgrammingLanguage;
public class LanguageOperations {
- private static String getMatch(Matcher m, Collection kws) {
- return kws
+ /**
+ * Use a matcher to find the styleclass of the next match
+ * from several available styleclasses.
+ * @param m The matcher
+ * @param styleClasses Collection of styleclasses
+ * @return The styleclass of the next match
+ */
+ private static String getMatch(Matcher m, Collection styleClasses) {
+ return styleClasses
.stream()
.filter(keyword -> m.group(keyword) != null)
.findFirst()
.orElse(""); // This is not possible, but is needed to convert Optional to String
}
+ /**
+ * Calculate syntax highlighting data for a code area
+ * @param text The text to highlight
+ * @param language The language object to use for highlighting
+ * @return The syntax highlighting data
+ * @see app.controllers.EditorController#setHighlighting(StyleSpans) EditorController.setHighlighting()
+ */
public static StyleSpans>
syntaxHighlight(String text, ProgrammingLanguage language) {
Matcher matcher = language.getPattern().matcher(text);
diff --git a/src/main/java/service/FileOperations.java b/src/main/java/service/FileOperations.java
deleted file mode 100644
index 8472d57..0000000
--- a/src/main/java/service/FileOperations.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package service;
-
-public class FileOperations {
-
-}