From 0f7610dd529be83fa199225316327e769fc454e9 Mon Sep 17 00:00:00 2001 From: Ivan Olexyn Date: Sun, 12 Apr 2020 00:56:06 +0200 Subject: [PATCH] ui revamp --- src/com/olexyn/ensync/ui/Controller.java | 172 +++++++++++++++-------- 1 file changed, 117 insertions(+), 55 deletions(-) diff --git a/src/com/olexyn/ensync/ui/Controller.java b/src/com/olexyn/ensync/ui/Controller.java index 4263e17..d3c3713 100644 --- a/src/com/olexyn/ensync/ui/Controller.java +++ b/src/com/olexyn/ensync/ui/Controller.java @@ -15,6 +15,7 @@ import javafx.stage.Window; import java.io.File; import java.net.URL; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.ResourceBundle; @@ -24,53 +25,113 @@ import java.util.ResourceBundle; public class Controller implements Initializable { + final static int COLUMN_COUNT = 5; // How many columns should the GridPane have? Adjust if necessary. + final static Text SPACE = new Text(""); // Placeholder + int collection_count = 0; + @Override public void initialize(URL url, ResourceBundle resourceBundle) { + Text end = new Text("end"); + end.setId("end"); Button newCollectionButton = new Button("New Collection"); newCollectionButton.setId("newCollectionButton"); newCollectionButton.setOnAction(event -> { this.newCollection();}); + gridPane.add(end, 0, 0); + List nodeList = new ArrayList<>(gridPane.getChildren()); - TextField addDirectoryTextField = new TextField(); - addDirectoryTextField.setId("addDirectoryTextField"); + List payload = Arrays.asList(new Text(""), new Text(""), new Text(""), new Text(""), newCollectionButton); - Button addDirectoryButton = new Button("Add Directory"); - addDirectoryButton.setId("addDirectoryButton"); - addDirectoryButton.setOnAction(event -> { this.addDirectory();}); - gridPane.add(addDirectoryTextField, 0, 0); - gridPane.add(new Text(""), 1, 0); - gridPane.add(new Text(""), 2, 0); - gridPane.add(new Text(""), 3, 0); - gridPane.add(addDirectoryButton, 4, 0); + insertPayload(nodeList, payload, "", 0); + redraw(gridPane, nodeList); } - private void newCollection(){ - /* - TODO copy old init here, redraw. - */ - } + + private void newCollection() { + + String collectionName = "name" + collection_count++; + + + TextField collectionStateTextField = new TextField(); + collectionStateTextField.setText("STATE"); + collectionStateTextField.setStyle("-fx-text-fill: green"); + collectionStateTextField.setDisable(true); + collectionStateTextField.setId("collectionStateTextField-" + collectionName); + + Button removeCollectionButton = new Button("Remove Collection"); + removeCollectionButton.setId("removeCollectionButton-" + collectionName); + removeCollectionButton.setOnAction(event -> { this.removeCollection(collectionName);}); + + TextField addDirectoryTextField = new TextField(); + addDirectoryTextField.setId("addDirectoryTextField-" + collectionName); + + Button addDirectoryButton = new Button("Add Directory"); + addDirectoryButton.setId("addDirectoryButton-" + collectionName); + addDirectoryButton.setOnAction(event -> { this.addDirectory(collectionName);}); + + + List nodeList = new ArrayList<>(gridPane.getChildren()); + + List payload = new ArrayList<>(); + payload.addAll(Arrays.asList(new Text(""), new Text(""), collectionStateTextField, new Text(""), removeCollectionButton)); + payload.addAll(Arrays.asList(addDirectoryTextField, new Text(""), new Text(""), new Text(""), addDirectoryButton)); + insertPayload(nodeList, payload, "newCollectionButton", -4); + redraw(gridPane, nodeList); + } + + @FXML protected GridPane gridPane; + private void removeCollection(String collectionName) { + List nodeList = new ArrayList<>(gridPane.getChildren()); + + + here : for (Node node : nodeList) { + + if (node.getId() != null && node.getId().equals("removeCollectionButton-" + collectionName)) { + int i = nodeList.indexOf(node) - 4; + while (i fillBlanks() { + List out = new ArrayList<>(); + return out; + } /** * */ - private void addDirectory() { + private void addDirectory(String collectionName) { + // TODO throw error if other collection already contains absollutepath Window stage = gridPane.getScene().getWindow(); final DirectoryChooser directoryChooser = new DirectoryChooser(); @@ -83,14 +144,16 @@ public class Controller implements Initializable { TextField directoryPathTextField = new TextField(); directoryPathTextField.setText(dir.getAbsolutePath()); directoryPathTextField.setDisable(true); + directoryPathTextField.setId("directoryPathTextField-" + dir.getAbsolutePath()); // TODO for now there is only one SyncMap "test". - Main.SYNC.get("test").addDirectory(dir.getAbsolutePath()); + // Main.SYNC.get("test").addDirectory(dir.getAbsolutePath()); TextField directoryStateTextField = new TextField(); directoryStateTextField.setText("STATE"); directoryStateTextField.setStyle("-fx-text-fill: green"); directoryStateTextField.setDisable(true); + directoryStateTextField.setId("directoryStateTextField-" + dir.getAbsolutePath()); Button removeDirectoryButton = new Button("Remove"); removeDirectoryButton.setId("removeDirectoryButton-" + dir.getAbsolutePath()); @@ -98,53 +161,52 @@ public class Controller implements Initializable { List nodeList = new ArrayList<>(gridPane.getChildren()); - insertRow(nodeList, directoryPathTextField, directoryStateTextField, removeDirectoryButton); + List payload = Arrays.asList(directoryPathTextField, new Text(""), directoryStateTextField, new Text(""), removeDirectoryButton); + insertPayload(nodeList, payload, "addDirectoryTextField-" + collectionName, 0); redraw(gridPane, nodeList); } } + /** - * Find the addDirectoryTextField. - * Insert the cells of the new row starting from the last cell. - * This pushes the addDirectoryTextField forward. + * Find the Node with @param id. + * Insert the contents of the @param payload starting from the last. + * This pushes the Node with @param id forward. */ - private void insertRow(List nodeList, TextField path , TextField state, Button button){ + private void insertPayload(List nodeList, List payload, String id, int offset) { for (Node node : nodeList) { - if (node.getId() != null && node.getId().equals("addDirectoryTextField")) { - int i = nodeList.indexOf(node); + if (node.getId() != null && node.getId().equals(id)) { + int i = nodeList.indexOf(node) + offset; - nodeList.add(i, button); - nodeList.add(i, new Text("")); - nodeList.add(i, state); - nodeList.add(i, new Text("")); - nodeList.add(i, path); + for (int j = payload.size() - 1; j >= 0; j--) { + nodeList.add(i, payload.get(j)); + } break; } } } - /** * Clear the gridPane and redraw it with contents of nodeList. */ - private void redraw(GridPane gridPane, List nodeList){ + private void redraw(GridPane gridPane, List nodeList) { gridPane.getChildren().clear(); int col = 0; int row = 0; for (Node node : nodeList) { - - gridPane.add(node, col, row); - col++; - if (nodeList.indexOf(node) % 5 == 4) { + if ((nodeList.indexOf(node) + 0) % COLUMN_COUNT == 0) { row++; col = 0; } + gridPane.add(node, col, row); + col++; + } } @@ -160,7 +222,7 @@ public class Controller implements Initializable { for (Node node : nodeList) { if (node.getId() != null && node.getId().equals(id)) { - int i = nodeList.indexOf(node) - 5; + int i = nodeList.indexOf(node) - 4; for (int j = 0; j < 5; j++) { nodeList.remove(i); } @@ -168,29 +230,15 @@ public class Controller implements Initializable { } } - gridPane.getChildren().clear(); - - int col = 0; - int row = 0; - - for (Node node : nodeList) { - - gridPane.add(node, col, row); - col++; - if (nodeList.indexOf(node) % 5 == 4) { - row++; - col = 0; - } - - } - + redraw(gridPane,nodeList); + /* String path = id.replace("removeButton", ""); - while(true){ - if (Main.flowThread.getState().equals(Thread.State.TIMED_WAITING)){ + while (true) { + if (Main.flowThread.getState().equals(Thread.State.TIMED_WAITING)) { try { Main.flowThread.wait(); - } catch (InterruptedException e){ + } catch (InterruptedException e) { Main.SYNC.get("test").removeDirectory(path); Main.flowThread.notify(); break; @@ -198,8 +246,22 @@ public class Controller implements Initializable { } } + */ + } +} + + class Placeholder extends Text{ + static int count =0; + + Placeholder(String label, String name){ + + super(label); + this.setId("placeholder-"+name+"-"+count++); + + } + }