Package mazealgo.view

Class MazeDisplayer

java.lang.Object
javafx.scene.Node
javafx.scene.canvas.Canvas
mazealgo.view.MazeDisplayer
All Implemented Interfaces:
javafx.css.Styleable, javafx.event.EventTarget

public class MazeDisplayer extends javafx.scene.canvas.Canvas
A resizable JavaFX Canvas that renders a Maze, the player, the goal, an optional Solution overlay, and an optional set of visited cells for the search visualizer.

Exposes JavaFX properties for everything that changes at runtime so the controller can bind it to the ViewModel — setting any property triggers a redraw.

Sprite handling: if /mazealgo/view/images/wall.png, /player.png and /goal.png are on the classpath they're used; otherwise the displayer falls back to colored shapes (dark slate walls, blue player circle, green flag-style goal). The fallback ships with the repo so the UI works out of the box without sourcing third-party assets.

Layer order (back to front): floor, walls, grid lines, visited overlay, solution path, goal sprite, player sprite. The visited overlay sits under the solution so the solution always reads on top.

  • Property Summary

    Properties
    Type
    Property
    Description
    javafx.beans.property.ObjectProperty<Maze>
     
    javafx.beans.property.DoubleProperty
     
    javafx.beans.property.DoubleProperty
     
    javafx.beans.property.IntegerProperty
     
    javafx.beans.property.IntegerProperty
     
    javafx.beans.property.ObjectProperty<Solution>
     
    javafx.beans.property.DoubleProperty
     

    Properties inherited from class javafx.scene.canvas.Canvas

    height, width

    Properties inherited from class javafx.scene.Node

    accessibleHelp, accessibleRoleDescription, accessibleRole, accessibleText, blendMode, boundsInLocal, boundsInParent, cacheHint, cache, clip, cursor, depthTest, disabled, disable, effectiveNodeOrientation, effect, eventDispatcher, focused, focusTraversable, hover, id, inputMethodRequests, layoutBounds, layoutX, layoutY, localToParentTransform, localToSceneTransform, managed, mouseTransparent, nodeOrientation, onContextMenuRequested, onDragDetected, onDragDone, onDragDropped, onDragEntered, onDragExited, onDragOver, onInputMethodTextChanged, onKeyPressed, onKeyReleased, onKeyTyped, onMouseClicked, onMouseDragEntered, onMouseDragExited, onMouseDragged, onMouseDragOver, onMouseDragReleased, onMouseEntered, onMouseExited, onMouseMoved, onMousePressed, onMouseReleased, onRotate, onRotationFinished, onRotationStarted, onScrollFinished, onScroll, onScrollStarted, onSwipeDown, onSwipeLeft, onSwipeRight, onSwipeUp, onTouchMoved, onTouchPressed, onTouchReleased, onTouchStationary, onZoomFinished, onZoom, onZoomStarted, opacity, parent, pickOnBounds, pressed, rotate, rotationAxis, scaleX, scaleY, scaleZ, scene, style, translateX, translateY, translateZ, viewOrder, visible
  • Field Summary

    Fields inherited from class javafx.scene.Node

    BASELINE_OFFSET_SAME_AS_HEIGHT
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    javafx.collections.ObservableSet<AState>
     
    boolean
     
    javafx.beans.property.ObjectProperty<Maze>
     
    javafx.beans.property.DoubleProperty
     
    javafx.beans.property.DoubleProperty
     
    javafx.beans.property.IntegerProperty
     
    javafx.beans.property.IntegerProperty
     
    double
    prefHeight(double width)
     
    double
    prefWidth(double height)
     
    void
    Reset pan so the next-rendered maze sits centered.
    javafx.beans.property.ObjectProperty<Solution>
     
    javafx.beans.property.DoubleProperty
     

    Methods inherited from class javafx.scene.canvas.Canvas

    getGraphicsContext2D, getHeight, getWidth, heightProperty, setHeight, setWidth, widthProperty

    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, getBaselineOffset, getBlendMode, getBoundsInLocal, getBoundsInParent, getCacheHint, getClassCssMetaData, getClip, getContentBias, getCssMetaData, 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, lookup, lookupAll, managedProperty, maxHeight, maxWidth, minHeight, minWidth, 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, queryAccessibleAttribute, relocate, removeEventFilter, removeEventHandler, requestFocus, resize, 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 interface javafx.css.Styleable

    getStyleableNode
  • Property Details

    • maze

      public javafx.beans.property.ObjectProperty<Maze> mazeProperty
    • playerRow

      public javafx.beans.property.IntegerProperty playerRowProperty
    • playerColumn

      public javafx.beans.property.IntegerProperty playerColumnProperty
    • zoom

      public javafx.beans.property.DoubleProperty zoomProperty
    • panX

      public javafx.beans.property.DoubleProperty panXProperty
    • panY

      public javafx.beans.property.DoubleProperty panYProperty
    • solution

      public javafx.beans.property.ObjectProperty<Solution> solutionProperty
  • Constructor Details

    • MazeDisplayer

      public MazeDisplayer()
  • Method Details

    • isResizable

      public boolean isResizable()
      Overrides:
      isResizable in class javafx.scene.Node
    • prefWidth

      public double prefWidth(double height)
      Overrides:
      prefWidth in class javafx.scene.Node
    • prefHeight

      public double prefHeight(double width)
      Overrides:
      prefHeight in class javafx.scene.Node
    • mazeProperty

      public javafx.beans.property.ObjectProperty<Maze> mazeProperty()
    • playerRowProperty

      public javafx.beans.property.IntegerProperty playerRowProperty()
    • playerColumnProperty

      public javafx.beans.property.IntegerProperty playerColumnProperty()
    • zoomProperty

      public javafx.beans.property.DoubleProperty zoomProperty()
    • panXProperty

      public javafx.beans.property.DoubleProperty panXProperty()
    • panYProperty

      public javafx.beans.property.DoubleProperty panYProperty()
    • solutionProperty

      public javafx.beans.property.ObjectProperty<Solution> solutionProperty()
    • getVisitedCells

      public javafx.collections.ObservableSet<AState> getVisitedCells()
    • resetPan

      public void resetPan()
      Reset pan so the next-rendered maze sits centered.