Пример #1
0
  private void saveDecompiledButtonActionPerformed(ActionEvent evt) {
    ScriptPack pack = decompiledTextArea.getScriptLeaf();
    int oldIndex = pack.scriptIndex;
    SWF.uncache(pack);

    try {
      String oldSp = null;
      List<ScriptPack> packs = abc.script_info.get(oldIndex).getPacks(abc, oldIndex, null);
      if (!packs.isEmpty()) {
        oldSp = packs.get(0).getClassPath().toString();
      }

      String as = decompiledTextArea.getText();
      abc.replaceScriptPack(pack, as);
      lastDecompiled = as;
      mainPanel.updateClassesList();

      if (oldSp != null) {
        hilightScript(getSwf(), oldSp);
      }
      setDecompiledEditMode(false);
      reload();
      View.showMessageDialog(
          this,
          AppStrings.translate("message.action.saved"),
          AppStrings.translate("dialog.message.title"),
          JOptionPane.INFORMATION_MESSAGE,
          Configuration.showCodeSavedMessage);
    } catch (AVM2ParseException ex) {
      abc.script_info.get(oldIndex).delete(abc, false);
      decompiledTextArea.gotoLine((int) ex.line);
      decompiledTextArea.markError();
      View.showMessageDialog(
          this,
          AppStrings.translate("error.action.save")
              .replace("%error%", ex.text)
              .replace("%line%", Long.toString(ex.line)),
          AppStrings.translate("error"),
          JOptionPane.ERROR_MESSAGE);
    } catch (CompilationException ex) {
      abc.script_info.get(oldIndex).delete(abc, false);
      decompiledTextArea.gotoLine((int) ex.line);
      decompiledTextArea.markError();
      View.showMessageDialog(
          this,
          AppStrings.translate("error.action.save")
              .replace("%error%", ex.text)
              .replace("%line%", Long.toString(ex.line)),
          AppStrings.translate("error"),
          JOptionPane.ERROR_MESSAGE);
    } catch (Throwable ex) {
      Logger.getLogger(ABCPanel.class.getName()).log(Level.SEVERE, null, ex);
    }
  }
 private void buttonActionPerformed(ActionEvent evt) {
   File selectedFile = mainPanel.showImportFileChooser("");
   if (selectedFile != null) {
     File selfile = Helper.fixDialogFile(selectedFile);
     byte[] data = Helper.readFile(selfile.getAbsolutePath());
     setToolTipText(data.length + " bytes");
     Class type = field.getType();
     if (type.equals(byte[].class)) {
       value = data;
     } else if (type.equals(ByteArrayRange.class)) {
       value = new ByteArrayRange(data);
     }
   }
 }
Пример #3
0
  public boolean search(final String txt, boolean ignoreCase, boolean regexp) {
    if ((txt != null) && (!txt.isEmpty())) {
      searchPanel.setOptions(ignoreCase, regexp);
      TagTreeModel ttm = (TagTreeModel) mainPanel.tagTree.getModel();
      TreeItem scriptsNode = ttm.getScriptsNode(mainPanel.getCurrentSwf());
      final List<ABCPanelSearchResult> found = new ArrayList<>();
      if (scriptsNode instanceof ClassesListTreeModel) {
        ClassesListTreeModel clModel = (ClassesListTreeModel) scriptsNode;
        List<ScriptPack> allpacks = clModel.getList();
        final Pattern pat =
            regexp
                ? Pattern.compile(
                    txt, ignoreCase ? (Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE) : 0)
                : Pattern.compile(
                    Pattern.quote(txt),
                    ignoreCase ? (Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE) : 0);
        int pos = 0;
        for (final ScriptPack pack : allpacks) {
          pos++;
          String workText = AppStrings.translate("work.searching");
          String decAdd = "";
          if (!SWF.isCached(pack)) {
            decAdd = ", " + AppStrings.translate("work.decompiling");
          }

          try {
            CancellableWorker worker =
                new CancellableWorker() {

                  @Override
                  public Void doInBackground() throws Exception {
                    if (pat.matcher(SWF.getCached(pack).text).find()) {
                      ABCPanelSearchResult searchResult = new ABCPanelSearchResult();
                      searchResult.scriptPack = pack;
                      found.add(searchResult);
                    }
                    return null;
                  }
                };
            worker.execute();
            Main.startWork(
                workText
                    + " \""
                    + txt
                    + "\""
                    + decAdd
                    + " - ("
                    + pos
                    + "/"
                    + allpacks.size()
                    + ") "
                    + pack.getClassPath().toString()
                    + "... ",
                worker);
            worker.get();
          } catch (InterruptedException ex) {
            break;
          } catch (ExecutionException ex) {
            Logger.getLogger(ABCPanel.class.getName()).log(Level.SEVERE, null, ex);
          }
        }
      }

      Main.stopWork();

      searchPanel.setSearchText(txt);

      View.execInEventDispatch(
          () -> {
            SearchResultsDialog<ABCPanelSearchResult> sr =
                new SearchResultsDialog<>(
                    ABCPanel.this.mainPanel.getMainFrame().getWindow(), txt, ABCPanel.this);
            sr.setResults(found);
            sr.setVisible(true);
          });

      return true;

      // return searchPanel.setResults(found);
    }
    return false;
  }