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

jd-gui: update to 1.6.6 #6073

Merged
merged 2 commits into from
Jan 8, 2020
Merged
Show file tree
Hide file tree
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
19 changes: 15 additions & 4 deletions java/jd-gui/Portfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ PortSystem 1.0
PortGroup java 1.0
PortGroup github 1.0

github.setup java-decompiler jd-gui 1.6.5 v
github.setup java-decompiler jd-gui 1.6.6 v

categories java devel
platforms darwin
Expand All @@ -19,9 +19,9 @@ long_description JD-GUI is a standalone graphical utility that displays J

homepage http://java-decompiler.github.io/

checksums rmd160 87b932d25b9fec0fdde1362aa55c2e28d3d5d1d7 \
sha256 bbaf602d4542effaf80ce24cd6d91c3aaa6c7f73a38332f81ec3c73868c04936 \
size 365596
checksums rmd160 dd396d140545793cb1c166f7206252b7085499d3 \
sha256 606fd8e2c339faaa0cec72c855a550fd2131445c9a884fc9f2fed96071b5aa97 \
size 365626

java.version 1.8+
java.fallback openjdk11
Expand All @@ -32,6 +32,17 @@ universal_variant no
patchfiles macos-only.diff \
jdk13-compat.diff

variant nativedialogs description {Enable experimental support for macOS native dialogs} {
pre-patch {
file mkdir ${worksrcpath}/app/src/main/java/org/jd/gui/util/io/
file mkdir ${worksrcpath}/app/src/main/java/org/jd/gui/util/sys/
file copy ${filespath}/FileUtils.java ${worksrcpath}/app/src/main/java/org/jd/gui/util/io/
file copy ${filespath}/SystemUtils.java ${worksrcpath}/app/src/main/java/org/jd/gui/util/sys/
file copy ${filespath}/FileChooser.java ${worksrcpath}/app/src/main/java/org/jd/gui/view/component/
}
patchfiles-append native-dialogs.diff
}

depends_build-append port:gradle \
port:proguard

Expand Down
94 changes: 94 additions & 0 deletions java/jd-gui/files/FileChooser.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
package org.jd.gui.view.component;

import org.jd.gui.util.io.FileUtils;
import org.jd.gui.util.sys.SystemUtils;

import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.FilenameFilter;

/**
* Created by jianhua.fengjh on 27/11/2015.
*/
public class FileChooser extends JFileChooser {

/**
*
*/
private static final long serialVersionUID = 1L;

public int showOpenDialog(Component parent) {
if (!SystemUtils.isMacOS()) {
return super.showOpenDialog(parent);
} else {
setDialogType(JFileChooser.OPEN_DIALOG);
return showNativeFileDialog(this);
}
}

public int showSaveDialog(Component parent) {

if (!SystemUtils.isMacOS()) {
return super.showSaveDialog(parent);
} else {
setDialogType(JFileChooser.SAVE_DIALOG);
return showNativeFileDialog(this);
}
}

private static int showNativeFileDialog(final JFileChooser chooser) {
if (chooser != null) {

FileDialog fileDialog = new FileDialog((Frame) chooser.getParent());
fileDialog.setDirectory(chooser.getCurrentDirectory().getPath());
File file = chooser.getSelectedFile();

if (chooser.getDialogType() == JFileChooser.SAVE_DIALOG) {
fileDialog.setFile(file != null ? file.getName() : ""); //save only need name
} else {
fileDialog.setFile(file != null ? file.getPath() : "");
}

fileDialog.setFilenameFilter(new FilenameFilter() {

public boolean accept(File dir, String name) {
String path = dir.getPath();
String pathSeparator = File.pathSeparator;
return chooser.getFileFilter().accept(new File(0 + path.length() + pathSeparator.length() + name.length() + path + pathSeparator + name));
}

});

if (chooser.getDialogType() == JFileChooser.SAVE_DIALOG) {
fileDialog.setMode(FileDialog.SAVE);
} else {
fileDialog.setMode(FileDialog.LOAD);
}

if (chooser.getFileSelectionMode() == JFileChooser.DIRECTORIES_ONLY) {
System.setProperty("apple.awt.fileDialogForDirectories", "true");
} else {
System.setProperty("apple.awt.fileDialogForDirectories", "false");
}

fileDialog.setVisible(true);

//reset fileDialogForDirectories property
System.setProperty("apple.awt.fileDialogForDirectories", "false");
if (fileDialog.getFile() == null) {
return JFileChooser.CANCEL_OPTION;
}

String dir = fileDialog.getDirectory();
String trailingSlash = FileUtils.ensureTrailingSlash(dir);
String strFile = fileDialog.getFile();
chooser.setSelectedFile(new File(strFile.length() != 0 ? trailingSlash.concat(strFile) : trailingSlash));

return JFileChooser.APPROVE_OPTION;
}

return JFileChooser.ERROR_OPTION;
}

}
23 changes: 23 additions & 0 deletions java/jd-gui/files/FileUtils.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package org.jd.gui.util.io;

