diff --git a/README.md b/README.md new file mode 100644 index 00000000..c5ba8967 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# Java Course HSE AMI '28 diff --git a/commander/dependency-reduced-pom.xml b/commander/dependency-reduced-pom.xml new file mode 100644 index 00000000..5405c3c1 --- /dev/null +++ b/commander/dependency-reduced-pom.xml @@ -0,0 +1,88 @@ + + + 4.0.0 + hse.java + commander + commander + 1.0-SNAPSHOT + + + + maven-compiler-plugin + 3.13.0 + + 25 + 25 + + + + org.openjfx + javafx-maven-plugin + 0.0.8 + + + default-cli + + hse.java.commander/hse.java.commander.CommanderApplication + app + app + app + true + true + true + + + + + + + + + org.openjfx + javafx + 21.0.6 + pom + compile + + + org.junit.jupiter + junit-jupiter-api + 5.12.1 + test + + + opentest4j + org.opentest4j + + + junit-platform-commons + org.junit.platform + + + apiguardian-api + org.apiguardian + + + + + org.junit.jupiter + junit-jupiter-engine + 5.12.1 + test + + + junit-platform-engine + org.junit.platform + + + apiguardian-api + org.apiguardian + + + + + + UTF-8 + 5.12.1 + + diff --git a/commander/src/main/java/hse/java/commander/MainController.java b/commander/src/main/java/hse/java/commander/MainController.java index 5de3b66d..ab4d7070 100644 --- a/commander/src/main/java/hse/java/commander/MainController.java +++ b/commander/src/main/java/hse/java/commander/MainController.java @@ -2,18 +2,125 @@ import javafx.fxml.FXML; import javafx.scene.control.Button; +import javafx.scene.control.Label; import javafx.scene.control.ListView; +<<<<<<< HEAD +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +======= import java.nio.file.Path; public class MainController { +>>>>>>> 1c195628027c24a0d2a677be0bd75b5381ae77e5 +public class MainController { @FXML +<<<<<<< HEAD + public Button move; + @FXML +======= +>>>>>>> 1c195628027c24a0d2a677be0bd75b5381ae77e5 public ListView left; - @FXML public ListView right; + @FXML + public Label leftPathLabel; + @FXML + public Label rightPathLabel; + +<<<<<<< HEAD + private File leftDirectory = new File(System.getProperty("user.home")); + private File rightDirectory = new File(System.getProperty("user.home")); + + public void initialize() { + refresh(left, leftDirectory); + refresh(right, rightDirectory); + + left.setOnMouseClicked(event -> { + if (event.getClickCount() == 2) { + handleNavigation(left, true); + } + }); + + right.setOnMouseClicked(event -> { + if (event.getClickCount() == 2) { + handleNavigation(right, false); + } + }); + + move.setOnAction(event -> moveFile()); + } + + private void refresh(ListView list, File directory) { + list.getItems().clear(); + list.getItems().add(".."); + File[] files = directory.listFiles(); + if (files != null) { + for (File file : files) { + list.getItems().add(file.isDirectory() ? "[" + file.getName() + "]" : file.getName()); + } + } + if (list == left) { + leftPathLabel.setText(directory.getAbsolutePath()); + } else { + rightPathLabel.setText(directory.getAbsolutePath()); + } + } + + private void handleNavigation(ListView list, boolean isLeft) { + String selected = list.getSelectionModel().getSelectedItem(); + if (selected == null) return; + + File currentDir = isLeft ? leftDirectory : rightDirectory; + File nextDirectory; + + if (selected.equals("..")) { + nextDirectory = currentDir.getParentFile(); + } else { + String name = selected.replace("[", "").replace("]", ""); + nextDirectory = new File(currentDir, name); + } + if (nextDirectory != null && nextDirectory.isDirectory()) { + if (isLeft) { + leftDirectory = nextDirectory; + } else { + rightDirectory = nextDirectory; + } + refresh(list, nextDirectory); + } + } + + private void moveFile() { + boolean moveFromLeft = left.getSelectionModel().getSelectedItem() != null; + ListView fromList = moveFromLeft ? left : right; + File fromDirectory = moveFromLeft ? leftDirectory : rightDirectory; + File toDirectory = moveFromLeft ? rightDirectory : leftDirectory; + + String selected = fromList.getSelectionModel().getSelectedItem(); + + if (selected == null || selected.equals("..")) { + return; + } + + String name = selected.replace("[", "").replace("]", ""); + Path source = new File(fromDirectory, name).toPath(); + Path destination = new File(toDirectory, name).toPath(); + + try { + Files.move(source, destination, StandardCopyOption.REPLACE_EXISTING); + refresh(left, leftDirectory); + refresh(right, rightDirectory); + } catch (IOException e) { + System.err.println("Анлак, не удалось перенести: " + e.getMessage()); + } + } +} +======= @FXML public Button move; @@ -43,3 +150,4 @@ public void initialize() { }); } } +>>>>>>> 1c195628027c24a0d2a677be0bd75b5381ae77e5 diff --git a/commander/src/main/resources/hse/java/commander/commander-ui.fxml b/commander/src/main/resources/hse/java/commander/commander-ui.fxml index 724bbc8a..3eaf10f9 100644 --- a/commander/src/main/resources/hse/java/commander/commander-ui.fxml +++ b/commander/src/main/resources/hse/java/commander/commander-ui.fxml @@ -2,7 +2,31 @@ + +<<<<<<< HEAD + + + + + + + + + + + + + + +