//MrPyro 2019 package com.github.parker8283.bon2.gui; import java.awt.FileDialog; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.File; import java.nio.file.Paths; import javax.swing.JTextField; import com.github.parker8283.bon2.BON2Gui; public class LinuxBrowseListener extends MouseAdapter{ private BON2Gui parent; private boolean isOpen; private JTextField field; private FileDialog fd; public LinuxBrowseListener(BON2Gui parent, boolean isOpen, JTextField field) { this.parent = parent; this.isOpen = isOpen; this.field = field; if (isOpen) { this.fd = new FileDialog(this.parent, "Please Select an Input File", FileDialog.LOAD); } else { this.fd = new FileDialog(this.parent, "Please Select an Output File", FileDialog.SAVE); } fd.setFilenameFilter( (dir, name) -> name.toLowerCase().endsWith(".jar")); String key = isOpen ? BON2Gui.PREFS_KEY_OPEN_LOC : BON2Gui.PREFS_KEY_SAVE_LOC; String savedDir = parent.prefs.get(key, Paths.get("").toAbsolutePath().toString()); File currentDir = new File(savedDir); if (!Paths.get(savedDir).getRoot().toFile().exists()) { currentDir = Paths.get("").toAbsolutePath().toFile(); } while (!currentDir.isDirectory()) { currentDir = currentDir.getParentFile(); } fd.setDirectory(currentDir.getPath()); } @Override public void mouseClicked(MouseEvent e) { int returnState; fd.setVisible(true); returnState = fd.getFile() == null ? 0 : 1; if (returnState == 1) { File file = new File(fd.getDirectory() + fd.getFile()); String path = fd.getDirectory() + fd.getFile(); field.setText(path); String parentFolder = file.getParentFile().getAbsolutePath(); if (isOpen) { parent.getOutputField().setText(path.replace(".jar", "-deobf.jar")); parent.prefs.put(BON2Gui.PREFS_KEY_OPEN_LOC, parentFolder); } parent.prefs.put(BON2Gui.PREFS_KEY_SAVE_LOC, parentFolder); } } }