From 8c94bb4497df6b8e0258dd4097adb718983863f8 Mon Sep 17 00:00:00 2001 From: SuspiciousActivity <38253929+SuspiciousActivity@users.noreply.github.com> Date: Wed, 2 Jan 2019 14:33:18 +0100 Subject: [PATCH] When loading a file the default save path is now the parent folder --- src/me/ByteEdit/main/Main.java | 106 +++++++++++++++++++++------------ 1 file changed, 68 insertions(+), 38 deletions(-) diff --git a/src/me/ByteEdit/main/Main.java b/src/me/ByteEdit/main/Main.java index 32023ae..35dd6b9 100644 --- a/src/me/ByteEdit/main/Main.java +++ b/src/me/ByteEdit/main/Main.java @@ -101,6 +101,7 @@ public class Main extends JFrame { public static JTree tree; public static RTextScrollPane scrollPane_ByteEdit; public static Theme theme; + public static File saveFolder; /** * Launch the application. @@ -127,23 +128,39 @@ public class Main extends JFrame { for (int i = 0; i < 200; i++) { String s = OpcodesReverse.reverseOpcode(i); if (!s.startsWith("Unknown ")) - provider.addCompletion(new BasicCompletion(provider, s, null, OpcodesReverse.generateCompletionDesc(s))); + provider.addCompletion( + new BasicCompletion(provider, s, null, OpcodesReverse.generateCompletionDesc(s))); } - provider.addCompletion(new BasicCompletion(provider, "public", null, OpcodesReverse.generateCompletionDesc("public"))); - provider.addCompletion(new BasicCompletion(provider, "private", null, OpcodesReverse.generateCompletionDesc("private"))); - provider.addCompletion(new BasicCompletion(provider, "protected", null, OpcodesReverse.generateCompletionDesc("protected"))); - provider.addCompletion(new BasicCompletion(provider, "final", null, OpcodesReverse.generateCompletionDesc("final"))); - provider.addCompletion(new BasicCompletion(provider, "class", null, OpcodesReverse.generateCompletionDesc("class"))); - provider.addCompletion(new BasicCompletion(provider, "enum", null, OpcodesReverse.generateCompletionDesc("enum"))); - provider.addCompletion(new BasicCompletion(provider, "static", null, OpcodesReverse.generateCompletionDesc("static"))); - provider.addCompletion(new BasicCompletion(provider, "strictfp", null, OpcodesReverse.generateCompletionDesc("strictfp"))); - provider.addCompletion(new BasicCompletion(provider, "throws", null, OpcodesReverse.generateCompletionDesc("throws"))); - provider.addCompletion(new BasicCompletion(provider, "synthetic", null, OpcodesReverse.generateCompletionDesc("synthetic"))); - provider.addCompletion(new BasicCompletion(provider, "bridge", null, OpcodesReverse.generateCompletionDesc("bridge"))); - provider.addCompletion(new BasicCompletion(provider, "label", null, OpcodesReverse.generateCompletionDesc("label"))); - provider.addCompletion(new BasicCompletion(provider, "line", null, OpcodesReverse.generateCompletionDesc("line"))); - provider.addCompletion(new BasicCompletion(provider, "extends", null, OpcodesReverse.generateCompletionDesc("extends"))); - provider.addCompletion(new BasicCompletion(provider, "implements", null, OpcodesReverse.generateCompletionDesc("implements"))); + provider.addCompletion( + new BasicCompletion(provider, "public", null, OpcodesReverse.generateCompletionDesc("public"))); + provider.addCompletion( + new BasicCompletion(provider, "private", null, OpcodesReverse.generateCompletionDesc("private"))); + provider.addCompletion( + new BasicCompletion(provider, "protected", null, OpcodesReverse.generateCompletionDesc("protected"))); + provider.addCompletion( + new BasicCompletion(provider, "final", null, OpcodesReverse.generateCompletionDesc("final"))); + provider.addCompletion( + new BasicCompletion(provider, "class", null, OpcodesReverse.generateCompletionDesc("class"))); + provider.addCompletion( + new BasicCompletion(provider, "enum", null, OpcodesReverse.generateCompletionDesc("enum"))); + provider.addCompletion( + new BasicCompletion(provider, "static", null, OpcodesReverse.generateCompletionDesc("static"))); + provider.addCompletion( + new BasicCompletion(provider, "strictfp", null, OpcodesReverse.generateCompletionDesc("strictfp"))); + provider.addCompletion( + new BasicCompletion(provider, "throws", null, OpcodesReverse.generateCompletionDesc("throws"))); + provider.addCompletion( + new BasicCompletion(provider, "synthetic", null, OpcodesReverse.generateCompletionDesc("synthetic"))); + provider.addCompletion( + new BasicCompletion(provider, "bridge", null, OpcodesReverse.generateCompletionDesc("bridge"))); + provider.addCompletion( + new BasicCompletion(provider, "label", null, OpcodesReverse.generateCompletionDesc("label"))); + provider.addCompletion( + new BasicCompletion(provider, "line", null, OpcodesReverse.generateCompletionDesc("line"))); + provider.addCompletion( + new BasicCompletion(provider, "extends", null, OpcodesReverse.generateCompletionDesc("extends"))); + provider.addCompletion( + new BasicCompletion(provider, "implements", null, OpcodesReverse.generateCompletionDesc("implements"))); provider.addCompletion(new ShorthandCompletion(provider, "invvi", "invokevirtual desc owner/name", null, "invvi
Creates an example invokevirtual")); provider.addCompletion(new ShorthandCompletion(provider, "invif", "invokeinterface desc owner/name", null, @@ -159,8 +176,8 @@ public class Main extends JFrame { "// #Annotations\n// #Class v:52\n// #Signature: null\n// #OuterClass: null\n// #InnerClasses:\npublic class Main extends java/lang/Object {\n// #SourceFile: Main.java\n\n// #Fields\n\n// #Methods\n\n}\n", null, "clazz
Creates an example class")); provider.addCompletion(new ShorthandCompletion(provider, "method", - "// #Max: l:0 s:0\n\t// #TryCatch:\n\t// #LocalVars:\n\tpublic static method ()V {\n\t\treturn\n\t}", null, - "method
Creates an example method")); + "// #Max: l:0 s:0\n\t// #TryCatch:\n\t// #LocalVars:\n\tpublic static method ()V {\n\t\treturn\n\t}", + null, "method
Creates an example method")); return provider; } @@ -197,7 +214,8 @@ public class Main extends JFrame { CompletionProvider provider = createCompletionProvider(); AutoCompletion ac = new AutoCompletion(provider); ac.setShowDescWindow(true); - FoldParserManager.get().addFoldParserMapping(SyntaxConstants.SYNTAX_STYLE_JAVA_DISASSEMBLE, new CurlyFoldParser(false, true)); + FoldParserManager.get().addFoldParserMapping(SyntaxConstants.SYNTAX_STYLE_JAVA_DISASSEMBLE, + new CurlyFoldParser(false, true)); try { Theme theme = Theme.load(getClass().getClassLoader().getResourceAsStream("org/fife/eclipse.xml")); } catch (IOException e2) { @@ -246,7 +264,8 @@ public class Main extends JFrame { b = true; continue; } - s += (s.isEmpty() || s.replace("/", "").isEmpty() ? "" : "/") + (path.toString().isEmpty() ? "/" : path.toString()); + s += (s.isEmpty() || s.replace("/", "").isEmpty() ? "" : "/") + + (path.toString().isEmpty() ? "/" : path.toString()); } selectFile(s); } @@ -266,6 +285,7 @@ public class Main extends JFrame { final File file = files.get(0); if (file.getName().endsWith(".jar")) { jarFile = file; + saveFolder = file.getParentFile(); isChangingFile = true; try { tree.setModel(new ArchiveTreeModel(new JarFile(jarFile))); @@ -293,16 +313,20 @@ public class Main extends JFrame { } @Override - public void dragEnter(DropTargetDragEvent dtde) {} + public void dragEnter(DropTargetDragEvent dtde) { + } @Override - public void dragOver(DropTargetDragEvent dtde) {} + public void dragOver(DropTargetDragEvent dtde) { + } @Override - public void dropActionChanged(DropTargetDragEvent dtde) {} + public void dropActionChanged(DropTargetDragEvent dtde) { + } @Override - public void dragExit(DropTargetEvent dte) {} + public void dragExit(DropTargetEvent dte) { + } }); txtByteEditView = new RSyntaxTextArea(); @@ -471,7 +495,8 @@ public class Main extends JFrame { return; } selectFile(className + ".class"); - } else if (line.startsWith("getstatic ") || line.startsWith("putstatic ") || line.startsWith("getfield ") || line.startsWith("putfield ")) { + } else if (line.startsWith("getstatic ") || line.startsWith("putstatic ") || line.startsWith("getfield ") + || line.startsWith("putfield ")) { String[] split = line.split(" "); String desc = UnicodeUtils.unescape(split[1]); String className = UnicodeUtils.unescape(split[2]); @@ -497,7 +522,8 @@ public class Main extends JFrame { } } - private final Pattern renameableFieldPattern = Pattern.compile("^\t(?:[a-z]+ |0x[0-9a-fA-F]+ )*?(\\[*(?:V|Z|C|B|S|I|F|J|D|L.+?;)) ([^ ]+) ?.*"); + private final Pattern renameableFieldPattern = Pattern + .compile("^\t(?:[a-z]+ |0x[0-9a-fA-F]+ )*?(\\[*(?:V|Z|C|B|S|I|F|J|D|L.+?;)) ([^ ]+) ?.*"); private final Pattern renameableMethodPattern = Pattern .compile("^\t(?:[a-z]+ |0x[0-9a-fA-F]+ )*?([^ ]+) (\\((?:\\[*(?:V|Z|C|B|S|I|F|J|D|L.+?;))*\\)[^ ]+) .*\\{"); @@ -512,7 +538,8 @@ public class Main extends JFrame { m = renameableMethodPattern.matcher(line); if (m.find()) { if (ClassUtil.isObjectClassMethod(m.group(1), m.group(2), false)) { - JOptionPane.showMessageDialog(null, "This method can not be renamed!", "Error!", JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, "This method can not be renamed!", "Error!", + JOptionPane.ERROR_MESSAGE); return; } setRenameInfo(m, lineEnd); @@ -602,8 +629,6 @@ public class Main extends JFrame { return selectFileWithSearch(s, null); } - public static File saveFolder = null; - public void save() { final JFileChooser fileChooser = new JFileChooser(saveFolder) { @@ -623,8 +648,8 @@ public class Main extends JFrame { final File file = fileChooser.getSelectedFile(); saveFolder = file.getParentFile(); if (file.exists()) { - int dialogResult = JOptionPane.showConfirmDialog(null, "This file already exists! Overwrite it?", "Warning", - JOptionPane.YES_NO_OPTION); + int dialogResult = JOptionPane.showConfirmDialog(null, "This file already exists! Overwrite it?", + "Warning", JOptionPane.YES_NO_OPTION); if (dialogResult == JOptionPane.YES_OPTION) { save(file, classNodes.values()); } @@ -651,9 +676,11 @@ public class Main extends JFrame { } } name = JOptionPane.showInputDialog(INSTANCE, - "If you want a runnable jar file, please enter the class name.\nIf you only want a library, leave it empty.", name); + "If you want a runnable jar file, please enter the class name.\nIf you only want a library, leave it empty.", + name); if (name != null && !name.isEmpty()) { - String val = "Manifest-Version: 1.0\n" + "Class-Path: .\n" + "Main-Class: " + name.replace('/', '.') + "\n\n"; + String val = "Manifest-Version: 1.0\n" + "Class-Path: .\n" + "Main-Class: " + name.replace('/', '.') + + "\n\n"; OTHER_FILES.put("META-INF/MANIFEST.MF", val.getBytes()); } } @@ -713,7 +740,8 @@ public class Main extends JFrame { public ArchiveTreeModel(JarFile jar) { super(new DefaultMutableTreeNode(jar.getName().split(File.separator.equals("\\") ? "\\\\" - : File.separator)[jar.getName().split(File.separator.equals("\\") ? "\\\\" : File.separator).length - 1])); + : File.separator)[jar.getName().split(File.separator.equals("\\") ? "\\\\" : File.separator).length + - 1])); try { ArrayList paths = new ArrayList<>(); classNodes.clear(); @@ -723,12 +751,14 @@ public class Main extends JFrame { JarEntry next = enumeration.nextElement(); byte[] data = IOUtils.toByteArray(jar.getInputStream(next)); if (next.getName().endsWith(".class")) { - if (next.getName().contains("/") ? (!next.getName().split("/")[next.getName().split("/").length - 1].contains("$")) + if (next.getName().contains("/") + ? (!next.getName().split("/")[next.getName().split("/").length - 1].contains("$")) : (!next.getName().contains("$"))) { paths.add(next.getName()); - } else if (next.getName().startsWith("$") || next.getName().contains("$$") || next.getName().endsWith("$")) { // obfuscated - // with - // $ + } else if (next.getName().startsWith("$") || next.getName().contains("$$") + || next.getName().endsWith("$")) { // obfuscated + // with + // $ paths.add(next.getName()); } ClassReader reader;