Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
171 changes: 142 additions & 29 deletions commander/src/main/java/hse/java/commander/MainController.java
Original file line number Diff line number Diff line change
@@ -1,45 +1,158 @@
package hse.java.commander;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.ListView;

import java.nio.file.Path;

public class MainController {
@FXML public ListView<String> left;

@FXML public ListView<String> right;

@FXML public Button copy;

@FXML public Button move;

@FXML
public ListView<String> left;
@FXML public Button delete;

@FXML
public ListView<String> right;
private Path leftDir;
private Path rightDir;
private ListView<String> activePanel;

@FXML
public Button move;
public void setInitialDirs(Path leftStart, Path rightStart) {
this.leftDir = leftStart;
this.rightDir = rightStart;
updatePanel(left, leftDir);
updatePanel(right, rightDir);
}

private Path leftDir;
private Path rightDir;
public void initialize() {
left.setOnMouseClicked(event -> {
activePanel = left;
if (event.getClickCount() == 2) {
navigatePanel(left, leftDir, true);
}
});

// for testing
public void setInitialDirs(Path leftStart, Path rightStart) {
this.leftDir = leftStart;
this.rightDir = rightStart;
right.setOnMouseClicked(event -> {
activePanel = right;
if (event.getClickCount() == 2) {
navigatePanel(right, rightDir, false);
}
});

copy.setOnAction(event -> copyFile());
move.setOnAction(event -> moveFile());
delete.setOnAction(event -> deleteFile());
}

private void updatePanel(ListView<String> panel, Path dir) {
panel.getItems().clear();
panel.getItems().add("...");
File[] files = dir.toFile().listFiles();
if (files != null) {
for (File file : files) {
panel.getItems().add(file.getName());
}
}
}

private void navigatePanel(ListView<String> panel, Path currentDir,
boolean isLeft) {
String selected = panel.getSelectionModel().getSelectedItem();
if (selected == null)
return;

if (selected.equals("...")) {
Path parent = currentDir.getParent();
if (parent != null) {
if (isLeft) {
leftDir = parent;
updatePanel(left, leftDir);
} else {
rightDir = parent;
updatePanel(right, rightDir);
}
}
} else {
Path newPath = currentDir.resolve(selected);
if (Files.isDirectory(newPath)) {
if (isLeft) {
leftDir = newPath;
updatePanel(left, leftDir);
} else {
rightDir = newPath;
updatePanel(right, rightDir);
}
}
}
}

private void copyFile() {
if (activePanel == null)
return;
String selected = activePanel.getSelectionModel().getSelectedItem();
if (selected == null || selected.equals("..."))
return;

Path sourceDir = (activePanel == left) ? leftDir : rightDir;
Path targetDir = (activePanel == left) ? rightDir : leftDir;
ListView<String> targetPanel = (activePanel == left) ? right : left;

Path source = sourceDir.resolve(selected);
Path target = targetDir.resolve(selected);

try {
Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);
updatePanel(targetPanel, targetDir);
} catch (IOException e) {
e.printStackTrace();
}
}

private void moveFile() {
if (activePanel == null)
return;
String selected = activePanel.getSelectionModel().getSelectedItem();
if (selected == null || selected.equals("..."))
return;

Path sourceDir = (activePanel == left) ? leftDir : rightDir;
Path targetDir = (activePanel == left) ? rightDir : leftDir;
ListView<String> targetPanel = (activePanel == left) ? right : left;

Path source = sourceDir.resolve(selected);
Path target = targetDir.resolve(selected);

try {
Files.move(source, target, StandardCopyOption.REPLACE_EXISTING);
updatePanel(activePanel, sourceDir);
updatePanel(targetPanel, targetDir);
} catch (IOException e) {
e.printStackTrace();
}
}

private void deleteFile() {
if (activePanel == null)
return;
String selected = activePanel.getSelectionModel().getSelectedItem();
if (selected == null || selected.equals("..."))
return;

Path currentDir = (activePanel == left) ? leftDir : rightDir;
Path toDelete = currentDir.resolve(selected);

public void initialize() {
move.setOnMouseClicked(event -> {

});
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");
}
}
});
try {
Files.deleteIfExists(toDelete);
updatePanel(activePanel, currentDir);
} catch (IOException e) {
e.printStackTrace();
}
}
}