private Language findLanguageByName(String languageName) { if (languageName != null) { if (languageName.equals(Languages.java().getName())) { return Languages.java(); } else if (languageName.equals(Languages.bytecode().getName())) { return Languages.bytecode(); } else if (languageName.equals(Languages.bytecodeAst().getName())) { return Languages.bytecodeAst(); } for (Language language : Languages.debug()) { if (languageName.equals(language.getName())) { return language; } } } return Languages.java(); }
public void saveConfig() { // Registry path on Windows Xp: // HKEY_CURRENT_USER/Software/JavaSoft/Prefs/us/deathmarine/luyten try { Preferences prefs = Preferences.userNodeForPackage(ConfigSaver.class); prefs.putBoolean(FLATTEN_SWITCH_BLOCKS_ID, decompilerSettings.getFlattenSwitchBlocks()); prefs.putBoolean(FORCE_EXPLICIT_IMPORTS_ID, decompilerSettings.getForceExplicitImports()); prefs.putBoolean(SHOW_SYNTHETIC_MEMBERS_ID, decompilerSettings.getShowSyntheticMembers()); prefs.putBoolean(EXCLUDE_NESTED_TYPES_ID, decompilerSettings.getExcludeNestedTypes()); prefs.putBoolean(FORCE_EXPLICIT_TYPE_ARGUMENTS_ID, decompilerSettings.getForceExplicitTypeArguments()); prefs.putBoolean(RETAIN_REDUNDANT_CASTS_ID, decompilerSettings.getRetainRedundantCasts()); prefs.putBoolean(INCLUDE_ERROR_DIAGNOSTICS_ID, decompilerSettings.getIncludeErrorDiagnostics()); prefs.putBoolean(UNICODE_REPLACE_ENABLED_ID, decompilerSettings.isUnicodeOutputEnabled()); prefs.put(LANGUAGE_NAME_ID, decompilerSettings.getLanguage().getName()); saveWindowPosition(prefs, MAIN_WINDOW_ID_PREFIX, mainWindowPosition); saveWindowPosition(prefs, FIND_WINDOW_ID_PREFIX, findWindowPosition); saveLuytenPreferences(prefs); } catch (Exception e) { Luyten.showExceptionDialog("Exception!", e); } }
public TypeDecompilationResults decompileType(final TypeDefinition type, final ITextOutput output, final DecompilationOptions options) { writeCommentLine(output, typeToString(type, true)); return new TypeDecompilationResults( null); }
private void decompileWithoutLinks() { this.invalidateContent(); isNavigationLinksValid = false; textArea.setHyperlinksEnabled(false); StringWriter stringwriter = new StringWriter(); PlainTextOutput plainTextOutput = new PlainTextOutput(stringwriter); plainTextOutput.setUnicodeOutputEnabled(decompilationOptions.getSettings().isUnicodeOutputEnabled()); settings.getLanguage().decompileType(type, plainTextOutput, decompilationOptions); setContentPreserveLastScrollPosition(stringwriter.toString()); this.isContentValid = true; }
settings.setLanguage(Languages.java()); } else if (bytecode.isSelected()) { settings.setLanguage(Languages.bytecode()); } else if (bytecodeAST.isSelected()) { settings.setLanguage(Languages.bytecodeAst());
decompilerSettings = new DecompilerSettings(); if (decompilerSettings.getJavaFormattingOptions() == null) { decompilerSettings.setJavaFormattingOptions(JavaFormattingOptions.createDefault()); try { Preferences prefs = Preferences.userNodeForPackage(ConfigSaver.class); if (!prefs.get(LANGUAGE_NAME_ID, decompilerSettings.getLanguage().getName()) .equals(decompilerSettings.getLanguage().getName())) prefs.put(LANGUAGE_NAME_ID, decompilerSettings.getLanguage().getName()); prefs.getBoolean(INCLUDE_ERROR_DIAGNOSTICS_ID, decompilerSettings.getIncludeErrorDiagnostics())); decompilerSettings.setLanguage( findLanguageByName(prefs.get(LANGUAGE_NAME_ID, decompilerSettings.getLanguage().getName()))); decompilerSettings.setUnicodeOutputEnabled(prefs.getBoolean(UNICODE_REPLACE_ENABLED_ID, false));
public final boolean isBefore(final TextLocation other) { //noinspection SimplifiableIfStatement if (other == null || other.isEmpty()) { return false; } return _line < other._line || _line == other._line && _column < other._column; }
public void decompilePackage( final String packageName, final Iterable<TypeDefinition> types, final ITextOutput output, final DecompilationOptions options) { writeCommentLine(output, packageName); }
languageLookup.put(Languages.java().getName(), Languages.java()); languageLookup.put(Languages.bytecode().getName(), Languages.bytecode()); languageLookup.put(Languages.bytecodeAst().getName(), Languages.bytecodeAst()); java = new JRadioButtonMenuItem(Languages.java().getName()); java.getModel().setActionCommand(Languages.java().getName()); java.setSelected(Languages.java().getName().equals(settings.getLanguage().getName())); languagesGroup.add(java); settingsMenu.add(java); bytecode = new JRadioButtonMenuItem(Languages.bytecode().getName()); bytecode.getModel().setActionCommand(Languages.bytecode().getName()); bytecode.setSelected(Languages.bytecode().getName().equals(settings.getLanguage().getName())); languagesGroup.add(bytecode); settingsMenu.add(bytecode); bytecodeAST = new JRadioButtonMenuItem(Languages.bytecodeAst().getName()); bytecodeAST.getModel().setActionCommand(Languages.bytecodeAst().getName()); bytecodeAST.setSelected(Languages.bytecodeAst().getName().equals(settings.getLanguage().getName())); languagesGroup.add(bytecodeAST); settingsMenu.add(bytecodeAST); for (final Language language : Languages.debug()) { final JRadioButtonMenuItem m = new JRadioButtonMenuItem(language.getName()); m.getModel().setActionCommand(language.getName()); m.setSelected(language.getName().equals(settings.getLanguage().getName())); languagesGroup.add(m); debugLanguagesMenu.add(m); languageLookup.put(language.getName(), language);
public TypeDecompilationResults decompileType(final TypeDefinition type, final ITextOutput output, final DecompilationOptions options) { writeCommentLine(output, typeToString(type, true)); return new TypeDecompilationResults( null); }
settings.getLanguage().decompileType(type, plainTextOutput, decompilationOptions); textContent = stringwriter.toString(); isSelectionMapsPopulated = true;
public TypeDecompilationResults decompileType(final TypeDefinition type, final ITextOutput output, final DecompilationOptions options) { writeCommentLine(output, typeToString(type, true)); return new TypeDecompilationResults( null); }
private void doSaveClassDecompiled(File inFile, File outFile) throws Exception { DecompilerSettings settings = cloneSettings(); LuytenTypeLoader typeLoader = new LuytenTypeLoader(); MetadataSystem metadataSystem = new MetadataSystem(typeLoader); TypeReference type = metadataSystem.lookupType(inFile.getCanonicalPath()); DecompilationOptions decompilationOptions = new DecompilationOptions(); decompilationOptions.setSettings(settings); decompilationOptions.setFullDecompilation(true); boolean isUnicodeEnabled = decompilationOptions.getSettings().isUnicodeOutputEnabled(); TypeDefinition resolvedType = null; if (type == null || ((resolvedType = type.resolve()) == null)) { throw new Exception("Unable to resolve type."); } StringWriter stringwriter = new StringWriter(); PlainTextOutput plainTextOutput = new PlainTextOutput(stringwriter); plainTextOutput.setUnicodeOutputEnabled(isUnicodeEnabled); settings.getLanguage().decompileType(resolvedType, plainTextOutput, decompilationOptions); String decompiledSource = stringwriter.toString(); System.out.println("[SaveAll]: " + inFile.getName() + " -> " + outFile.getName()); try (FileOutputStream fos = new FileOutputStream(outFile); OutputStreamWriter writer = isUnicodeEnabled ? new OutputStreamWriter(fos, "UTF-8") : new OutputStreamWriter(fos); BufferedWriter bw = new BufferedWriter(writer);) { bw.write(decompiledSource); bw.flush(); } }
public void run() { try { Thread.sleep(500); String internalName = FindBox.class.getName(); TypeReference type = metadataSystem.lookupType(internalName); TypeDefinition resolvedType = null; if ((type == null) || ((resolvedType = type.resolve()) == null)) { return; } StringWriter stringwriter = new StringWriter(); PlainTextOutput plainTextOutput = new PlainTextOutput(stringwriter); plainTextOutput .setUnicodeOutputEnabled(decompilationOptions.getSettings().isUnicodeOutputEnabled()); settings.getLanguage().decompileType(resolvedType, plainTextOutput, decompilationOptions); String decompiledSource = stringwriter.toString(); OpenFile open = new OpenFile(internalName, "*/" + internalName, getTheme(), mainWindow); open.setContent(decompiledSource); JTabbedPane pane = new JTabbedPane(); pane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); pane.addTab("title", open.scrollPane); pane.setSelectedIndex(pane.indexOfTab("title")); } catch (Exception e) { Luyten.showExceptionDialog("Exception!", e); } } }.start();
plainTextOutput.setUnicodeOutputEnabled( decompilationOptions.getSettings().isUnicodeOutputEnabled()); settings.getLanguage().decompileType(resolvedType, plainTextOutput, decompilationOptions); if (search(stringwriter.toString()))
PlainTextOutput plainTextOutput = new PlainTextOutput(writer); plainTextOutput.setUnicodeOutputEnabled(isUnicodeEnabled); settings.getLanguage().decompileType(resolvedType, plainTextOutput, decompilationOptions); writer.flush(); } catch (Exception e) {