Class WorldMapView

  • All Implemented Interfaces:
    javafx.css.Styleable, javafx.event.EventTarget, javafx.scene.control.Skinnable

    public class WorldMapView
    extends javafx.scene.control.Control
    A simple map view showing either the entire world or a list of countries. The view is not capable of displaying detailed map information. The view is based on simple SVG data found in a properties file of the ControlsFX distribution. A big advantage of this approach is the fact that the view can be run without a network connection. In addition to showing countries or the world the view can also show locations. The map can be customized by specifying custom factories for the country and location views.

    Example: Country View Factory

    The code snippet below shows how a custom country view factory can be used to assign individual styles to all countries. In this example the style is used to color the countries differently. worldMapView.setCountryViewFactory(country -> { CountryView view = new CountryView(country); if (showColorsProperty.get()) { view.getStyleClass().add("country" + ((country.ordinal() % 8) + 1)); } return view; });

    Example: Location View Factory

    Each location can be visualized with its own node. The default location view factory creates a simple circle shape.

    worldMapView.setLocationViewFactory(location -> { Circle circle = new Circle(); circle.getStyleClass().add("location"); circle.setRadius(4); circle.setTranslateX(-4); // translate to center node on location circle.setTranslateY(-4); // translate to center node on location return circle; }); Shown below is a screenshot of the world map view:

    Screenshot of WorldMapView
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  WorldMapView.Country
      An enumerator listing all countries of the world.
      static class  WorldMapView.CountryView
      A view used to visualize the bounds of a country via SVG.
      static class  WorldMapView.Location
      An object using latitude and longitude information to specify a location in the real world.
      static class  WorldMapView.SelectionMode
      The selection modes supported by the view.
    • Field Summary

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

        USE_COMPUTED_SIZE, USE_PREF_SIZE
      • Fields inherited from class javafx.scene.Node

        BASELINE_OFFSET_SAME_AS_HEIGHT
    • Constructor Summary

      Constructors 
      Constructor Description
      WorldMapView()
      Constructs a new map view with an initially empty list of countries which will result in the entire world to be shown.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      javafx.beans.property.ListProperty<WorldMapView.Country> countriesProperty()
      A property used to store the list of countries that should be shown by the map.
      javafx.beans.property.ObjectProperty<WorldMapView.SelectionMode> countrySelectionModeProperty()
      A property used to store the selection mode that will be applied for the selection of countries.
      javafx.beans.property.ObjectProperty<javafx.util.Callback<WorldMapView.Country,​WorldMapView.CountryView>> countryViewFactoryProperty()
      A property used to store a factory callback for creating new country views.
      protected javafx.scene.control.Skin<?> createDefaultSkin()  
      javafx.collections.ObservableList<WorldMapView.Country> getCountries()
      Returns the list of countries that will be shown by the map.
      WorldMapView.SelectionMode getCountrySelectionMode()
      Returns the value of countrySelectionModeProperty()
      javafx.util.Callback<WorldMapView.Country,​WorldMapView.CountryView> getCountryViewFactory()
      Returns the value of countryViewFactoryProperty().
      javafx.collections.ObservableList<WorldMapView.Location> getLocations()
      Returns the list of locations shown by the map.
      WorldMapView.SelectionMode getLocationSelectionMode()
      Returns the value of locationSelectionModeProperty()
      javafx.util.Callback<WorldMapView.Location,​javafx.scene.Node> getLocationViewFactory()
      Returns the value of locationViewFactoryProperty().
      javafx.collections.ObservableList<WorldMapView.Country> getSelectedCountries()
      Returns the list of currently selected countries.
      javafx.collections.ObservableList<WorldMapView.Location> getSelectedLocations()
      Returns the list of currently selected locations.
      String getUserAgentStylesheet()  
      protected String getUserAgentStylesheet​(Class<?> clazz, String fileName)
      A helper method that ensures that the resource based lookup of the user agent stylesheet only happens once.
      double getZoomFactor()
      Returns the value of zoomFactorProperty().
      boolean isShowLocations()
      Returns the value of showLocationsProperty().
      javafx.beans.property.ObjectProperty<WorldMapView.SelectionMode> locationSelectionModeProperty()
      A property used to store the selection mode that will be applied for the selection of locations.
      javafx.beans.property.ListProperty<WorldMapView.Location> locationsProperty()
      A property used to store the list of locations shown by the map.
      javafx.beans.property.ObjectProperty<javafx.util.Callback<WorldMapView.Location,​javafx.scene.Node>> locationViewFactoryProperty()
      A property used to store a factory callback for creating new location views (nodes).
      javafx.beans.property.ListProperty<WorldMapView.Country> selectedCountriesProperty()
      A property used for storing the list of selected countries (aka "the selection model").
      javafx.beans.property.ListProperty<WorldMapView.Location> selectedLocationsProperty()
      A property used for storing the list of selected locations (aka "the selection model").
      void setCountries​(javafx.collections.ObservableList<WorldMapView.Country> countries)
      Sets the list of countries that will be shown by the map.
      void setCountrySelectionMode​(WorldMapView.SelectionMode mode)
      void setCountryViewFactory​(javafx.util.Callback<WorldMapView.Country,​WorldMapView.CountryView> factory)
      Sets the value of countryViewFactoryProperty().
      void setLocations​(javafx.collections.ObservableList<WorldMapView.Location> locations)
      Sets the list of locations shown by the map.
      void setLocationSelectionMode​(WorldMapView.SelectionMode mode)
      void setLocationViewFactory​(javafx.util.Callback<WorldMapView.Location,​javafx.scene.Node> factory)
      void setSelectedCountries​(javafx.collections.ObservableList<WorldMapView.Country> countries)
      Sets the list of currently selected countries.
      void setSelectedLocations​(javafx.collections.ObservableList<WorldMapView.Location> locations)
      Sets the list of currently selected locations.
      void setShowLocations​(boolean show)
      Sets the value of showLocationsProperty().
      void setZoomFactor​(double factor)
      Sets the value of zoomFactorProperty().
      javafx.beans.property.BooleanProperty showLocationsProperty()
      A property used to control whether locations will be shown by the map or not.
      javafx.beans.property.DoubleProperty zoomFactorProperty()
      A property used to store the current zoom factor, a value between 1 and 10.
      • Methods inherited from class javafx.scene.control.Control

        computeMaxHeight, computeMaxWidth, computeMinHeight, computeMinWidth, computePrefHeight, computePrefWidth, contextMenuProperty, executeAccessibleAction, getBaselineOffset, getClassCssMetaData, getContextMenu, getControlCssMetaData, getCssMetaData, getInitialFocusTraversable, getSkin, getTooltip, isResizable, layoutChildren, queryAccessibleAttribute, setContextMenu, setSkin, setTooltip, skinProperty, tooltipProperty
      • Methods inherited from class javafx.scene.layout.Region

        backgroundProperty, borderProperty, cacheShapeProperty, centerShapeProperty, getBackground, getBorder, getHeight, getInsets, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getOpaqueInsets, getPadding, getPrefHeight, getPrefWidth, getShape, getWidth, heightProperty, insetsProperty, isCacheShape, isCenterShape, 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 class javafx.scene.Parent

        getChildren, getChildrenUnmodifiable, getManagedChildren, getStylesheets, isNeedsLayout, layout, lookup, needsLayoutProperty, requestLayout, requestParentLayout, setNeedsLayout, updateBounds
      • 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, fireEvent, focusedProperty, focusTraversableProperty, getAccessibleHelp, getAccessibleRole, getAccessibleRoleDescription, getAccessibleText, getBlendMode, getBoundsInLocal, getBoundsInParent, getCacheHint, getClip, getContentBias, getCursor, getDepthTest, getEffect, getEffectiveNodeOrientation, getEventDispatcher, getId, getInitialCursor, 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 interface javafx.css.Styleable

        getStyleableNode
    • Constructor Detail

      • WorldMapView

        public WorldMapView()
        Constructs a new map view with an initially empty list of countries which will result in the entire world to be shown.
    • Method Detail

      • createDefaultSkin

        protected javafx.scene.control.Skin<?> createDefaultSkin()
        Overrides:
        createDefaultSkin in class javafx.scene.control.Control
      • getUserAgentStylesheet

        public String getUserAgentStylesheet()
        Overrides:
        getUserAgentStylesheet in class javafx.scene.layout.Region
      • countrySelectionModeProperty

        public final javafx.beans.property.ObjectProperty<WorldMapView.SelectionMode> countrySelectionModeProperty()
        A property used to store the selection mode that will be applied for the selection of countries.
        Returns:
        the country selection mode property
      • locationSelectionModeProperty

        public final javafx.beans.property.ObjectProperty<WorldMapView.SelectionMode> locationSelectionModeProperty()
        A property used to store the selection mode that will be applied for the selection of locations.
        Returns:
        the location selection mode property
      • zoomFactorProperty

        public final javafx.beans.property.DoubleProperty zoomFactorProperty()
        A property used to store the current zoom factor, a value between 1 and 10.
        Returns:
        the zoom factor
      • getZoomFactor

        public final double getZoomFactor()
        Returns the value of zoomFactorProperty().
        Returns:
        the zoom factor
      • setZoomFactor

        public final void setZoomFactor​(double factor)
        Sets the value of zoomFactorProperty().
        Parameters:
        factor - the zoom factor
      • selectedCountriesProperty

        public final javafx.beans.property.ListProperty<WorldMapView.Country> selectedCountriesProperty()
        A property used for storing the list of selected countries (aka "the selection model").
        Returns:
        the selected countries property
      • getSelectedCountries

        public final javafx.collections.ObservableList<WorldMapView.Country> getSelectedCountries()
        Returns the list of currently selected countries.
        Returns:
        the list of selected countries
      • setSelectedCountries

        public final void setSelectedCountries​(javafx.collections.ObservableList<WorldMapView.Country> countries)
        Sets the list of currently selected countries.
        Parameters:
        countries - the selected countries
      • selectedLocationsProperty

        public final javafx.beans.property.ListProperty<WorldMapView.Location> selectedLocationsProperty()
        A property used for storing the list of selected locations (aka "the selection model").
        Returns:
        the selected locations property
      • getSelectedLocations

        public final javafx.collections.ObservableList<WorldMapView.Location> getSelectedLocations()
        Returns the list of currently selected locations.
        Returns:
        the list of selected locations
      • setSelectedLocations

        public final void setSelectedLocations​(javafx.collections.ObservableList<WorldMapView.Location> locations)
        Sets the list of currently selected locations.
        Parameters:
        locations - the selected locations
      • countriesProperty

        public final javafx.beans.property.ListProperty<WorldMapView.Country> countriesProperty()
        A property used to store the list of countries that should be shown by the map. If this list is empty then the view will show the entire world.
        Returns:
        the list of countries shown by the map
      • getCountries

        public final javafx.collections.ObservableList<WorldMapView.Country> getCountries()
        Returns the list of countries that will be shown by the map.
        Returns:
        the list of countries shown by the map
      • setCountries

        public final void setCountries​(javafx.collections.ObservableList<WorldMapView.Country> countries)
        Sets the list of countries that will be shown by the map.
        Parameters:
        countries - the list of countries shown by the map
      • locationsProperty

        public final javafx.beans.property.ListProperty<WorldMapView.Location> locationsProperty()
        A property used to store the list of locations shown by the map.
      • getLocations

        public final javafx.collections.ObservableList<WorldMapView.Location> getLocations()
        Returns the list of locations shown by the map.
        Returns:
        the list of locations
      • setLocations

        public final void setLocations​(javafx.collections.ObservableList<WorldMapView.Location> locations)
        Sets the list of locations shown by the map.
        Parameters:
        locations - the list of locations
      • showLocationsProperty

        public final javafx.beans.property.BooleanProperty showLocationsProperty()
        A property used to control whether locations will be shown by the map or not.
        Returns:
        a property to control the visibility of locations
      • isShowLocations

        public final boolean isShowLocations()
        Returns the value of showLocationsProperty().
        Returns:
        true if locations are shown
      • setShowLocations

        public final void setShowLocations​(boolean show)
        Sets the value of showLocationsProperty().
        Parameters:
        show - if true then locations are shown
      • locationViewFactoryProperty

        public final javafx.beans.property.ObjectProperty<javafx.util.Callback<WorldMapView.Location,​javafx.scene.Node>> locationViewFactoryProperty()
        A property used to store a factory callback for creating new location views (nodes).
        Returns:
        the location view factory property
      • countryViewFactoryProperty

        public final javafx.beans.property.ObjectProperty<javafx.util.Callback<WorldMapView.Country,​WorldMapView.CountryView>> countryViewFactoryProperty()
        A property used to store a factory callback for creating new country views.
        Returns:
        the country view factory property
      • getUserAgentStylesheet

        protected final String getUserAgentStylesheet​(Class<?> clazz,
                                                      String fileName)
        A helper method that ensures that the resource based lookup of the user agent stylesheet only happens once. Caches the external form of the resource.
        Parameters:
        clazz - the class used for the resource lookup
        fileName - the name of the user agent stylesheet
        Returns:
        the external form of the user agent stylesheet (the path)