Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: some fix and improvements #102

Merged
merged 6 commits into from
Feb 11, 2025
Merged
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
2 changes: 1 addition & 1 deletion muon-app/pom.xml
Original file line number Diff line number Diff line change
@@ -139,7 +139,7 @@
<dependency>
<groupId>com.hierynomus</groupId>
<artifactId>sshj</artifactId>
<version>0.31.0</version>
<version>0.36.0</version>
</dependency>


3 changes: 1 addition & 2 deletions muon-app/src/main/java/muon/app/ssh/SshClient2.java
Original file line number Diff line number Diff line change
@@ -453,9 +453,8 @@ public LocalPortForwarder newLocalPortForwarder(Parameters parameters, ServerSoc
return this.sshj.newLocalPortForwarder(parameters, serverSocket);
}

@SuppressWarnings("deprecation")
public RemotePortForwarder getRemotePortForwarder() {
this.sshj.getTransport().setHeartbeatInterval(30);
this.sshj.getConnection().getKeepAlive().setKeepAliveInterval(30);
return this.sshj.getRemotePortForwarder();
}

4 changes: 2 additions & 2 deletions muon-app/src/main/java/muon/app/ui/AppWindow.java
Original file line number Diff line number Diff line change
@@ -64,8 +64,8 @@ public AppWindow() {

Dimension screenD = Toolkit.getDefaultToolkit().getScreenSize();

int screenWidth = screenD.width - inset.left - inset.right;
int screenHeight = screenD.height - inset.top - inset.bottom;
int screenWidth = (screenD.width - inset.left - inset.right)/2;
int screenHeight = (screenD.height - inset.top - inset.bottom)*2/3;

if (screenWidth < 1024 || screenHeight < 650 || App.getGlobalSettings().isStartMaximized()) {
setSize(screenWidth, screenHeight);
Original file line number Diff line number Diff line change
@@ -49,7 +49,7 @@ public class SessionContentPanel extends JPanel implements PageHolder, CachedCre
private final DisabledPanel disabledPanel;
private final TransferProgressPanel progressPanel = new TransferProgressPanel();
private final TabbedPage[] pages;
private final FileBrowser fileBrowser;
public final FileBrowser fileBrowser;
private final LogViewer logViewer;
private final TerminalHolder terminalHolder;
private final DiskspaceAnalyzer diskspaceAnalyzer;
Original file line number Diff line number Diff line change
@@ -213,7 +213,7 @@ public void done(FileTransfer fileTransfer) {
holder.EXECUTOR.submit(this.ongoingFileTransfer);
}

private void reloadView() {
public void reloadView() {
Component c = leftTabs.getSelectedContent();
System.out.println("c1 " + c);
if (c instanceof AbstractFileBrowserView) {
Original file line number Diff line number Diff line change
@@ -15,6 +15,7 @@
import java.awt.datatransfer.StringSelection;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.stream.Collectors;
@@ -39,10 +40,21 @@ public void initMenuHandler(FolderView folderView) {
this.folderView = folderView;
InputMap map = folderView.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
ActionMap act = folderView.getActionMap();
this.initMenuItems();
this.initMenuItems(map, act);
}

private void initMenuItems() {
/**
* Add shortcut for menu item
*/
private static void addShortcut(JMenuItem menuItem, KeyStroke keyStroke, InputMap inputMap,
ActionMap actionMap, String actionKey, Action action) {
menuItem.addActionListener(action);
inputMap.put(keyStroke, actionKey);
actionMap.put(actionKey, action);
menuItem.setAccelerator(keyStroke);
}

private void initMenuItems(InputMap map, ActionMap act) {
mOpen = new JMenuItem(bundle.getString("open"));
mOpen.addActionListener(new ActionListener() {
@Override
@@ -81,12 +93,19 @@ public void actionPerformed(ActionEvent e) {
});

mDelete = new JMenuItem(bundle.getString("delete"));
mDelete.addActionListener(new ActionListener() {
AbstractAction aDelete = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
delete(folderView.getSelectedFiles());
delete(folderView.getSelectedFiles(), fileBrowserView.getCurrentDirectory());
}
});
};

// create delete file shortcut
mDelete.addActionListener(aDelete);
KeyStroke ksDelete = KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0);
map.put(ksDelete, "ksDelete");
act.put("ksDelete", aDelete);
mDelete.setAccelerator(ksDelete);

mNewFile = new JMenuItem(bundle.getString("new_file"));
mNewFile.addActionListener(new ActionListener() {
@@ -140,30 +159,26 @@ public void createMenu(JPopupMenu popup, FileInfo[] selectedFiles) {

private void createMenuContext(JPopupMenu popup, FileInfo[] files) {
popup.removeAll();
int selectionCount = files.length;
createBuitinItems1(selectionCount, popup, files);
createBuitinItems2(selectionCount, popup);
}

private void createBuitinItems1(int selectionCount, JPopupMenu popup, FileInfo[] selectedFiles) {
//create Common Menu Items
popup.add(mDelete);
popup.add(mNewFolder);
popup.add(mNewFile);
// check only if folder is selected
popup.add(mAddToFav);

int selectionCount = files.length;
//create Menu Items For Single Selection
if (selectionCount == 1) {
if (selectedFiles[0].getType() == FileType.File || selectedFiles[0].getType() == FileType.FileLink) {
if (files[0].getType() == FileType.File || files[0].getType() == FileType.FileLink) {
popup.add(mOpen);
}
if (selectedFiles[0].getType() == FileType.Directory || selectedFiles[0].getType() == FileType.DirLink) {
if (files[0].getType() == FileType.Directory || files[0].getType() == FileType.DirLink) {
popup.add(mOpenInNewTab);
popup.add(mOpenInFileExplorer);
}
popup.add(mRename);
}

}

private void createBuitinItems2(int selectionCount, JPopupMenu popup) {
popup.add(mNewFolder);
popup.add(mNewFile);
// check only if folder is selected
popup.add(mAddToFav);
}

private void open() {
@@ -203,7 +218,13 @@ private void renameAsync(String oldName, String newName, String baseFolder) {
});
}

private void delete(FileInfo[] selectedFiles) {
/**
* Delete files and refresh folder view.
*
* @param selectedFiles Files need to be deleted.
* @param baseFolder Used to refresh the folder view.
*/
private void delete(FileInfo[] selectedFiles, String baseFolder) {
fileBrowser.getHolder().EXECUTOR.submit(() -> {
fileBrowser.disableUi();
for (FileInfo f : selectedFiles) {
@@ -213,6 +234,7 @@ private void delete(FileInfo[] selectedFiles) {
e.printStackTrace();
}
}
fileBrowserView.render(baseFolder);
fileBrowser.enableUi();
});
}
Original file line number Diff line number Diff line change
@@ -150,6 +150,9 @@ public void done(FileTransfer fileTransfer) {
callback.accept(transferCount.get());
this.fileTransfer.getSession().addToSessionCache(this.fileTransfer.getInstance());
System.out.println("done transfer");

this.fileTransfer.getSession().fileBrowser.reloadView();

SwingUtilities.invokeLater(() -> {
BackgroundTransferPanel.this.verticalBox.remove(this);
BackgroundTransferPanel.this.revalidate();
Original file line number Diff line number Diff line change
@@ -122,24 +122,28 @@ public void run() {
tmpFilePath.setText("Files copied in " + tmpDir + " due to permission issues");
tmpFilePath.setEnabled(true);
JOptionPane.showMessageDialog(null, tmpFilePath, "Copied to temp directory", JOptionPane.WARNING_MESSAGE);
}

if (!App.getGlobalSettings().isPromptForSudo() ||
JOptionPane.showConfirmDialog(null,
"Permission denied, do you want to copy files from the temporary folder to destination with sudo?",
App.bundle.getString("insufficient_permisions"), JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
String command = "sh -c \"cd '" + tmpDir + "'; cp -r * '" + this.targetFolder + "'\"";

System.out.println("Invoke sudo: " + command);
int ret = SudoUtils.runSudo(command, instance);
if (ret == 0) {
callback.done(this);
return;
}
if (!App.getGlobalSettings().isPromptForSudo() ||
JOptionPane.showConfirmDialog(null,
"Permission denied, do you want to copy files from the temporary folder to destination with sudo?",
App.bundle.getString("insufficient_permisions"), JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
// Because transferTemporaryDirectory already create and transfer files, here can skip these steps
if (!App.getGlobalSettings().isTransferTemporaryDirectory()) {
targetFs.mkdir(tmpDir);
transfer(tmpDir, instance);
}
}

String command = "sh -c \"cd '" + tmpDir + "'; cp -r * '" + this.targetFolder + "'\"";

throw e;
System.out.println("Invoke sudo: " + command);
int ret = SudoUtils.runSudo(command, instance);
if (ret == 0) {
callback.done(this);
return;
}
throw e;
}
}
}
} catch (Exception e) {