import java.io.File;


/**
* Created by jianhua.fengjh on 27/11/2015.
*/
public class FileUtils {

public static String ensureTrailingSlash(final String path) {
if ((path == null) || "".equals(path)) {
return "";
}

StringBuilder buf = new StringBuilder(path);
while (buf.charAt(buf.length() - 1) == File.separatorChar) {
buf.deleteCharAt(buf.length() - 1);
}

return buf.append(File.separatorChar).toString();
}
}
20 changes: 20 additions & 0 deletions java/jd-gui/files/SystemUtils.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package org.jd.gui.util.sys;

/**
* Created by jianhua.fengjh on 27/11/2015.
*/
public final class SystemUtils {

static boolean isLinux() {
return System.getProperty("os.name").startsWith("Linux");
}

public static boolean isMacOS() {
return System.getProperty("os.name").startsWith("Mac");
}

public static boolean isWindows() {
return System.getProperty("os.name").startsWith("Windows");
}

}
67 changes: 67 additions & 0 deletions java/jd-gui/files/native-dialogs.diff
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
--- app/src/main/java/org/jd/gui/controller/MainController.java.orig 2019-12-30 20:20:31.000000000 +0100
+++ app/src/main/java/org/jd/gui/controller/MainController.java 2019-12-30 20:09:49.000000000 +0100
@@ -35,6 +35,7 @@
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.filechooser.FileSystemView;
+import org.jd.gui.view.component.FileChooser;
import java.awt.*;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
@@ -155,7 +156,7 @@
// Set drop files transfer handler
mainFrame.setTransferHandler(new FilesTransferHandler());
// Background class loading
- new JFileChooser().addChoosableFileFilter(new FileNameExtensionFilter("", "dummy"));
+ new FileChooser().addChoosableFileFilter(new FileNameExtensionFilter("", "dummy"));
FileSystemView.getFileSystemView().isFileSystemRoot(new File("dummy"));
new JLayer();
});
@@ -183,7 +184,7 @@

String description = sb.toString();
String[] array = extensions.toArray(new String[0]);
- JFileChooser chooser = new JFileChooser();
+ FileChooser chooser = new FileChooser();

chooser.removeChoosableFileFilter(chooser.getFileFilter());
chooser.addChoosableFileFilter(new FileNameExtensionFilter("All files (" + description + ")", array));
@@ -195,7 +196,7 @@

chooser.setCurrentDirectory(configuration.getRecentLoadDirectory());

- if (chooser.showOpenDialog(mainView.getMainFrame()) == JFileChooser.APPROVE_OPTION) {
+ if (chooser.showOpenDialog(mainView.getMainFrame()) == FileChooser.APPROVE_OPTION) {
configuration.setRecentLoadDirectory(chooser.getCurrentDirectory());
openFile(chooser.getSelectedFile());
}
@@ -207,12 +208,12 @@

protected void onSaveSource() {
if (currentPage instanceof ContentSavable) {
- JFileChooser chooser = new JFileChooser();
+ FileChooser chooser = new FileChooser();
JFrame mainFrame = mainView.getMainFrame();

chooser.setSelectedFile(new File(configuration.getRecentSaveDirectory(), ((ContentSavable)currentPage).getFileName()));

- if (chooser.showSaveDialog(mainFrame) == JFileChooser.APPROVE_OPTION) {
+ if (chooser.showSaveDialog(mainFrame) == FileChooser.APPROVE_OPTION) {
File selectedFile = chooser.getSelectedFile();

configuration.setRecentSaveDirectory(chooser.getCurrentDirectory());
@@ -245,12 +246,12 @@

if (currentPanel instanceof SourcesSavable) {
SourcesSavable sourcesSavable = (SourcesSavable)currentPanel;
- JFileChooser chooser = new JFileChooser();
+ FileChooser chooser = new FileChooser();
JFrame mainFrame = mainView.getMainFrame();

chooser.setSelectedFile(new File(configuration.getRecentSaveDirectory(), sourcesSavable.getSourceFileName()));

- if (chooser.showSaveDialog(mainFrame) == JFileChooser.APPROVE_OPTION) {
+ if (chooser.showSaveDialog(mainFrame) == FileChooser.APPROVE_OPTION) {
File selectedFile = chooser.getSelectedFile();

configuration.setRecentSaveDirectory(chooser.getCurrentDirectory());