Exemplo n.º 1
0
  /** Initializes the line number column. */
  public void initializeLineNumberColumn() {

    final StringConverter<LineNumberCellData> stringConverter =
        new StringConverter<LineNumberCellData>() {
          @Override
          public LineNumberCellData fromString(String s) {
            int i = 1;
            try {
              i = Integer.parseInt(s);
            } catch (NumberFormatException nfe) {
            }
            return new LineNumberCellData(i);
          }

          @Override
          public String toString(LineNumberCellData lncd) {
            return lncd.toString();
          }
        };

    Callback<ListView<LineNumberCellData>, ListCell<LineNumberCellData>> forListView =
        new Callback<ListView<LineNumberCellData>, ListCell<LineNumberCellData>>() {
          @Override
          public ListCell<LineNumberCellData> call(ListView<LineNumberCellData> param) {
            TextFieldListCell<LineNumberCellData> tflc =
                new TextFieldListCell<LineNumberCellData>(stringConverter);
            tflc.setAlignment(Pos.CENTER);
            tflc.setEditable(false);
            tflc.styleProperty().bind(cellHeightStyle.concat(cellFontSizeStyle));
            return tflc;
          }
        };

    lineNumberListView.setCellFactory(forListView);

    for (int i = 1; i <= currentNumLines; i++) {
      lineNumberListView.getItems().add(new LineNumberCellData(i));
    }

    lineNumberListView.setEventDispatcher(
        new MyEventDispatcher(lineNumberListView.getEventDispatcher()));

    Platform.runLater(
        new Runnable() {
          @Override
          public void run() {
            // Get scroll bars
            final ScrollBar lineNumberH =
                (ScrollBar) lineNumberListView.lookup(".scroll-bar:horizontal");
            final ScrollBar lineNumberV =
                (ScrollBar) lineNumberListView.lookup(".scroll-bar:vertical");
            final ScrollBar textAreaV = (ScrollBar) textArea.lookup(".scroll-bar:vertical");

            // Opacity (-7 to get rid of scroll bars)
            if (lineNumberH != null) {
              lineNumberH.setStyle("-fx-opacity: 0; -fx-padding:-7;");
              lineNumberH.setDisable(true);
            }
            if (lineNumberV != null) {
              lineNumberV.setStyle("-fx-opacity: 0; -fx-padding:-7;");
              lineNumberV.setDisable(true);
            }

            lineNumberListView.setStyle("-fx-padding:5 0 5 0;");

            // Change appropriately according to text Area
            if (textAreaV != null) {
              textAreaV
                  .valueProperty()
                  .addListener(
                      new ChangeListener<Number>() {
                        @Override
                        public void changed(
                            ObservableValue<? extends Number> arg0, Number oldVal, Number newVal) {
                          lineNumberV.valueProperty().set(newVal.doubleValue());
                        }
                      });
            }
          }
        });

    int size = mediator.getDesktopController().getOtherSettings().showLineNumbers.get() ? 30 : 0;
    gridPane.getColumnConstraints().get(1).setMinWidth(size);
    gridPane.getColumnConstraints().get(1).setMaxWidth(size);
    gridPane.getColumnConstraints().get(1).setPrefWidth(size);
  }
Exemplo n.º 2
0
  /** Initializes the debug column. */
  public void initializeDebugColumn() {

    final Callback<DebugCellData, ObservableValue<Boolean>> getProperty =
        new Callback<DebugCellData, ObservableValue<Boolean>>() {
          @Override
          public ObservableValue<Boolean> call(DebugCellData param) {
            return param.isBreakPointProperty();
          }
        };

    Callback<ListView<DebugCellData>, ListCell<DebugCellData>> forListView =
        new Callback<ListView<DebugCellData>, ListCell<DebugCellData>>() {
          @Override
          public ListCell<DebugCellData> call(ListView<DebugCellData> param) {
            CheckBoxListCell<DebugCellData> cblc = new CheckBoxListCell<DebugCellData>(getProperty);
            cblc.setAlignment(Pos.CENTER);
            cblc.styleProperty().bind(cellHeightStyle.concat(cellFontSizeStyle));
            return cblc;
          }
        };

    debugListView.setCellFactory(forListView);

    ObservableList<DebugCellData> items = debugListView.getItems();
    for (int i = 1; i <= currentNumLines; i++) {
      DebugCellData newData = newDebugCellData();
      items.add(newData);
    }

    // To disallow scrolling
    debugListView.setEventDispatcher(new MyEventDispatcher(debugListView.getEventDispatcher()));

    Platform.runLater(
        new Runnable() {
          @Override
          public void run() {
            // Get scroll bars
            final ScrollBar debugH = (ScrollBar) debugListView.lookup(".scroll-bar:horizontal");
            final ScrollBar debugV = (ScrollBar) debugListView.lookup(".scroll-bar:vertical");
            final ScrollBar textAreaV = (ScrollBar) textArea.lookup(".scroll-bar:vertical");

            // Opacity (-7 to get rid of scrollbars)
            if (debugH != null) {
              debugH.setStyle("-fx-opacity: 0; -fx-padding:-7;");
              debugH.setDisable(true);
            }
            if (debugV != null) {
              debugV.setStyle("-fx-opacity: 0; -fx-padding:-7;");
              debugV.setDisable(true);
            }

            debugListView.setStyle("-fx-padding:5 0 5 0;");

            // Change appropriately according to text Area
            if (textAreaV != null) {
              textAreaV
                  .valueProperty()
                  .addListener(
                      new ChangeListener<Number>() {
                        @Override
                        public void changed(
                            ObservableValue<? extends Number> arg0, Number oldVal, Number newVal) {
                          debugV.valueProperty().set(newVal.doubleValue());
                        }
                      });
            }
          }
        });

    int size =
        mediator.getDesktopController().getInDebugMode()
                && mediator.getMachine().getCodeStore() != null
            ? 30
            : 0;
    gridPane.getColumnConstraints().get(0).setMinWidth(size);
    gridPane.getColumnConstraints().get(0).setMaxWidth(size);
    gridPane.getColumnConstraints().get(0).setPrefWidth(size);

    mediator
        .getMachine()
        .getCodeStoreProperty()
        .addListener(
            new ChangeListener<RAM>() {
              @Override
              public void changed(
                  ObservableValue<? extends RAM> observable, RAM oldValue, RAM newValue) {
                clearAllBreakPointsInRam(oldValue);
                clearAllBreakPointsInRam(newValue);
                setBreakPointsInRam(newValue);
              }
            });
  }