diff --git a/BytecodeViewer Beta 1.5.3.jar b/BytecodeViewer Beta 1.5.3.jar new file mode 100644 index 00000000..5c86b855 Binary files /dev/null and b/BytecodeViewer Beta 1.5.3.jar differ diff --git a/README.txt b/README.txt index 2a158038..a2968b79 100644 --- a/README.txt +++ b/README.txt @@ -126,4 +126,10 @@ Changelog: --- Beta 1.5.1 ---: 11/2/2014 - Fixed a CFR issue with packages. --- Beta 1.5.2 ---: -11/3/2014 - Fixed Refresh Class. \ No newline at end of file +11/3/2014 - Fixed Refresh Class. +--- Beta 1.5.3 ---: +11/3/2014 - Settings/Temp file are now in a global directory. +11/3/2014 - The GUI setttings now save. +11/3/2014 - Removed the option to disable syntax highlighting (since it's lightweight now). +11/3/2014 - About window now contains the version number and the BCV directory. +11/3/2014 - Added an option to toggle to outdated status. \ No newline at end of file diff --git a/VERSION b/VERSION index ea09b833..2de0fff6 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Beta 1.5.2 \ No newline at end of file +Beta 1.5.3 \ No newline at end of file diff --git a/src/me/konloch/kontainer/io/DiskReader.java b/src/me/konloch/kontainer/io/DiskReader.java index f4d6dfc5..8f53e5c1 100644 --- a/src/me/konloch/kontainer/io/DiskReader.java +++ b/src/me/konloch/kontainer/io/DiskReader.java @@ -27,6 +27,8 @@ public class DiskReader { if(!map.containsKey(fileName)) { try { File file = new File(fileName); + if(!file.exists()) //doesnt exist, return empty + return array; BufferedReader reader = new BufferedReader(new FileReader(file)); String add; diff --git a/src/the/bytecode/club/bytecodeviewer/BytecodeViewer.java b/src/the/bytecode/club/bytecodeviewer/BytecodeViewer.java index a0b78319..4bdf035e 100644 --- a/src/the/bytecode/club/bytecodeviewer/BytecodeViewer.java +++ b/src/the/bytecode/club/bytecodeviewer/BytecodeViewer.java @@ -154,6 +154,12 @@ import the.bytecode.club.bytecodeviewer.plugins.PluginManager; * 11/2/2014 - Fixed a CFR issue with packages. * ----Beta 1.5.2-----: * 11/3/2014 - Fixed Refresh Class. + * ----Beta 1.5.3-----: + * 11/3/2014 - Settings/Temp file are now in a global directory. + * 11/3/2014 - The GUI setttings now save. + * 11/3/2014 - Removed the option to disable syntax highlighting (since it's lightweight now). + * 11/3/2014 - About window now contains the version number and the BCV directory. + * 11/3/2014 - Added an option to toggle to outdated status. * * @author Konloch * @@ -164,38 +170,50 @@ public class BytecodeViewer { public static MainViewerGUI viewer = null; public static HashMap loadedClasses = new HashMap(); public static HashMap loadedResources = new HashMap(); - private static String filesName = "recentfiles.bcv"; - private static String pluginsName = "recentplugins.bcv"; - private static ArrayList recentFiles = DiskReader.loadArrayList(filesName, false); - private static ArrayList recentPlugins = DiskReader.loadArrayList(pluginsName, false); - private static int maxRecentFiles = 25; + private static int maxRecentFiles = 25; public static String fs = System.getProperty("file.separator"); public static String nl = System.getProperty("line.separator"); - public static String tempDirectory = "bcv_temp"; - public static String version = "Beta 1.5.2"; + private static String filesName = getBCVDirectory() + fs + "recentfiles.bcv"; + private static String pluginsName = getBCVDirectory() + fs + "recentplugins.bcv"; + private static String settingsName = getBCVDirectory() + fs + "settings.bcv"; + public static String tempDirectory = getBCVDirectory() + fs + "bcv_temp"; + private static ArrayList recentFiles = DiskReader.loadArrayList(filesName, false); + private static ArrayList recentPlugins = DiskReader.loadArrayList(pluginsName, false); + + public static String version = "Beta 1.5.3"; public static void main(String[] args) { cleanup(); Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { + saveGUISettings(); cleanup(); } }); Thread versionChecker = new Thread() { @Override public void run() { - try { - HttpURLConnection connection = (HttpURLConnection) new URL("https://raw.githubusercontent.com/Konloch/bytecode-viewer/master/VERSION").openConnection(); - connection.setUseCaches(false); - connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0"); - BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); - String version = reader.readLine(); - reader.close(); - if(!BytecodeViewer.version.equals(version)) - showMessage("You're running an outdated version of Bytecode Viewer, current version: " + BytecodeViewer.version + ", latest version: " + version+nl+nl+"https://github.com/Konloch/bytecode-viewer"); - } catch(Exception e) { - e.printStackTrace(); + while(viewer == null) + try { + sleep(50); + } catch (InterruptedException e1) { + e1.printStackTrace(); + } + + if(viewer.chckbxmntmNewCheckItem_12.isSelected()) { + try { + HttpURLConnection connection = (HttpURLConnection) new URL("https://raw.githubusercontent.com/Konloch/bytecode-viewer/master/VERSION").openConnection(); + connection.setUseCaches(false); + connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0"); + BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); + String version = reader.readLine(); + reader.close(); + if(!BytecodeViewer.version.equals(version)) + showMessage("You're running an outdated version of Bytecode Viewer, current version: " + BytecodeViewer.version + ", latest version: " + version+nl+nl+"https://github.com/Konloch/bytecode-viewer"); + } catch(Exception e) { + e.printStackTrace(); + } } } }; @@ -206,6 +224,7 @@ public class BytecodeViewer { e.printStackTrace(); } viewer = new MainViewerGUI(); + loadGUISettings(); resetRecentFilesMenu(); viewer.setVisible(true); } @@ -389,6 +408,14 @@ public class BytecodeViewer { } } + public static String getBCVDirectory() { + File f = new File(System.getProperty("user.home") + fs + ".Bytecode-Viewer"); + while(!f.exists()) + f.mkdirs(); + + return f.getAbsolutePath(); + } + private static String quickConvert(ArrayList a) { String s = ""; for(String r : a) @@ -396,4 +423,198 @@ public class BytecodeViewer { return s; } + public static void saveGUISettings() { + try { + DiskWriter.replaceFile(settingsName, "", false); + DiskWriter.writeNewLine(settingsName, ""+viewer.rbr.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.rsy.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.din.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.dc4.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.das.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.hes.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.hdc.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.dgs.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.ner.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.den.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.rgn.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.bto.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.nns.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.uto.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.udv.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.rer.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.fdi.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.asc.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.decodeenumswitch.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.sugarenums.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.decodestringswitch.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.arrayiter.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.collectioniter.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.innerclasses.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.removeboilerplate.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.removeinnerclasssynthetics.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.decodelambdas.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.hidebridgemethods.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.liftconstructorinit.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.removedeadmethods.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.removebadgenerics.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.sugarasserts.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.sugarboxing.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.showversion.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.decodefinally.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.tidymonitors.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.lenient.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.dumpclasspath.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.comments.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.forcetopsort.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.forcetopsortaggress.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.stringbuffer.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.stringbuilder.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.silent.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.recover.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.eclipse.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.override.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.showinferrable.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.aexagg.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.forcecondpropagate.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.hideutf.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.hidelongstrings.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.commentmonitor.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.allowcorrecting.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.labelledblocks.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.j14classobj.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.hidelangimports.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.recoverytypeclash.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.recoverytypehints.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.forceturningifs.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.forloopaggcapture.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.forceexceptionprune.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.chckbxmntmShowDebugLine.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.chckbxmntmSimplifyMemberReferences.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.mnMergeVariables.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.chckbxmntmNewCheckItem_1.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.chckbxmntmNewCheckItem_2.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.chckbxmntmNewCheckItem_3.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.chckbxmntmNewCheckItem_4.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.chckbxmntmNewCheckItem_5.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.chckbxmntmNewCheckItem_6.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.chckbxmntmNewCheckItem_7.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.chckbxmntmNewCheckItem_8.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.chckbxmntmNewCheckItem_9.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.chckbxmntmNewCheckItem_10.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.chckbxmntmNewCheckItem_11.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.chckbxmntmAppendBrackets.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.sourcePane.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.bytecodePane.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.hexPane.isSelected(), false); + if(viewer.decompilerGroup.isSelected(viewer.procyonDec.getModel())) + DiskWriter.writeNewLine(settingsName, "0", false); + else if(viewer.decompilerGroup.isSelected(viewer.cfrDec.getModel())) + DiskWriter.writeNewLine(settingsName, "1", false); + else if(viewer.decompilerGroup.isSelected(viewer.fernflowerDec.getModel())) + DiskWriter.writeNewLine(settingsName, "2", false); + DiskWriter.writeNewLine(settingsName, ""+viewer.debugHelpers.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.chckbxmntmNewCheckItem.isSelected(), false); + DiskWriter.writeNewLine(settingsName, ""+viewer.chckbxmntmNewCheckItem_12.isSelected(), false); + } catch(Exception e) { + e.printStackTrace(); + } + } + + public static void loadGUISettings() { + try { + viewer.rbr.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 1, true))); + viewer.rsy.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 2, false))); + viewer.din.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 3, false))); + viewer.dc4.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 4, false))); + viewer.das.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 5, false))); + viewer.hes.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 6, false))); + viewer.hdc.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 7, false))); + viewer.dgs.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 8, false))); + viewer.ner.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 9, false))); + viewer.den.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 10, false))); + viewer.rgn.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 11, false))); + viewer.bto.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 12, false))); + viewer.nns.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 13, false))); + viewer.uto.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 14, false))); + viewer.udv.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 15, false))); + viewer.rer.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 16, false))); + viewer.fdi.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 17, false))); + viewer.asc.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 18, false))); + viewer.decodeenumswitch.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 19, false))); + viewer.sugarenums.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 20, false))); + viewer.decodestringswitch.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 21, false))); + viewer.arrayiter.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 22, false))); + viewer.collectioniter.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 23, false))); + viewer.innerclasses.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 24, false))); + viewer.removeboilerplate.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 25, false))); + viewer.removeinnerclasssynthetics.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 26, false))); + viewer.decodelambdas.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 27, false))); + viewer.hidebridgemethods.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 28, false))); + viewer.liftconstructorinit.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 29, false))); + viewer.removedeadmethods.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 30, false))); + viewer.removebadgenerics.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 31, false))); + viewer.sugarasserts.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 32, false))); + viewer.sugarboxing.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 33, false))); + viewer.showversion.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 34, false))); + viewer.decodefinally.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 35, false))); + viewer.tidymonitors.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 36, false))); + viewer.lenient.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 37, false))); + viewer.dumpclasspath.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 38, false))); + viewer.comments.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 39, false))); + viewer.forcetopsort.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 40, false))); + viewer.forcetopsortaggress.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 41, false))); + viewer.stringbuffer.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 42, false))); + viewer.stringbuilder.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 43, false))); + viewer.silent.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 44, false))); + viewer.recover.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 45, false))); + viewer.eclipse.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 46, false))); + viewer.override.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 47, false))); + viewer.showinferrable.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 48, false))); + viewer.aexagg.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 49, false))); + viewer.forcecondpropagate.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 50, false))); + viewer.hideutf.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 51, false))); + viewer.hidelongstrings.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 52, false))); + viewer.commentmonitor.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 53, false))); + viewer.allowcorrecting.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 54, false))); + viewer.labelledblocks.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 55, false))); + viewer.j14classobj.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 56, false))); + viewer.hidelangimports.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 57, false))); + viewer.recoverytypeclash.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 58, false))); + viewer.recoverytypehints.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 59, false))); + viewer.forceturningifs.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 60, false))); + viewer.forloopaggcapture.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 61, false))); + viewer.forceexceptionprune.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 62, false))); + viewer.chckbxmntmShowDebugLine.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 63, false))); + viewer.chckbxmntmSimplifyMemberReferences.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 64, false))); + viewer.mnMergeVariables.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 65, false))); + viewer.chckbxmntmNewCheckItem_1.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 66, false))); + viewer.chckbxmntmNewCheckItem_2.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 67, false))); + viewer.chckbxmntmNewCheckItem_3.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 68, false))); + viewer.chckbxmntmNewCheckItem_4.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 69, false))); + viewer.chckbxmntmNewCheckItem_5.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 70, false))); + viewer.chckbxmntmNewCheckItem_6.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 71, false))); + viewer.chckbxmntmNewCheckItem_7.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 72, false))); + viewer.chckbxmntmNewCheckItem_8.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 73, false))); + viewer.chckbxmntmNewCheckItem_9.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 74, false))); + viewer.chckbxmntmNewCheckItem_10.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 75, false))); + viewer.chckbxmntmNewCheckItem_11.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 76, false))); + viewer.chckbxmntmAppendBrackets.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 77, false))); + viewer.sourcePane.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 78, false))); + viewer.bytecodePane.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 79, false))); + viewer.hexPane.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 80, false))); + int decompiler = Integer.parseInt(DiskReader.loadString(settingsName, 81, false)); + if(decompiler == 0) + viewer.decompilerGroup.setSelected(viewer.procyonDec.getModel(), true); + else if(decompiler == 1) + viewer.decompilerGroup.setSelected(viewer.cfrDec.getModel(), true); + else if(decompiler == 2) + viewer.decompilerGroup.setSelected(viewer.fernflowerDec.getModel(), true); + viewer.debugHelpers.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 82, false))); + viewer.chckbxmntmNewCheckItem.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 83, false))); + viewer.chckbxmntmNewCheckItem_12.setSelected(Boolean.parseBoolean(DiskReader.loadString(settingsName, 84, false))); + } catch(Exception e) { + e.printStackTrace(); + } + } + } diff --git a/src/the/bytecode/club/bytecodeviewer/decompilers/java/ProcyonDecompiler.java b/src/the/bytecode/club/bytecodeviewer/decompilers/java/ProcyonDecompiler.java index fb864767..3e5660f8 100644 --- a/src/the/bytecode/club/bytecodeviewer/decompilers/java/ProcyonDecompiler.java +++ b/src/the/bytecode/club/bytecodeviewer/decompilers/java/ProcyonDecompiler.java @@ -103,8 +103,7 @@ public class ProcyonDecompiler extends JavaDecompiler { throw new Exception("Unable to resolve type."); } StringWriter stringwriter = new StringWriter(); - settings.getLanguage().decompileType(resolvedType, - new PlainTextOutput(stringwriter), decompilationOptions); + settings.getLanguage().decompileType(resolvedType, new PlainTextOutput(stringwriter), decompilationOptions); String decompiledSource = stringwriter.toString(); @@ -127,13 +126,7 @@ public class ProcyonDecompiler extends JavaDecompiler { doSaveJarDecompiled(tempZip, new File(zipName)); } catch (Exception e) { e.printStackTrace(); - } - - //tempZip.delete(); - //new File(BytecodeViewer.tempDirectory + BytecodeViewer.fs + "temp").delete(); - - //BytecodeViewer.showMessage("ProcyonDecompiler currently doesn't decompile as zip, please wait till Beta 1.4 of Bytecode Viewer."); - + } } /** diff --git a/src/the/bytecode/club/bytecodeviewer/gui/AboutWindow.java b/src/the/bytecode/club/bytecodeviewer/gui/AboutWindow.java index 378104b5..f384975a 100644 --- a/src/the/bytecode/club/bytecodeviewer/gui/AboutWindow.java +++ b/src/the/bytecode/club/bytecodeviewer/gui/AboutWindow.java @@ -1,14 +1,19 @@ package the.bytecode.club.bytecodeviewer.gui; import javax.swing.JFrame; + import java.awt.Dimension; import java.awt.CardLayout; + import javax.swing.JTextArea; + +import the.bytecode.club.bytecodeviewer.BytecodeViewer; + import java.awt.Color; public class AboutWindow extends JFrame { public AboutWindow() { - setSize(new Dimension(403, 374)); + setSize(new Dimension(446, 374)); setType(Type.UTILITY); setTitle("Bytecode Viewer - About"); getContentPane().setLayout(new CardLayout(0, 0)); @@ -17,7 +22,7 @@ public class AboutWindow extends JFrame { txtrBytecodeViewerIs.setDisabledTextColor(Color.BLACK); txtrBytecodeViewerIs.setWrapStyleWord(true); getContentPane().add(txtrBytecodeViewerIs, "name_140466526081695"); - txtrBytecodeViewerIs.setText("Bytecode Viewer is an open source program\r\ndeveloped by Konloch (konloch@gmail.com)\r\n\r\nIt uses code from the following:\r\n J-RET by WaterWolf\r\n JHexPane by Sam Koivu\r\n RSyntaxTextArea by Bobbylight\r\n Commons IO by Apache\r\n ASM by OW2\r\n CFIDE by Bibl\r\n FernFlower by Stiver\r\n Procyon by Mstrobel\r\n CFR by Lee Benfield\r\n\r\nIf you're interested in Java Reverse\r\nEngineering, join The Bytecode Club\r\nhttp://the.bytecode.club"); + txtrBytecodeViewerIs.setText("Bytecode Viewer " + BytecodeViewer.version+ " is an open source program\r\ndeveloped by Konloch (konloch@gmail.com)\r\nDir: "+BytecodeViewer.getBCVDirectory()+"\r\n\r\nIt uses code from the following:\r\n J-RET by WaterWolf\r\n JHexPane by Sam Koivu\r\n RSyntaxTextArea by Bobbylight\r\n Commons IO by Apache\r\n ASM by OW2\r\n CFIDE by Bibl\r\n FernFlower by Stiver\r\n Procyon by Mstrobel\r\n CFR by Lee Benfield\r\n\r\nIf you're interested in Java Reverse\r\nEngineering, join The Bytecode Club\r\nhttp://the.bytecode.club"); txtrBytecodeViewerIs.setEnabled(false); this.setResizable(false); this.setLocationRelativeTo(null); diff --git a/src/the/bytecode/club/bytecodeviewer/gui/MainViewerGUI.java b/src/the/bytecode/club/bytecodeviewer/gui/MainViewerGUI.java index 119b2138..f33aa7cd 100644 --- a/src/the/bytecode/club/bytecodeviewer/gui/MainViewerGUI.java +++ b/src/the/bytecode/club/bytecodeviewer/gui/MainViewerGUI.java @@ -14,7 +14,6 @@ import java.awt.Component; import java.awt.Cursor; import java.awt.Dimension; -import javax.swing.JScrollPane; import javax.swing.filechooser.FileFilter; import javax.swing.JMenu; import javax.swing.JMenuItem; @@ -75,12 +74,9 @@ public class MainViewerGUI extends JFrame implements FileChangeNotifier { public JCheckBoxMenuItem rer = new JCheckBoxMenuItem("Remove empty exception ranges"); public JCheckBoxMenuItem fdi = new JCheckBoxMenuItem("Deinline finally structures"); public JCheckBoxMenuItem asc = new JCheckBoxMenuItem("Allow only ASCII characters in strings"); - private final JSeparator separator_2 = new JSeparator(); - public JCheckBoxMenuItem srcSyntax = new JCheckBoxMenuItem("Source Code Syntax"); - public JCheckBoxMenuItem bycSyntax = new JCheckBoxMenuItem("Bytecode Syntax"); - JCheckBoxMenuItem sourcePane = new JCheckBoxMenuItem("Source Pane"); - JCheckBoxMenuItem bytecodePane = new JCheckBoxMenuItem("Bytecode Pane"); - JCheckBoxMenuItem hexPane = new JCheckBoxMenuItem("Hex Pane"); + public JCheckBoxMenuItem sourcePane = new JCheckBoxMenuItem("Source Pane"); + public JCheckBoxMenuItem bytecodePane = new JCheckBoxMenuItem("Bytecode Pane"); + public JCheckBoxMenuItem hexPane = new JCheckBoxMenuItem("Hex Pane"); private final JMenuItem mntmNewWorkspace = new JMenuItem("New Workspace"); public JMenu mnRecentFiles = new JMenu("Recent Files"); private final JMenuItem mntmNewMenuItem = new JMenuItem("Save Java Files As.."); @@ -168,7 +164,7 @@ public class MainViewerGUI extends JFrame implements FileChangeNotifier { public final JCheckBoxMenuItem chckbxmntmNewCheckItem_10 = new JCheckBoxMenuItem("Flatten Switch Blocks"); public final JCheckBoxMenuItem chckbxmntmNewCheckItem_11 = new JCheckBoxMenuItem("Exclude Nested Types"); public final JCheckBoxMenuItem chckbxmntmAppendBrackets = new JCheckBoxMenuItem("Append Brackets To Labels"); - + public final JCheckBoxMenuItem chckbxmntmNewCheckItem_12 = new JCheckBoxMenuItem("Update Check"); public void setC(boolean busy) { if(busy) { @@ -258,8 +254,6 @@ public class MainViewerGUI extends JFrame implements FileChangeNotifier { udv.setSelected(true); fdi.setSelected(true); asc.setSelected(false); - srcSyntax.setSelected(true); - bycSyntax.setSelected(true); debugHelpers.setSelected(true); sourcePane.setSelected(true); bytecodePane.setSelected(true); @@ -312,6 +306,7 @@ public class MainViewerGUI extends JFrame implements FileChangeNotifier { /*none*/ //other chckbxmntmAppendBrackets.setSelected(true); + chckbxmntmNewCheckItem_12.setSelected(true); setJMenuBar(menuBar); @@ -426,6 +421,8 @@ public class MainViewerGUI extends JFrame implements FileChangeNotifier { mnNewMenu.add(mntmAbout); + mnNewMenu.add(chckbxmntmNewCheckItem_12); + JMenuItem mntmExit = new JMenuItem("Exit"); mnNewMenu.add(mntmExit); @@ -436,12 +433,6 @@ public class MainViewerGUI extends JFrame implements FileChangeNotifier { mnView.add(bytecodePane); mnView.add(hexPane); - mnView.add(separator_2); - - mnView.add(srcSyntax); - - mnView.add(bycSyntax); - menuBar.add(mnNewMenu_2); mnNewMenu_2.add(procyonDec);