Skip to content

Commit

Permalink
FTP Changing dir needs work but meh
Browse files Browse the repository at this point in the history
  • Loading branch information
DomAtTheShack committed Jun 24, 2023
1 parent 10fae4b commit 2055c0d
Show file tree
Hide file tree
Showing 4 changed files with 140 additions and 39 deletions.
Binary file modified out/production/Dom-s-FTP-Client/Main.class
Binary file not shown.
22 changes: 20 additions & 2 deletions src/FTPClientJ.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import java.io.*;

public class FTPClientJ {
private static FTPClient ftpClient = new FTPClient();
public static FTPClient ftpClient = new FTPClient();
private static SwingWorker<Boolean, Integer> uploadTask;


Expand Down Expand Up @@ -248,12 +248,30 @@ private static long getFolderSize(File folder) {
return size;
}

public static FTPFile[] getDir() throws IOException {
public static FTPFile[] getList() throws IOException {
try {
ftpClient.setFileType(FTP.ASCII_FILE_TYPE);
return ftpClient.listFiles();
} catch (Exception e) {
Main.gui.addConsoleText(e.toString());
return null;
}
}
public static FTPFile[] getDir() throws IOException {
try {
ftpClient.setFileType(FTP.ASCII_FILE_TYPE);
return ftpClient.mlistDir();
} catch (Exception e) {
Main.gui.addConsoleText(e.toString());
return null;
}
}

public static String getWorkingDir() throws IOException {
return ftpClient.printWorkingDirectory();
}

public static void changeDir(File directory) throws IOException {
ftpClient.changeWorkingDirectory(directory.getAbsolutePath());
}
}
149 changes: 114 additions & 35 deletions src/FileBrowserGUI.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@ public class FileBrowserGUI extends JFrame {

private DefaultListModel<String> FTPListModel;


private File FTPcurrentDirectory;
private File currentDirectory;

public FileBrowserGUI() {
public FileBrowserGUI() throws IOException {
setTitle("FTP Client");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(1200, 800);
Expand Down Expand Up @@ -147,10 +147,47 @@ public void mouseClicked(MouseEvent e) {
if (selectedFile.equals("..")) {
File parentDirectory = currentDirectory.getParentFile();
if (parentDirectory != null) {
navigateToDirectory(parentDirectory);
try {
navigateToDirectory(parentDirectory);
} catch (IOException ex) {
addConsoleText(ex.toString());
}
}
} else if (file.isDirectory()) {
navigateToDirectory(file);
try {
navigateToDirectory(file);
} catch (IOException ex) {
addConsoleText(ex.toString());
}
}
}
}
}
});

