Class SyntaxHighlightingCodeArea

  • All Implemented Interfaces:
    javafx.css.Styleable, javafx.event.EventTarget, org.fxmisc.flowless.Virtualized, org.fxmisc.richtext.ClipboardActions<java.util.Collection<java.lang.String>,java.lang.String,java.util.Collection<java.lang.String>>, org.fxmisc.richtext.EditActions<java.util.Collection<java.lang.String>,java.lang.String,java.util.Collection<java.lang.String>>, org.fxmisc.richtext.model.TwoDimensional, org.fxmisc.richtext.NavigationActions<java.util.Collection<java.lang.String>,java.lang.String,java.util.Collection<java.lang.String>>, org.fxmisc.richtext.StyleActions<java.util.Collection<java.lang.String>,java.util.Collection<java.lang.String>>, org.fxmisc.richtext.TextEditingArea<java.util.Collection<java.lang.String>,java.lang.String,java.util.Collection<java.lang.String>>, org.fxmisc.richtext.UndoActions, org.fxmisc.richtext.ViewActions<java.util.Collection<java.lang.String>,java.lang.String,java.util.Collection<java.lang.String>>
    Direct Known Subclasses:
    HighlightLayerCodeArea

    public class SyntaxHighlightingCodeArea
    extends org.fxmisc.richtext.CodeArea
    Code area that can handle syntax highlighting. Syntax highlighting is performed asynchronously by another thread. It can be enabled by providing a SyntaxHighlighter to setSyntaxHighlighter(SyntaxHighlighter), and disabled by passing a null reference to that method.
    Since:
    6.0.0
    Author:
    Clément Fournier
    See Also:
    AvailableSyntaxHighlighters
    • Nested Class Summary

      • Nested classes/interfaces inherited from interface org.fxmisc.richtext.NavigationActions

        org.fxmisc.richtext.NavigationActions.SelectionPolicy
      • Nested classes/interfaces inherited from interface org.fxmisc.richtext.model.TwoDimensional

        org.fxmisc.richtext.model.TwoDimensional.Bias, org.fxmisc.richtext.model.TwoDimensional.Position
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected org.reactfx.value.Val<org.fxmisc.richtext.model.StyleSpans<java.util.Collection<java.lang.String>>> syntaxHighlight
      Read-only view on the current highlighting spans.
      • Fields inherited from class org.fxmisc.richtext.GenericStyledArea

        EMPTY_RANGE
      • Fields inherited from class javafx.scene.Node

        BASELINE_OFFSET_SAME_AS_HEIGHT
      • Fields inherited from class javafx.scene.layout.Region

        USE_COMPUTED_SIZE, USE_PREF_SIZE
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected static java.util.Collection<java.lang.String> additiveOverlay​(java.util.Collection<java.lang.String> style1, java.util.Collection<java.lang.String> style2)
      Overlay operation that stacks up the style classes of the two overlaid spans.
      protected void clearSyntaxHighlighting()
      Removes the current syntax highlighting span.
      protected org.fxmisc.richtext.model.StyleSpans<java.util.Collection<java.lang.String>> emptySpan()  
      void setSyntaxHighlighter​(SyntaxHighlighter highlighter)
      Enables syntax highlighting if disabled and sets it to use the given highlighter.
      protected org.fxmisc.richtext.model.StyleSpans<java.util.Collection<java.lang.String>> styleSyntaxHighlightChange​(java.util.Optional<org.fxmisc.richtext.model.StyleSpans<java.util.Collection<java.lang.String>>> oldSyntax, org.fxmisc.richtext.model.StyleSpans<java.util.Collection<java.lang.String>> newSyntax)
      Given the old value of the highlighting spans, and a newly computed value, computes the spans as they should be applied to the codearea.
      org.reactfx.value.Val<java.lang.Boolean> syntaxHighlightingEnabledProperty()  
      protected void updateSyntaxHighlightingSynchronously()
      Forces synchronous updating of the syntax highlighting.
      TextAwareNodeWrapper wrapNode​(net.sourceforge.pmd.lang.ast.Node node)
      Wraps a node into a convenience layer that can for example provide the rich text associated with it.
      • Methods inherited from interface org.fxmisc.richtext.ClipboardActions

        copy, cut, paste
      • Methods inherited from interface org.fxmisc.richtext.EditActions

        append, appendText, clear, deleteNextChar, deletePreviousChar, deleteText, deleteText, deleteText, insert, insert, insertText, insertText, moveSelectedText, replace, replaceSelection, replaceSelection, replaceText
      • Methods inherited from class org.fxmisc.richtext.GenericStyledArea

        addCaret, addSelection, allParToVisibleParIndex, autoScrollOnDragDesiredProperty, beingUpdatedProperty, contextMenuObjectProperty, contextMenuXOffsetProperty, contextMenuYOffsetProperty, createMultiChange, createMultiChange, displaceCaret, dispose, editableProperty, estimatedScrollXProperty, estimatedScrollYProperty, getAbsolutePosition, getApplyParagraphStyle, getCaretBoundsOnScreen, getCaretSelectionBind, getCharacterBoundsOnScreen, getClassCssMetaData, getContent, getContextMenu, getContextMenuXOffset, getContextMenuYOffset, getCssMetaData, getDocument, getInitialParagraphStyle, getInitialTextStyle, getOnInsideSelectionMousePressReleased, getOnNewSelectionDragFinished, getOnOutsideSelectionMousePressed, getOnSelectionDropped, getParagraphBoundsOnScreen, getParagraphLinesCount, getParagraphs, getParagraphSelection, getParagraphStyleForInsertionAt, getSegOps, getStyleAtPosition, getStyleAtPosition, getStyleCodecs, getStyleOfChar, getStyleOfChar, getStyleRangeAtPosition, getStyleRangeAtPosition, getStyleSpans, getStyleSpans, getStyleSpans, getText, getText, getText, getTextStyleForInsertionAt, getUndoManager, getViewportHeight, getVisibleParagraphBoundsOnScreen, getVisibleParagraphs, hit, isAutoScrollOnDragDesired, isContextMenuPresent, isEditable, isPreserveStyle, isWrapText, layoutChildren, lengthProperty, lineEnd, lineIndex, lineStart, mouseOverTextDelayProperty, multiPlainChanges, multiRichChanges, nextPage, offsetToPosition, onInsideSelectionMousePressReleasedProperty, onInsideSelectionMousePressReleaseProperty, onNewSelectionDragFinishedProperty, onNewSelectionDragProperty, onOutsideSelectionMousePressedProperty, onOutsideSelectionMousePressProperty, onSelectionDragProperty, onSelectionDroppedProperty, onSelectionDropProperty, paragraphGraphicFactoryProperty, plainTextChanges, position, prevPage, removeCaret, removeSelection, replace, replace, replaceText, requestFollowCaret, richChanges, scrollBy, scrollXBy, scrollXToPixel, scrollYBy, scrollYToPixel, setAutoScrollOnDragDesired, setContextMenu, setContextMenuXOffset, setContextMenuYOffset, setEditable, setOnInsideSelectionMousePressReleased, setOnNewSelectionDragFinished, setOnOutsideSelectionMousePressed, setOnSelectionDropped, setParagraphStyle, setStyle, setStyle, setStyle, setStyleCodecs, setStyleSpans, setStyleSpans, setUndoManager, setWrapText, showParagraphAtBottom, showParagraphAtTop, showParagraphInViewport, showParagraphRegion, subDocument, subDocument, textProperty, totalHeightEstimateProperty, totalWidthEstimateProperty, useInitialStyleForInsertionProperty, viewportDirtyEvents, visibleParToAllParIndex, wrapTextProperty
      • Methods inherited from interface org.fxmisc.richtext.NavigationActions

        deselect, end, moveTo, moveTo, moveTo, moveTo, nextChar, paragraphEnd, paragraphStart, previousChar, selectAll, selectParagraph, selectWord, start, wordBreaksBackwards, wordBreaksForwards
      • Methods inherited from class javafx.scene.Node

        accessibleHelpProperty, accessibleRoleDescriptionProperty, accessibleRoleProperty, accessibleTextProperty, addEventFilter, addEventHandler, applyCss, autosize, blendModeProperty, boundsInLocalProperty, boundsInParentProperty, buildEventDispatchChain, cacheHintProperty, cacheProperty, clipProperty, computeAreaInScreen, contains, contains, cursorProperty, depthTestProperty, disabledProperty, disableProperty, effectiveNodeOrientationProperty, effectProperty, eventDispatcherProperty, executeAccessibleAction, fireEvent, focusedProperty, focusTraversableProperty, getAccessibleHelp, getAccessibleRole, getAccessibleRoleDescription, getAccessibleText, getBlendMode, getBoundsInLocal, getBoundsInParent, getCacheHint, getClip, getContentBias, getCursor, getDepthTest, getEffect, getEffectiveNodeOrientation, getEventDispatcher, getId, getInitialCursor, getInitialFocusTraversable, getInputMethodRequests, getLayoutBounds, getLayoutX, getLayoutY, getLocalToParentTransform, getLocalToSceneTransform, getNodeOrientation, getOnContextMenuRequested, getOnDragDetected, getOnDragDone, getOnDragDropped, getOnDragEntered, getOnDragExited, getOnDragOver, getOnInputMethodTextChanged, getOnKeyPressed, getOnKeyReleased, getOnKeyTyped, getOnMouseClicked, getOnMouseDragEntered, getOnMouseDragExited, getOnMouseDragged, getOnMouseDragOver, getOnMouseDragReleased, getOnMouseEntered, getOnMouseExited, getOnMouseMoved, getOnMousePressed, getOnMouseReleased, getOnRotate, getOnRotationFinished, getOnRotationStarted, getOnScroll, getOnScrollFinished, getOnScrollStarted, getOnSwipeDown, getOnSwipeLeft, getOnSwipeRight, getOnSwipeUp, getOnTouchMoved, getOnTouchPressed, getOnTouchReleased, getOnTouchStationary, getOnZoom, getOnZoomFinished, getOnZoomStarted, getOpacity, getParent, getProperties, getPseudoClassStates, getRotate, getRotationAxis, getScaleX, getScaleY, getScaleZ, getScene, getStyle, getStyleableParent, getStyleClass, getTransforms, getTranslateX, getTranslateY, getTranslateZ, getTypeSelector, getUserData, getViewOrder, hasProperties, hoverProperty, idProperty, inputMethodRequestsProperty, intersects, intersects, isCache, isDisable, isDisabled, isFocused, isFocusTraversable, isHover, isManaged, isMouseTransparent, isPickOnBounds, isPressed, isVisible, layoutBoundsProperty, layoutXProperty, layoutYProperty, localToParent, localToParent, localToParent, localToParent, localToParent, localToParentTransformProperty, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToSceneTransformProperty, localToScreen, localToScreen, localToScreen, localToScreen, localToScreen, lookupAll, managedProperty, mouseTransparentProperty, nodeOrientationProperty, notifyAccessibleAttributeChanged, onContextMenuRequestedProperty, onDragDetectedProperty, onDragDoneProperty, onDragDroppedProperty, onDragEnteredProperty, onDragExitedProperty, onDragOverProperty, onInputMethodTextChangedProperty, onKeyPressedProperty, onKeyReleasedProperty, onKeyTypedProperty, onMouseClickedProperty, onMouseDragEnteredProperty, onMouseDragExitedProperty, onMouseDraggedProperty, onMouseDragOverProperty, onMouseDragReleasedProperty, onMouseEnteredProperty, onMouseExitedProperty, onMouseMovedProperty, onMousePressedProperty, onMouseReleasedProperty, onRotateProperty, onRotationFinishedProperty, onRotationStartedProperty, onScrollFinishedProperty, onScrollProperty, onScrollStartedProperty, onSwipeDownProperty, onSwipeLeftProperty, onSwipeRightProperty, onSwipeUpProperty, onTouchMovedProperty, onTouchPressedProperty, onTouchReleasedProperty, onTouchStationaryProperty, onZoomFinishedProperty, onZoomProperty, onZoomStartedProperty, opacityProperty, parentProperty, parentToLocal, parentToLocal, parentToLocal, parentToLocal, parentToLocal, pickOnBoundsProperty, pressedProperty, pseudoClassStateChanged, relocate, removeEventFilter, removeEventHandler, requestFocus, resizeRelocate, rotateProperty, rotationAxisProperty, scaleXProperty, scaleYProperty, scaleZProperty, sceneProperty, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, screenToLocal, screenToLocal, screenToLocal, setAccessibleHelp, setAccessibleRole, setAccessibleRoleDescription, setAccessibleText, setBlendMode, setCache, setCacheHint, setClip, setCursor, setDepthTest, setDisable, setDisabled, setEffect, setEventDispatcher, setEventHandler, setFocused, setFocusTraversable, setHover, setId, setInputMethodRequests, setLayoutX, setLayoutY, setManaged, setMouseTransparent, setNodeOrientation, setOnContextMenuRequested, setOnDragDetected, setOnDragDone, setOnDragDropped, setOnDragEntered, setOnDragExited, setOnDragOver, setOnInputMethodTextChanged, setOnKeyPressed, setOnKeyReleased, setOnKeyTyped, setOnMouseClicked, setOnMouseDragEntered, setOnMouseDragExited, setOnMouseDragged, setOnMouseDragOver, setOnMouseDragReleased, setOnMouseEntered, setOnMouseExited, setOnMouseMoved, setOnMousePressed, setOnMouseReleased, setOnRotate, setOnRotationFinished, setOnRotationStarted, setOnScroll, setOnScrollFinished, setOnScrollStarted, setOnSwipeDown, setOnSwipeLeft, setOnSwipeRight, setOnSwipeUp, setOnTouchMoved, setOnTouchPressed, setOnTouchReleased, setOnTouchStationary, setOnZoom, setOnZoomFinished, setOnZoomStarted, setOpacity, setPickOnBounds, setPressed, setRotate, setRotationAxis, setScaleX, setScaleY, setScaleZ, setStyle, setTranslateX, setTranslateY, setTranslateZ, setUserData, setViewOrder, setVisible, snapshot, snapshot, startDragAndDrop, startFullDrag, styleProperty, toBack, toFront, toString, translateXProperty, translateYProperty, translateZProperty, usesMirroring, viewOrderProperty, visibleProperty
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • Methods inherited from class javafx.scene.Parent

        getBaselineOffset, getChildren, getChildrenUnmodifiable, getManagedChildren, getStylesheets, isNeedsLayout, layout, lookup, needsLayoutProperty, queryAccessibleAttribute, requestLayout, requestParentLayout, setNeedsLayout, updateBounds
      • Methods inherited from class javafx.scene.layout.Region

        backgroundProperty, borderProperty, cacheShapeProperty, centerShapeProperty, computeMaxHeight, computeMaxWidth, computeMinHeight, computeMinWidth, computePrefHeight, computePrefWidth, getBackground, getBorder, getHeight, getInsets, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getOpaqueInsets, getPadding, getPrefHeight, getPrefWidth, getShape, getUserAgentStylesheet, getWidth, heightProperty, insetsProperty, isCacheShape, isCenterShape, isResizable, isScaleShape, isSnapToPixel, layoutInArea, layoutInArea, layoutInArea, layoutInArea, maxHeight, maxHeightProperty, maxWidth, maxWidthProperty, minHeight, minHeightProperty, minWidth, minWidthProperty, opaqueInsetsProperty, paddingProperty, positionInArea, positionInArea, prefHeight, prefHeightProperty, prefWidth, prefWidthProperty, resize, scaleShapeProperty, setBackground, setBorder, setCacheShape, setCenterShape, setHeight, setMaxHeight, setMaxSize, setMaxWidth, setMinHeight, setMinSize, setMinWidth, setOpaqueInsets, setPadding, setPrefHeight, setPrefSize, setPrefWidth, setScaleShape, setShape, setSnapToPixel, setWidth, shapeProperty, snappedBottomInset, snappedLeftInset, snappedRightInset, snappedTopInset, snapPosition, snapPositionX, snapPositionY, snapSize, snapSizeX, snapSizeY, snapSpace, snapSpaceX, snapSpaceY, snapToPixelProperty, widthProperty
      • Methods inherited from interface javafx.css.Styleable

        getStyleableNode
      • Methods inherited from interface org.fxmisc.richtext.StyleActions

        clearParagraphStyle, clearStyle, clearStyle, clearStyle, getStyleSpans, getStyleSpans, getUseInitialStyleForInsertion, setUseInitialStyleForInsertion
      • Methods inherited from class org.fxmisc.richtext.StyleClassedTextArea

        setStyleClass
      • Methods inherited from class org.fxmisc.richtext.StyledTextArea

        createStyledTextNode, createStyledTextNode
      • Methods inherited from interface org.fxmisc.richtext.TextEditingArea

        anchorProperty, caretBoundsProperty, caretColumnProperty, caretPositionProperty, currentParagraphProperty, getAnchor, getCaretBounds, getCaretColumn, getCaretPosition, getCurrentParagraph, getLength, getParagraph, getParagraphLength, getParagraphSelection, getSelectedText, getSelection, getSelectionBounds, getShowCaret, getText, getText, isBeingUpdated, replace, replace, replace, replace, replaceText, replaceText, selectedTextProperty, selectionBoundsProperty, selectionProperty, selectRange, selectRange, setShowCaret, showCaretProperty, subDocument, subDocument
      • Methods inherited from interface org.fxmisc.richtext.UndoActions

        isRedoAvailable, isUndoAvailable, redo, redoAvailableProperty, undo, undoAvailableProperty
      • Methods inherited from interface org.fxmisc.richtext.ViewActions

        firstVisibleParToAllParIndex, getMouseOverTextDelay, getOnInsideSelectionMousePressRelease, getOnNewSelectionDrag, getOnOutsideSelectionMousePress, getOnSelectionDrag, getOnSelectionDrop, getParagraphGraphicFactory, hideContextMenu, lastVisibleParToAllParIndex, selectLine, setMouseOverTextDelay, setOnInsideSelectionMousePressRelease, setOnNewSelectionDrag, setOnOutsideSelectionMousePress, setOnSelectionDrag, setOnSelectionDrop, setParagraphGraphicFactory
      • Methods inherited from interface org.fxmisc.flowless.Virtualized

        getEstimatedScrollX, getEstimatedScrollY, getTotalHeightEstimate, getTotalWidthEstimate, scrollBy, scrollToPixel, scrollToPixel
    • Field Detail

      • syntaxHighlight

        protected final org.reactfx.value.Val<org.fxmisc.richtext.model.StyleSpans<java.util.Collection<java.lang.String>>> syntaxHighlight
        Read-only view on the current highlighting spans. Can be absent.
    • Constructor Detail

      • SyntaxHighlightingCodeArea

        public SyntaxHighlightingCodeArea()
    • Method Detail

      • setSyntaxHighlighter

        public void setSyntaxHighlighter​(SyntaxHighlighter highlighter)
        Enables syntax highlighting if disabled and sets it to use the given highlighter. If the argument is null, then this method disables syntax highlighting.
      • syntaxHighlightingEnabledProperty

        public org.reactfx.value.Val<java.lang.Boolean> syntaxHighlightingEnabledProperty()
      • clearSyntaxHighlighting

        protected void clearSyntaxHighlighting()
        Removes the current syntax highlighting span.
      • styleSyntaxHighlightChange

        protected org.fxmisc.richtext.model.StyleSpans<java.util.Collection<java.lang.String>> styleSyntaxHighlightChange​(java.util.Optional<org.fxmisc.richtext.model.StyleSpans<java.util.Collection<java.lang.String>>> oldSyntax,
                                                                                                                          org.fxmisc.richtext.model.StyleSpans<java.util.Collection<java.lang.String>> newSyntax)
        Given the old value of the highlighting spans, and a newly computed value, computes the spans as they should be applied to the codearea. The default behaviour simply returns the newest spans, which works flawlessly when there is no other style layer in the game. Subclasses are free to override, to get a chance to preserve additional style layers.
      • updateSyntaxHighlightingSynchronously

        protected void updateSyntaxHighlightingSynchronously()
        Forces synchronous updating of the syntax highlighting. This can be done when we suspect the highlighting is outdated but we really need the most up to date one, for example because we want to overlay other spans on it.
      • emptySpan

        protected org.fxmisc.richtext.model.StyleSpans<java.util.Collection<java.lang.String>> emptySpan()
      • additiveOverlay

        protected static java.util.Collection<java.lang.String> additiveOverlay​(java.util.Collection<java.lang.String> style1,
                                                                                java.util.Collection<java.lang.String> style2)
        Overlay operation that stacks up the style classes of the two overlaid spans.
      • wrapNode

        public TextAwareNodeWrapper wrapNode​(net.sourceforge.pmd.lang.ast.Node node)
        Wraps a node into a convenience layer that can for example provide the rich text associated with it.