diff --git a/src/fetch/commands/SpawnWidget.java b/src/fetch/commands/SpawnWidget.java new file mode 100644 index 0000000..9e2938d --- /dev/null +++ b/src/fetch/commands/SpawnWidget.java @@ -0,0 +1,44 @@ +package fetch.commands; + +import fetch.widgets.Widget; +import javafx.scene.Node; + +public class SpawnWidget extends Command { + private int x, y; + private Widget widget; + + public SpawnWidget(int x, int y, Widget widget) { + setX(x); + setY(y); + setWidget(widget); + } + + @Override + public void run() { + + } + + public int getX() { + return x; + } + + public void setX(int x) { + this.x = x; + } + + public int getY() { + return y; + } + + public void setY(int y) { + this.y = y; + } + + public Widget getWidget() { + return widget; + } + + public void setWidget(Widget widget) { + this.widget = widget; + } +} \ No newline at end of file diff --git a/src/fetch/controller/App.java b/src/fetch/controller/App.java index d0e3aed..181a24d 100644 --- a/src/fetch/controller/App.java +++ b/src/fetch/controller/App.java @@ -6,20 +6,20 @@ import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.input.KeyEvent; import javafx.scene.layout.HBox; +import javafx.scene.paint.Color; import javafx.stage.Stage; public final class App extends Application { public static final HBox root = new HBox(); public static final Scene scene = new Scene(root); - @Override public void init() { - // Put more init stuff here if need be. + scene.setFill(Color.BLACK); +// scene.getStylesheets().add(""); System.out.println("Initialization Completed"); } - @Override public void start(Stage stage) { // There's got to be a cleaner way.. @@ -30,6 +30,4 @@ public final class App extends Application { stage.show(); } - - -} +} \ No newline at end of file diff --git a/src/fetch/events/WidgetAdd.java b/src/fetch/events/WidgetAdd.java index 57c2be9..de525f5 100644 --- a/src/fetch/events/WidgetAdd.java +++ b/src/fetch/events/WidgetAdd.java @@ -1,13 +1,16 @@ package fetch.events; +import java.util.Random; + import fetch.controller.App; +import fetch.widgets.*; + import javafx.event.EventHandler; +import javafx.scene.control.TextArea; import javafx.scene.input.KeyEvent; -import javafx.scene.layout.*; import javafx.scene.input.*; import javafx.scene.Node; -import java.util.Random; /** * UIOP to spawn widgets @@ -19,32 +22,35 @@ import java.util.Random; public class WidgetAdd implements EventHandler { // Find better way of doing this, maybe each widget has x,y associated with it? - // private int yAmount = 0; + private int yAmount = 0; private int xAmount = 0; @Override public void handle(KeyEvent keyEvent) { + // Debug Stuffs + debug(); + System.out.println(keyEvent.getCode().getName()); if (keyEvent.getCode() == KeyCode.P) { // Spawn Widget Right xAmount++; - StackPane sp = new StackPane(); - sp.setStyle( + var terminalWidget = new TerminalWidget(xAmount,yAmount); + terminalWidget.setStyle( String.format("-fx-background-color: rgb(%02d, %02d, %02d);", new Random().nextInt(256), new Random().nextInt(256), new Random().nextInt(256))); - App.root.getChildren().add(sp); + App.root.getChildren().add(terminalWidget); for(Node n : App.root.getChildren()){ - if(n instanceof StackPane){ - ((StackPane)n).setMinSize(App.scene.getWidth() / xAmount, App.scene.getHeight()); + if(n instanceof Widget){ + ((Widget)n).setMinSize(App.scene.getWidth() / xAmount, App.scene.getHeight()); } } } else if (keyEvent.getCode() == KeyCode.U) { // Delete Widget Left App.root.getChildren().remove(App.root.getChildren().size() - 1); xAmount--; for(Node n : App.root.getChildren()){ - if(n instanceof StackPane){ - ((StackPane)n).setMinSize(App.scene.getWidth() /xAmount, App.scene.getHeight()); + if(n instanceof Widget){ + ((Widget)n).setMinSize(App.scene.getWidth() /xAmount, App.scene.getHeight()); } } } else if (keyEvent.getCode() == KeyCode.I) { // Spawn Widget Down @@ -52,6 +58,34 @@ public class WidgetAdd implements EventHandler { } else if (keyEvent.getCode() == KeyCode.O) { // Delete Widget Up } + else if(keyEvent.getCode() == KeyCode.E) { + for(Node n : App.root.getChildren()) { + if(n instanceof Widget) { + Widget w = (Widget) n; + if(w.getHost().isFocused()){ + ((TextArea) ((Widget)n).getHost()).setEditable(true); + } + } + } + } + else if(keyEvent.getCode() == KeyCode.ESCAPE) { + for(Node n : App.root.getChildren()) { + if(n instanceof Widget) { + var w = (Widget) n; + if(w.getHost().isFocused()){ + ((TextArea) ((Widget)n).getHost()).setEditable(false); + } + } + } + } } -} + private void debug(){ + if(xAmount == 5){ + for(Node n: App.root.getChildren()){ + System.out.println(n); + } + } + } + +} \ No newline at end of file diff --git a/src/fetch/widgets/EmptyWidget.java b/src/fetch/widgets/EmptyWidget.java new file mode 100644 index 0000000..e75c2cb --- /dev/null +++ b/src/fetch/widgets/EmptyWidget.java @@ -0,0 +1,17 @@ +package fetch.widgets; + +import javafx.scene.layout.StackPane; + +public class EmptyWidget extends Widget { + + public EmptyWidget(int x, int y) { + super(x, y, new StackPane()); + } + @Override + public String toString() { + return "EmptyWidget{" + + "x=" + getX() + + ", y=" + getY() + + '}'; + } +} \ No newline at end of file diff --git a/src/fetch/widgets/TerminalWidget.java b/src/fetch/widgets/TerminalWidget.java new file mode 100644 index 0000000..6d4cf90 --- /dev/null +++ b/src/fetch/widgets/TerminalWidget.java @@ -0,0 +1,20 @@ +package fetch.widgets; + + +import javafx.scene.control.TextArea; + +public class TerminalWidget extends Widget