ftpDirectoryList.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e){
if (e.getClickCount() == 2) {
int selectedIndex = ftpDirectoryList.getSelectedIndex();
if (selectedIndex != -1) {
String selectedFile = FTPListModel.getElementAt(selectedIndex);
File file = new File(FTPcurrentDirectory, selectedFile);
if (selectedFile.equals("..")) {
File parentDirectory = FTPcurrentDirectory.getParentFile();
if (parentDirectory != null) {
try {
navigateToFTPDirectory(parentDirectory);
} catch (IOException ex) {
addConsoleText(ex.toString());
}
}
} else if (file.isDirectory()) {
try {
navigateToFTPDirectory(file);
} catch (IOException ex) {
addConsoleText(ex.toString());
}
}
}
}
Expand Down Expand Up @@ -182,6 +219,13 @@ public void mouseClicked(MouseEvent e) {
addConsoleText("Connected!");
connectButton.setEnabled(false);
disconnectButton.setEnabled(true);
FTPFile[] curDir = FTPClientJ.getList();
if(curDir[0]==null) {
updateFTPFileList(FTPClientJ.getDir());
}else{
updateFTPFileList(curDir);
}
FTPcurrentDirectory = new File(FTPClientJ.getWorkingDir());
}else{
addConsoleText("Unable to Connect");
}
Expand All @@ -196,6 +240,7 @@ public void mouseClicked(MouseEvent e) {
FTPClientJ.disconnect();
connectButton.setEnabled(true);
disconnectButton.setEnabled(false);
((DefaultListModel<String>) ftpDirectoryList.getModel()).clear();
addConsoleText("Disconnected!");
} catch (IOException ex) {
addConsoleText(ex.toString());
Expand Down Expand Up @@ -242,58 +287,92 @@ public void mouseClicked(MouseEvent e) {

button3.addActionListener(e -> {
try {
((DefaultListModel<String>) ftpDirectoryList.getModel()).addElement("..");
updateFTPFileList(FTPClientJ.getDir());
} catch (IOException ex) {
addConsoleText(ex.toString());
}
});
}

private void navigateToDirectory(File directory) {
if (directory != null) {
updateFileList(directory);
currentDirectory = directory;
private void navigateToDirectory(File directory) throws IOException {
try {
if (directory != null) {
updateFileList(directory);
currentDirectory = directory;

if (currentDirectory.getParentFile() != null) {
selectedFileLabel.setText(currentDirectory.getAbsolutePath());
} else {
selectedFileLabel.setText("");
if (currentDirectory.getParentFile() != null) {
selectedFileLabel.setText(currentDirectory.getAbsolutePath());
} else {
selectedFileLabel.setText("");
}
}
}catch (Exception e){
addConsoleText(e.toString());
}
}
private void updateFTPFileList(FTPFile[] files) {
((DefaultListModel<String>) ftpDirectoryList.getModel()).clear();
if (ftpDirectoryList.getParent() != null) {
FTPListModel.addElement("..");
}
private void navigateToFTPDirectory(File directory) throws IOException {
try {
if (directory != null) {
FTPClientJ.changeDir(directory);
FTPFile[] curDir = FTPClientJ.getDir();
if(curDir[0]==null) {
updateFTPFileList(FTPClientJ.getList());
}else {
updateFTPFileList(curDir);
}
FTPcurrentDirectory = directory;

if (files != null) {
for (FTPFile file : files) {
if (file.isDirectory()) {
((DefaultListModel<String>) ftpDirectoryList.getModel()).addElement(file.getName() + File.separator);
if (FTPcurrentDirectory.getParentFile() != null) {
// selectedFileLabel.setText(currentDirectory.getAbsolutePath());
} else {
((DefaultListModel<String>) ftpDirectoryList.getModel()).addElement(file.getName());
// selectedFileLabel.setText("");
}
}
}catch (Exception e){
addConsoleText(e.toString());
}
}
private void updateFTPFileList(FTPFile[] files) throws IOException {
if(FTPClientJ.ftpClient.isConnected()) {
try {
((DefaultListModel<String>) ftpDirectoryList.getModel()).clear();
if (ftpDirectoryList.getParent() != null && !"/".equals(FTPClientJ.ftpClient.printWorkingDirectory())) {
((DefaultListModel<String>) ftpDirectoryList.getModel()).addElement("..");
}
if (files != null) {
for (FTPFile file : files) {
if (file.isDirectory()) {
((DefaultListModel<String>) ftpDirectoryList.getModel()).addElement(file.getName() + File.separator);
} else {
((DefaultListModel<String>) ftpDirectoryList.getModel()).addElement(file.getName());
}
}
}
} catch (Exception ex) {
addConsoleText(ex.toString());
}
}
}


private void updateFileList(File directory) {
listModel.clear();
if (directory.getParentFile() != null) {
listModel.addElement("..");
}
File[] files = directory.listFiles();
if (files != null) {
for (File file : files) {
if (file.isDirectory()) {
listModel.addElement(file.getName() + File.separator);
} else {
listModel.addElement(file.getName());
private void updateFileList(File directory) throws IOException {
try {
listModel.clear();
if (directory.getParentFile() != null && "/".equals(FTPClientJ.ftpClient.printWorkingDirectory())) {
listModel.addElement("..");
}
File[] files = directory.listFiles();
if (files != null) {
for (File file : files) {
if (file.isDirectory()) {
listModel.addElement(file.getName() + File.separator);
} else {
listModel.addElement(file.getName());
}
}
}
}catch(Exception e){
addConsoleText(e.toString());
}
}

Expand Down
8 changes: 6 additions & 2 deletions src/Main.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@

import javax.swing.*;
import java.io.IOException;

public class Main {
public static FileBrowserGUI gui;

static {
gui = new FileBrowserGUI();
try {
gui = new FileBrowserGUI();
} catch (IOException e) {
gui.addConsoleText(e.toString());
}
}

public static void main(String[] args){
Expand Down

0 comments on commit 2055c0d

Please sign in to comment.