📄 proguardgui.java
字号:
new TextSprite(new ConstantString(msg("preverification")), new LinearInt(1000, 350, new SmoothTiming(2500, 3500)), new ConstantInt(140)), new FontSprite(new ConstantFont(new Font("sansserif", Font.BOLD, 30)), new TextSprite(new TypeWriterString(msg("developed"), new LinearTiming(3500, 5500)), new ConstantInt(250), new ConstantInt(200))), })))), }); splashPanel = new SplashPanel(splash, 0.5, 5500L); splashPanel.setPreferredSize(new Dimension(0, 200)); JTextArea welcomeTextArea = new JTextArea(msg("proGuardInfo"), 18, 50); welcomeTextArea.setOpaque(false); welcomeTextArea.setEditable(false); welcomeTextArea.setLineWrap(true); welcomeTextArea.setWrapStyleWord(true); welcomeTextArea.setPreferredSize(new Dimension(0, 0)); welcomeTextArea.setBorder(new EmptyBorder(20, 20, 20, 20)); addBorder(welcomeTextArea, "welcome"); JPanel proGuardPanel = new JPanel(layout); proGuardPanel.add(splashPanel, splashPanelConstraints); proGuardPanel.add(welcomeTextArea, welcomeTextAreaConstraints); // Create the input panel. // TODO: properly clone the ClassPath objects. // This is awkward to implement in the generic ListPanel.addElements(...) // method, since the Object.clone() method is not public. programPanel.addCopyToPanelButton(msg("moveToLibraries"), libraryPanel); libraryPanel.addCopyToPanelButton(msg("moveToProgram"), programPanel); // Collect all buttons of these panels and make sure they are equally // sized. List panelButtons = new ArrayList(); panelButtons.addAll(programPanel.getButtons()); panelButtons.addAll(libraryPanel.getButtons()); setCommonPreferredSize(panelButtons); panelButtons = null; addBorder(programPanel, "programJars" ); addBorder(libraryPanel, "libraryJars" ); JPanel inputOutputPanel = new JPanel(layout); inputOutputPanel.add(programPanel, stretchPanelConstraints); inputOutputPanel.add(libraryPanel, stretchPanelConstraints); // Load the boiler plate options. loadBoilerplateConfiguration(); // Create the boiler plate keep panels. boilerplateKeepCheckBoxes = new JCheckBox[boilerplateKeep.length]; boilerplateKeepTextFields = new JTextField[boilerplateKeep.length]; JButton printUsageBrowseButton = createBrowseButton(printUsageTextField, msg("selectUsageFile")); JPanel shrinkingOptionsPanel = new JPanel(layout); addBorder(shrinkingOptionsPanel, "options"); shrinkingOptionsPanel.add(shrinkCheckBox, constraintsLastStretch); shrinkingOptionsPanel.add(printUsageCheckBox, constraints); shrinkingOptionsPanel.add(printUsageTextField, constraintsStretch); shrinkingOptionsPanel.add(printUsageBrowseButton, constraintsLast); JPanel shrinkingPanel = new JPanel(layout); shrinkingPanel.add(shrinkingOptionsPanel, panelConstraints); addClassSpecifications(extractClassSpecifications(boilerplateKeep), shrinkingPanel, boilerplateKeepCheckBoxes, boilerplateKeepTextFields); addBorder(additionalKeepPanel, "keepAdditional"); shrinkingPanel.add(additionalKeepPanel, stretchPanelConstraints); // Create the boiler plate keep names panels. boilerplateKeepNamesCheckBoxes = new JCheckBox[boilerplateKeepNames.length]; boilerplateKeepNamesTextFields = new JTextField[boilerplateKeepNames.length]; JButton printMappingBrowseButton = createBrowseButton(printMappingTextField, msg("selectPrintMappingFile")); JButton applyMappingBrowseButton = createBrowseButton(applyMappingTextField, msg("selectApplyMappingFile")); JButton obfucationDictionaryBrowseButton = createBrowseButton(obfuscationDictionaryTextField, msg("selectObfuscationDictionaryFile")); JPanel obfuscationOptionsPanel = new JPanel(layout); addBorder(obfuscationOptionsPanel, "options"); obfuscationOptionsPanel.add(obfuscateCheckBox, constraintsLastStretch); obfuscationOptionsPanel.add(printMappingCheckBox, constraints); obfuscationOptionsPanel.add(printMappingTextField, constraintsStretch); obfuscationOptionsPanel.add(printMappingBrowseButton, constraintsLast); obfuscationOptionsPanel.add(applyMappingCheckBox, constraints); obfuscationOptionsPanel.add(applyMappingTextField, constraintsStretch); obfuscationOptionsPanel.add(applyMappingBrowseButton, constraintsLast); obfuscationOptionsPanel.add(obfuscationDictionaryCheckBox, constraints); obfuscationOptionsPanel.add(obfuscationDictionaryTextField, constraintsStretch); obfuscationOptionsPanel.add(obfucationDictionaryBrowseButton, constraintsLast); obfuscationOptionsPanel.add(overloadAggressivelyCheckBox, constraintsLastStretch); obfuscationOptionsPanel.add(useUniqueClassMemberNamesCheckBox, constraintsLastStretch); obfuscationOptionsPanel.add(useMixedCaseClassNamesCheckBox, constraintsLastStretch); obfuscationOptionsPanel.add(flattenPackageHierarchyCheckBox, constraints); obfuscationOptionsPanel.add(flattenPackageHierarchyTextField, constraintsLastStretch); obfuscationOptionsPanel.add(repackageClassesCheckBox, constraints); obfuscationOptionsPanel.add(repackageClassesTextField, constraintsLastStretch); obfuscationOptionsPanel.add(keepAttributesCheckBox, constraints); obfuscationOptionsPanel.add(keepAttributesTextField, constraintsLastStretch); obfuscationOptionsPanel.add(newSourceFileAttributeCheckBox, constraints); obfuscationOptionsPanel.add(newSourceFileAttributeTextField, constraintsLastStretch); obfuscationOptionsPanel.add(adaptResourceFileNamesCheckBox, constraints); obfuscationOptionsPanel.add(adaptResourceFileNamesTextField, constraintsLastStretch); obfuscationOptionsPanel.add(adaptResourceFileContentsCheckBox, constraints); obfuscationOptionsPanel.add(adaptResourceFileContentsTextField, constraintsLastStretch); JPanel obfuscationPanel = new JPanel(layout); obfuscationPanel.add(obfuscationOptionsPanel, panelConstraints); addClassSpecifications(extractClassSpecifications(boilerplateKeepNames), obfuscationPanel, boilerplateKeepNamesCheckBoxes, boilerplateKeepNamesTextFields); addBorder(additionalKeepNamesPanel, "keepNamesAdditional"); obfuscationPanel.add(additionalKeepNamesPanel, stretchPanelConstraints); // Create the boiler plate "no side effect methods" panels. boilerplateNoSideEffectMethodCheckBoxes = new JCheckBox[boilerplateNoSideEffectMethods.length]; JPanel optimizationOptionsPanel = new JPanel(layout); addBorder(optimizationOptionsPanel, "options"); optimizationOptionsPanel.add(optimizeCheckBox, constraintsLastStretch); optimizationOptionsPanel.add(allowAccessModificationCheckBox, constraintsLastStretch); optimizationOptionsPanel.add(optimizationPassesLabel, constraints); optimizationOptionsPanel.add(optimizationPassesSpinner, constraintsLast); JPanel optimizationPanel = new JPanel(layout); optimizationPanel.add(optimizationOptionsPanel, panelConstraints); addClassSpecifications(boilerplateNoSideEffectMethods, optimizationPanel, boilerplateNoSideEffectMethodCheckBoxes, null); addBorder(additionalNoSideEffectsPanel, "assumeNoSideEffectsAdditional"); optimizationPanel.add(additionalNoSideEffectsPanel, stretchPanelConstraints); // Create the options panel. JPanel preverificationOptionsPanel = new JPanel(layout); addBorder(preverificationOptionsPanel, "preverificationAndTargeting"); preverificationOptionsPanel.add(preverifyCheckBox, constraintsLastStretch); preverificationOptionsPanel.add(microEditionCheckBox, constraintsLastStretch); preverificationOptionsPanel.add(targetCheckBox, constraints); preverificationOptionsPanel.add(targetComboBox, constraintsLast); JButton printSeedsBrowseButton = createBrowseButton(printSeedsTextField, msg("selectSeedsFile")); JButton printConfigurationBrowseButton = createBrowseButton(printConfigurationTextField, msg( "selectConfigurationFile")); JButton dumpBrowseButton = createBrowseButton(dumpTextField, msg("selectDumpFile")); // Select the most recent target by default. targetComboBox.setSelectedIndex(targetComboBox.getItemCount() - 1); JPanel consistencyPanel = new JPanel(layout); addBorder(consistencyPanel, "consistencyAndCorrectness"); consistencyPanel.add(verboseCheckBox, constraintsLastStretch); consistencyPanel.add(noteCheckBox, constraintsLastStretch); consistencyPanel.add(warnCheckBox, constraintsLastStretch); consistencyPanel.add(ignoreWarningsCheckBox, constraintsLastStretch); consistencyPanel.add(skipNonPublicLibraryClassesCheckBox, constraintsLastStretch); consistencyPanel.add(skipNonPublicLibraryClassMembersCheckBox, constraintsLastStretch); consistencyPanel.add(forceProcessingCheckBox, constraintsLastStretch); consistencyPanel.add(printSeedsCheckBox, constraints); consistencyPanel.add(printSeedsTextField, constraintsStretch); consistencyPanel.add(printSeedsBrowseButton, constraintsLast); consistencyPanel.add(printConfigurationCheckBox, constraints); consistencyPanel.add(printConfigurationTextField, constraintsStretch); consistencyPanel.add(printConfigurationBrowseButton, constraintsLast); consistencyPanel.add(dumpCheckBox, constraints); consistencyPanel.add(dumpTextField, constraintsStretch); consistencyPanel.add(dumpBrowseButton, constraintsLast); // Collect all components that are followed by text fields and make // sure they are equally sized. That way the text fields start at the // same horizontal position. setCommonPreferredSize(Arrays.asList(new JComponent[] { printMappingCheckBox, applyMappingCheckBox, flattenPackageHierarchyCheckBox, repackageClassesCheckBox, newSourceFileAttributeCheckBox, })); JPanel optionsPanel = new JPanel(layout); optionsPanel.add(preverificationOptionsPanel, panelConstraints); optionsPanel.add(consistencyPanel, panelConstraints); addBorder(whyAreYouKeepingPanel, "whyAreYouKeeping"); optionsPanel.add(whyAreYouKeepingPanel, stretchPanelConstraints); // Create the process panel. consoleTextArea.setOpaque(false); consoleTextArea.setEditable(false); consoleTextArea.setLineWrap(false); consoleTextArea.setWrapStyleWord(false); JScrollPane consoleScrollPane = new JScrollPane(consoleTextArea); consoleScrollPane.setBorder(new EmptyBorder(1, 1, 1, 1)); addBorder(consoleScrollPane, "processingConsole"); JPanel processPanel = new JPanel(layout); processPanel.add(consoleScrollPane, stretchPanelConstraints); // Create the load, save, and process buttons. JButton loadButton = new JButton(msg("loadConfiguration")); loadButton.addActionListener(new MyLoadConfigurationActionListener()); JButton viewButton = new JButton(msg("viewConfiguration")); viewButton.addActionListener(new MyViewConfigurationActionListener()); JButton saveButton = new JButton(msg("saveConfiguration")); saveButton.addActionListener(new MySaveConfigurationActionListener()); JButton processButton = new JButton(msg("process")); processButton.addActionListener(new MyProcessActionListener()); // Create the ReTrace panel. JPanel reTraceSettingsPanel = new JPanel(layout); addBorder(reTraceSettingsPanel, "reTraceSettings"); JButton reTraceMappingBrowseButton = createBrowseButton(reTraceMappingTextField, msg("selectApplyMappingFile")); JLabel reTraceMappingLabel = new JLabel(msg("mappingFile")); reTraceMappingLabel.setForeground(reTraceVerboseCheckBox.getForeground()); reTraceSettingsPanel.add(reTraceVerboseCheckBox, constraintsLastStretch); reTraceSettingsPanel.add(reTraceMappingLabel, constraints); reTraceSettingsPanel.add(reTraceMappingTextField, constraintsStretch); reTraceSettingsPanel.add(reTraceMappingBrowseButton, constraintsLast); stackTraceTextArea.setOpaque(true); stackTraceTextArea.setEditable(true); stackTraceTextArea.setLineWrap(false); stackTraceTextArea.setWrapStyleWord(true); JScrollPane stackTraceScrollPane = new JScrollPane(stackTraceTextArea); addBorder(stackTraceScrollPane, "obfuscatedStackTrace"); reTraceTextArea.setOpaque(false); reTraceTextArea.setEditable(false); reTraceTextArea.setLineWrap(true); reTraceTextArea.setWrapStyleWord(true); JScrollPane reTraceScrollPane = new JScrollPane(reTraceTextArea); reTraceScrollPane.setBorder(new EmptyBorder(1, 1, 1, 1)); addBorder(reTraceScrollPane, "deobfuscatedStackTrace"); JPanel reTracePanel = new JPanel(layout); reTracePanel.add(reTraceSettingsPanel, panelConstraints); reTracePanel.add(stackTraceScrollPane, panelConstraints); reTracePanel.add(reTraceScrollPane, stretchPanelConstraints);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -