proguardgui.java

来自「proguard 一个java的混淆器」· Java 代码 · 共 1,239 行 · 第 1/5 页

JAVA
1,239
字号
                           new LinearInt(-10, 120, new SmoothTiming(500, 1000))))),            new ColorSprite(new ConstantColor(Color.white),            new FontSprite(new ConstantFont(new Font("sansserif", Font.BOLD, 45)),            new ShadowedSprite(new ConstantInt(3),                               new ConstantInt(3),                               new ConstantDouble(0.4),                               new ConstantInt(1),                               new CompositeSprite(new Sprite[]            {                new TextSprite(new ConstantString(msg("shrinking")),                               new LinearInt(1000, 60, new SmoothTiming(1000, 2000)),                               new ConstantInt(70)),                new TextSprite(new ConstantString(msg("optimization")),                               new LinearInt(1000, 400, new SmoothTiming(1500, 2500)),                               new ConstantInt(60)),                new TextSprite(new ConstantString(msg("obfuscation")),                               new LinearInt(1000, 10, new SmoothTiming(2000, 3000)),                               new ConstantInt(145)),                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("moveToLibraries", "moveToLibrariesTip", libraryPanel);        libraryPanel.addCopyToPanelButton("moveToProgram",   "moveToProgramTip",   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);        addBorder(programPanel, "programJars" );        addBorder(libraryPanel, "libraryJars" );        JPanel inputOutputPanel = new JPanel(layout);        inputOutputPanel.add(tip(programPanel, "programJarsTip"), stretchPanelConstraints);        inputOutputPanel.add(tip(libraryPanel, "libraryJarsTip"), 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(tip(shrinkCheckBox,         "shrinkTip"),       constraintsLastStretch);        shrinkingOptionsPanel.add(tip(printUsageCheckBox,     "printUsageTip"),   constraints);        shrinkingOptionsPanel.add(tip(printUsageTextField,    "outputFileTip"),   constraintsStretch);        shrinkingOptionsPanel.add(tip(printUsageBrowseButton, "selectUsageFile"), constraintsLast);        JPanel shrinkingPanel = new JPanel(layout);        shrinkingPanel.add(shrinkingOptionsPanel, panelConstraints);        addClassSpecifications(extractClassSpecifications(boilerplateKeep),                               shrinkingPanel,                               boilerplateKeepCheckBoxes,                               boilerplateKeepTextFields);        addBorder(additionalKeepPanel, "keepAdditional");        shrinkingPanel.add(tip(additionalKeepPanel, "keepAdditionalTip"), 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(tip(obfuscateCheckBox,                  "obfuscateTip"),                    constraintsLastStretch);        obfuscationOptionsPanel.add(tip(printMappingCheckBox,               "printMappingTip"),                 constraints);        obfuscationOptionsPanel.add(tip(printMappingTextField,              "outputFileTip"),                   constraintsStretch);        obfuscationOptionsPanel.add(tip(printMappingBrowseButton,           "selectPrintMappingFile"),          constraintsLast);        obfuscationOptionsPanel.add(tip(applyMappingCheckBox,               "applyMappingTip"),                 constraints);        obfuscationOptionsPanel.add(tip(applyMappingTextField,              "inputFileTip"),                    constraintsStretch);        obfuscationOptionsPanel.add(tip(applyMappingBrowseButton,           "selectApplyMappingFile"),          constraintsLast);        obfuscationOptionsPanel.add(tip(obfuscationDictionaryCheckBox,      "obfuscationDictionaryTip"),        constraints);        obfuscationOptionsPanel.add(tip(obfuscationDictionaryTextField,     "inputFileTip"),                    constraintsStretch);        obfuscationOptionsPanel.add(tip(obfucationDictionaryBrowseButton,   "selectObfuscationDictionaryFile"), constraintsLast);        obfuscationOptionsPanel.add(tip(overloadAggressivelyCheckBox,       "overloadAggressivelyTip"),         constraintsLastStretch);        obfuscationOptionsPanel.add(tip(useUniqueClassMemberNamesCheckBox,  "useUniqueClassMemberNamesTip"),    constraintsLastStretch);        obfuscationOptionsPanel.add(tip(useMixedCaseClassNamesCheckBox,     "useMixedCaseClassNamesTip"),       constraintsLastStretch);        obfuscationOptionsPanel.add(tip(flattenPackageHierarchyCheckBox,    "flattenPackageHierarchyTip"),      constraints);        obfuscationOptionsPanel.add(tip(flattenPackageHierarchyTextField,   "packageTip"),                      constraintsLastStretch);        obfuscationOptionsPanel.add(tip(repackageClassesCheckBox,           "repackageClassesTip"),             constraints);        obfuscationOptionsPanel.add(tip(repackageClassesTextField,          "packageTip"),                      constraintsLastStretch);        obfuscationOptionsPanel.add(tip(keepAttributesCheckBox,             "keepAttributesTip"),               constraints);        obfuscationOptionsPanel.add(tip(keepAttributesTextField,            "attributesTip"),                   constraintsLastStretch);        obfuscationOptionsPanel.add(tip(newSourceFileAttributeCheckBox,     "renameSourceFileAttributeTip"),    constraints);        obfuscationOptionsPanel.add(tip(newSourceFileAttributeTextField,    "sourceFileAttributeTip"),          constraintsLastStretch);        obfuscationOptionsPanel.add(tip(adaptResourceFileNamesCheckBox,     "adaptResourceFileNamesTip"),       constraints);        obfuscationOptionsPanel.add(tip(adaptResourceFileNamesTextField,    "fileNameFilterTip"),               constraintsLastStretch);        obfuscationOptionsPanel.add(tip(adaptResourceFileContentsCheckBox,  "adaptResourceFileContentsTip"),    constraints);        obfuscationOptionsPanel.add(tip(adaptResourceFileContentsTextField, "fileNameFilterTip"),               constraintsLastStretch);        JPanel obfuscationPanel = new JPanel(layout);        obfuscationPanel.add(obfuscationOptionsPanel, panelConstraints);        addClassSpecifications(extractClassSpecifications(boilerplateKeepNames),                               obfuscationPanel,                               boilerplateKeepNamesCheckBoxes,                               boilerplateKeepNamesTextFields);        addBorder(additionalKeepNamesPanel, "keepNamesAdditional");        obfuscationPanel.add(tip(additionalKeepNamesPanel, "keepNamesAdditionalTip"), 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(tip(optimizeCheckBox,                "optimizeTip"),                constraintsLastStretch);        optimizationOptionsPanel.add(tip(allowAccessModificationCheckBox, "allowAccessModificationTip"), constraintsLastStretch);        optimizationOptionsPanel.add(tip(optimizationPassesLabel,         "optimizationPassesTip"),      constraints);        optimizationOptionsPanel.add(tip(optimizationPassesSpinner,       "optimizationPassesTip"),      constraintsLast);        JPanel optimizationPanel = new JPanel(layout);        optimizationPanel.add(optimizationOptionsPanel, panelConstraints);        addClassSpecifications(boilerplateNoSideEffectMethods,                               optimizationPanel,                               boilerplateNoSideEffectMethodCheckBoxes,                               null);        addBorder(additionalNoSideEffectsPanel, "assumeNoSideEffectsAdditional");        optimizationPanel.add(tip(additionalNoSideEffectsPanel, "assumeNoSideEffectsAdditionalTip"), stretchPanelConstraints);        // Create the options panel.        JPanel preverificationOptionsPanel = new JPanel(layout);        addBorder(preverificationOptionsPanel, "preverificationAndTargeting");        preverificationOptionsPanel.add(tip(preverifyCheckBox,    "preverifyTip"),    constraintsLastStretch);        preverificationOptionsPanel.add(tip(microEditionCheckBox, "microEditionTip"), constraintsLastStretch);        preverificationOptionsPanel.add(tip(targetCheckBox,       "targetTip"),       constraints);        preverificationOptionsPanel.add(tip(targetComboBox,       "targetTip"),       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(tip(verboseCheckBox,                          "verboseTip"),                          constraintsLastStretch);        consistencyPanel.add(tip(noteCheckBox,                             "noteTip"),                             constraintsLastStretch);        consistencyPanel.add(tip(warnCheckBox,                             "warnTip"),                             constraintsLastStretch);        consistencyPanel.add(tip(ignoreWarningsCheckBox,                   "ignoreWarningsTip"),                   constraintsLastStretch);        consistencyPanel.add(tip(skipNonPublicLibraryClassesCheckBox,      "skipNonPublicLibraryClassesTip"),      constraintsLastStretch);        consistencyPanel.add(tip(skipNonPublicLibraryClassMembersCheckBox, "skipNonPublicLibraryClassMembersTip"), constraintsLastStretch);        consistencyPanel.add(tip(forceProcessingCheckBox,                  "forceProcessingTip"),                  constraintsLastStretch);        consistencyPanel.add(tip(printSeedsCheckBox,                       "printSeedsTip"),                       constraints);        consistencyPanel.add(tip(printSeedsTextField,                      "outputFileTip"),                       constraintsStretch);        consistencyPanel.add(tip(printSeedsBrowseButton,                   "selectSeedsFile"),                     constraintsLast);        consistencyPanel.add(tip(printConfigurationCheckBox,               "printConfigurationTip"),               constraints);        consistencyPanel.add(tip(printConfigurationTextField,              "outputFileTip"),                       constraintsStretch);        consistencyPanel.add(tip(printConfigurationBrowseButton,           "selectConfigurationFile"),             constraintsLast);        consistencyPanel.add(tip(dumpCheckBox,                             "dumpTip"),                             constraints);        consistencyPanel.add(tip(dumpTextField,                            "outputFileTip"),                       constraintsStretch);        consistencyPanel.add(tip(dumpBrowseButton,                         "selectDumpFile"),                      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(tip(whyAreYouKeepingPanel, "whyAreYouKeepingTip"), 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());

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?