public void setCrashReport(CrashReport crashReport) {
    stackTraceView.populateFromCrashReport(crashReport);
    termTreeView.populateFromTerm(crashReport.getProps());

    Object[][] crashProps = {
      {"Pid", crashReport.getPid()},
      {"Reg. Name", crashReport.getRegisteredName()},
      {
        "Error",
        ErlyBerly.getTermFormatter()
            .exceptionToString(crashReport.getErrorClass(), crashReport.getErrorReason())
      },
      {
        "Initial Call",
        ErlyBerly.getTermFormatter()
            .modFuncArgsToString((OtpErlangTuple) crashReport.getProcessInitialCall())
      }
    };

    TableColumn<Object[], Object> keyColumn = new TableColumn<>("Key");
    TableColumn<Object[], Object> valueColumn = new TableColumn<>("Value");

    keyColumn.setCellValueFactory(
        new Callback<CellDataFeatures<Object[], Object>, ObservableValue<Object>>() {
          @Override
          public ObservableValue<Object> call(CellDataFeatures<Object[], Object> p) {
            return new SimpleObjectProperty<>((p.getValue()[0]));
          }
        });

    valueColumn.setCellValueFactory(
        new Callback<CellDataFeatures<Object[], Object>, ObservableValue<Object>>() {
          @Override
          public ObservableValue<Object> call(CellDataFeatures<Object[], Object> p) {
            return new SimpleObjectProperty<>((p.getValue()[1]));
          }
        });

    crashInfoTable.getColumns().add(keyColumn);
    crashInfoTable.getColumns().add(valueColumn);

    crashInfoTable.getItems().addAll(crashProps);

    crashReport
        .getCallArgs()
        .ifPresent(
            (callArgs) -> {
              argsTreeView.populateFromListContents(callArgs);
            });
  }
  @Override
  public void initialize(URL url, ResourceBundle r) {
    modFuncContextMenu = new ModFuncContextMenu(dbgController);
    modulesTree
        .getSelectionModel()
        .selectedItemProperty()
        .addListener(
            (o, old, newItem) -> {
              modFuncContextMenu.selectedTreeItemProperty().set(newItem);
              if (newItem != null)
                modFuncContextMenu.selectedItemProperty().set(newItem.getValue());
            });

    sortedTreeModules.setComparator(treeItemModFuncComparator());

    SplitPane.setResizableWithParent(modulesBox, Boolean.FALSE);

    ErlyBerly.nodeAPI().connectedProperty().addListener(this::onConnected);

    modulesTree.setCellFactory(new ModFuncTreeCellFactory(dbgController));
    /*modulesTree.setOnKeyPressed(this::onKeyPressInModuleTree);*/
    modulesTree.setContextMenu(modFuncContextMenu);

    addModulesFloatySearchControl();

    dbgController.initialize(url, r);

    dbgSplitPane.getItems().add(new DbgTraceView(dbgController));
  }
  private void onConnected(Observable o) {
    boolean connected = ErlyBerly.nodeAPI().connectedProperty().get();

    // disable buttons when not connected
    /*seqTraceMenuItem.setDisable(!connected);*/

    if (connected) {
      refreshModules();
      dbgController.reapplyTraces();
    } else {
      treeModules.clear();
    }
  }
Beispiel #4
0
  public static void showSourceCodeWindow(String title, String moduleSourceCode) {
    assert Platform.isFxApplicationThread();

    TextArea textArea;

    textArea = new TextArea(moduleSourceCode);
    textArea.getStyleClass().add("mod-src");
    textArea.setEditable(false);

    Scene scene = new Scene(textArea, 800, 800);
    ErlyBerly.applyCssToWIndow(scene);

    Stage primaryStage;

    primaryStage = new Stage();
    primaryStage.setTitle(title);
    primaryStage.setScene(scene);
    primaryStage.show();

    CloseWindowOnEscape.apply(scene, primaryStage);
  }