From 08d517fadf78f8cc6a1e3e0e8c42d9145347c4bd Mon Sep 17 00:00:00 2001 From: Milanya Date: Sun, 15 Mar 2026 02:50:07 +0300 Subject: [PATCH 1/6] commander: merge --- .../hse/java/commander/MainController.java | 141 ++++++++++++++++-- 1 file changed, 128 insertions(+), 13 deletions(-) diff --git a/commander/src/main/java/hse/java/commander/MainController.java b/commander/src/main/java/hse/java/commander/MainController.java index 5de3b66d..8c12e806 100644 --- a/commander/src/main/java/hse/java/commander/MainController.java +++ b/commander/src/main/java/hse/java/commander/MainController.java @@ -3,8 +3,9 @@ import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.ListView; - -import java.nio.file.Path; +import java.lang.Throwable; +import java.nio.file.*; +import java.util.stream.Stream; public class MainController { @@ -14,9 +15,19 @@ public class MainController { @FXML public ListView right; + @FXML + public Button copy; + @FXML public Button move; + @FXML + public Button delete; + + private Path leftPath; + private Path rightPath; + private ListView Panel; + private Path leftDir; private Path rightDir; @@ -24,22 +35,126 @@ public class MainController { public void setInitialDirs(Path leftStart, Path rightStart) { this.leftDir = leftStart; this.rightDir = rightStart; + update(); } public void initialize() { - move.setOnMouseClicked(event -> { + leftPath = Paths.get(System.getProperty("user.dir")); + rightPath = Paths.get(System.getProperty("user.dir")); + Panel = left; + dir(left, leftPath); + dir(right, rightPath); + + left.setOnMouseClicked(e -> { + Panel = left; + if (e.getClickCount() == 2) { + open(left); + } }); - System.out.println(System.getProperty("user.home")); - left.getItems().add("Kek"); - - left.setOnMouseClicked(event -> { - if (event.getClickCount() == 2) { - int index = left.getSelectionModel().getSelectedIndex(); - if (index >= 0) { - left.getItems().set(index, "clicked"); - } + + right.setOnMouseClicked(e -> { + Panel = right; + if (e.getClickCount() == 2) { + open(right); } }); } -} + + private void dir(ListView panel, Path path) { + panel.getItems().clear(); + panel.getItems().add("..."); + try (Stream f = Files.list(path)) { + f.forEach(p -> panel.getItems().add(p.getFileName().toString())); + } catch (Throwable e) {} + } + + private void update() { + dir(left, leftPath); + dir(right, rightPath); + } + + private void open(ListView panel) { + String name = panel.getSelectionModel().getSelectedItem(); + if (name == null) return; + + Path curr = panel == left ? leftPath : rightPath; + + if (name.equals("...")) { + Path par = curr.getParent(); + if (par != null) { + if (panel == left) { + leftPath = par; + } else { + rightPath = par; + } + update(); + } + return; + } + Path next = curr.resolve(name); + if (Files.isDirectory(next)) { + if (panel == left) { + leftPath = next; + } else { + rightPath = next; + } + update(); + } + } + + @FXML + public void copy() { + if (Panel == null) return; + + String name = Panel.getSelectionModel().getSelectedItem(); + if (name == null || name.equals("...")) return; + + Path srcPath = (Panel == left) ? leftPath : rightPath; + Path dstPath = (Panel == left) ? rightPath : leftPath; + + Path src = srcPath.resolve(name); + Path dst = dstPath.resolve(name); + + try { + Files.copy(src, dst, StandardCopyOption.REPLACE_EXISTING); + } catch (Throwable e) {} + + update(); + } + + @FXML + public void move() { + if (Panel == null) return; + + String name = Panel.getSelectionModel().getSelectedItem(); + if (name == null || name.equals("...")) return; + + Path srcPath = (Panel == left) ? leftPath : rightPath; + Path dstPath = (Panel == left) ? rightPath : leftPath; + + Path src = srcPath.resolve(name); + Path dst = dstPath.resolve(name); + + try { + Files.move(src, dst, StandardCopyOption.REPLACE_EXISTING); + } catch (Throwable e) {} + update(); + } + + @FXML + public void delete() { + if (Panel == null) return; + + String name = Panel.getSelectionModel().getSelectedItem(); + if (name == null || name.equals("...")) return; + + Path dir = (Panel == left) ? leftPath : rightPath; + Path file = dir.resolve(name); + + try { + Files.deleteIfExists(file); + } catch (Throwable e) {} + update(); + } +} \ No newline at end of file From 8912ec0730fcab1762c8523c422ba9e6f85a9900 Mon Sep 17 00:00:00 2001 From: Milanya Date: Sun, 15 Mar 2026 03:44:44 +0300 Subject: [PATCH 2/6] commander: monocle --- commander/pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/commander/pom.xml b/commander/pom.xml index 42bb88f3..437a64bf 100644 --- a/commander/pom.xml +++ b/commander/pom.xml @@ -43,6 +43,12 @@ 4.0.18 test + + org.testfx + openjfx-monocle + jdk-12.0.1+2 + test + From 8e4f04578c8783f8618b1213da1bebf34248b6f9 Mon Sep 17 00:00:00 2001 From: Milanya Date: Mon, 16 Mar 2026 22:41:27 +0300 Subject: [PATCH 3/6] commander: dir->path --- .../src/main/java/hse/java/commander/MainController.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/commander/src/main/java/hse/java/commander/MainController.java b/commander/src/main/java/hse/java/commander/MainController.java index 8c12e806..b78bff67 100644 --- a/commander/src/main/java/hse/java/commander/MainController.java +++ b/commander/src/main/java/hse/java/commander/MainController.java @@ -28,13 +28,10 @@ public class MainController { private Path rightPath; private ListView Panel; - private Path leftDir; - private Path rightDir; - // for testing public void setInitialDirs(Path leftStart, Path rightStart) { - this.leftDir = leftStart; - this.rightDir = rightStart; + this.leftPath = leftStart; + this.rightPath = rightStart; update(); } From deaeb74eee80c97ca457794436f5ea421ba41fa5 Mon Sep 17 00:00:00 2001 From: Milanya Date: Mon, 16 Mar 2026 22:50:28 +0300 Subject: [PATCH 4/6] commander: files --- .../main/java/hse/java/commander/MainController.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/commander/src/main/java/hse/java/commander/MainController.java b/commander/src/main/java/hse/java/commander/MainController.java index b78bff67..20cc5db4 100644 --- a/commander/src/main/java/hse/java/commander/MainController.java +++ b/commander/src/main/java/hse/java/commander/MainController.java @@ -36,12 +36,14 @@ public void setInitialDirs(Path leftStart, Path rightStart) { } public void initialize() { - leftPath = Paths.get(System.getProperty("user.dir")); - rightPath = Paths.get(System.getProperty("user.dir")); - + if (leftPath == null) { + leftPath = Paths.get(System.getProperty("user.dir")); + } + if (rightPath == null) { + rightPath = Paths.get(System.getProperty("user.dir")); + } Panel = left; - dir(left, leftPath); - dir(right, rightPath); + update(); left.setOnMouseClicked(e -> { Panel = left; From d50a42f322094bdae81b6ef18be563f3b46529fd Mon Sep 17 00:00:00 2001 From: Milanya Date: Mon, 16 Mar 2026 22:54:18 +0300 Subject: [PATCH 5/6] commander: files --- .../src/main/java/hse/java/commander/MainController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/commander/src/main/java/hse/java/commander/MainController.java b/commander/src/main/java/hse/java/commander/MainController.java index 20cc5db4..40c11e6b 100644 --- a/commander/src/main/java/hse/java/commander/MainController.java +++ b/commander/src/main/java/hse/java/commander/MainController.java @@ -37,10 +37,10 @@ public void setInitialDirs(Path leftStart, Path rightStart) { public void initialize() { if (leftPath == null) { - leftPath = Paths.get(System.getProperty("user.dir")); + leftPath = Paths.get(System.getProperty("user.home")); } if (rightPath == null) { - rightPath = Paths.get(System.getProperty("user.dir")); + rightPath = Paths.get(System.getProperty("user.home")); } Panel = left; update(); From eda960e467e735b554b794c62cfbfe11b6084f3b Mon Sep 17 00:00:00 2001 From: Milanya Date: Mon, 16 Mar 2026 23:13:40 +0300 Subject: [PATCH 6/6] commander: act --- .../src/main/java/hse/java/commander/MainController.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/commander/src/main/java/hse/java/commander/MainController.java b/commander/src/main/java/hse/java/commander/MainController.java index 40c11e6b..13d23f1d 100644 --- a/commander/src/main/java/hse/java/commander/MainController.java +++ b/commander/src/main/java/hse/java/commander/MainController.java @@ -58,6 +58,10 @@ public void initialize() { open(right); } }); + + copy.setOnAction(e -> copy()); + move.setOnAction(e -> move()); + delete.setOnAction(e -> delete()); } private void dir(ListView panel, Path path) {