java.lang.Object
javafx.scene.Node
javafx.scene.Parent
javafx.scene.layout.Region
javafx.scene.control.Control
org.controlsfx.control.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:

-
Property Summary
PropertiesTypePropertyDescriptionfinal javafx.beans.property.ListProperty
<WorldMapView.Country> A property used to store the list of countries that should be shown by the map.final javafx.beans.property.ObjectProperty
<WorldMapView.SelectionMode> A property used to store the selection mode that will be applied for the selection of countries.final javafx.beans.property.ObjectProperty
<javafx.util.Callback<WorldMapView.Country, WorldMapView.CountryView>> A property used to store a factory callback for creating new country views.final javafx.beans.property.ObjectProperty
<WorldMapView.SelectionMode> A property used to store the selection mode that will be applied for the selection of locations.final javafx.beans.property.ListProperty
<WorldMapView.Location> A property used to store the list of locations shown by the map.final javafx.beans.property.ObjectProperty
<javafx.util.Callback<WorldMapView.Location, javafx.scene.Node>> A property used to store a factory callback for creating new location views (nodes).final javafx.beans.property.ListProperty
<WorldMapView.Country> A property used for storing the list of selected countries (aka "the selection model").final javafx.beans.property.ListProperty
<WorldMapView.Location> A property used for storing the list of selected locations (aka "the selection model").final javafx.beans.property.BooleanProperty
A property used to control whether locations will be shown by the map or not.final javafx.beans.property.DoubleProperty
A property used to store the current zoom factor, a value between 1 and 10.Properties inherited from class javafx.scene.control.Control
contextMenu, skin, tooltip
Properties inherited from class javafx.scene.layout.Region
background, border, cacheShape, centerShape, height, insets, maxHeight, maxWidth, minHeight, minWidth, opaqueInsets, padding, prefHeight, prefWidth, scaleShape, shape, snapToPixel, width
Properties inherited from class javafx.scene.Parent
needsLayout
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
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enum
An enumerator listing all countries of the world.static class
A view used to visualize the bounds of a country via SVG.static class
An object using latitude and longitude information to specify a location in the real world.static enum
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
ConstructorsConstructorDescriptionConstructs a new map view with an initially empty list of countries which will result in the entire world to be shown. -
Method Summary
Modifier and TypeMethodDescriptionfinal javafx.beans.property.ListProperty
<WorldMapView.Country> A property used to store the list of countries that should be shown by the map.final javafx.beans.property.ObjectProperty
<WorldMapView.SelectionMode> A property used to store the selection mode that will be applied for the selection of countries.final javafx.beans.property.ObjectProperty
<javafx.util.Callback<WorldMapView.Country, WorldMapView.CountryView>> A property used to store a factory callback for creating new country views.protected javafx.scene.control.Skin
<?> final javafx.collections.ObservableList
<WorldMapView.Country> Returns the list of countries that will be shown by the map.Returns the value ofcountrySelectionModeProperty()
final javafx.util.Callback
<WorldMapView.Country, WorldMapView.CountryView> Returns the value ofcountryViewFactoryProperty()
.final javafx.collections.ObservableList
<WorldMapView.Location> Returns the list of locations shown by the map.Returns the value oflocationSelectionModeProperty()
final javafx.util.Callback
<WorldMapView.Location, javafx.scene.Node> Returns the value oflocationViewFactoryProperty()
.final javafx.collections.ObservableList
<WorldMapView.Country> Returns the list of currently selected countries.final javafx.collections.ObservableList
<WorldMapView.Location> Returns the list of currently selected locations.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.final double
Returns the value ofzoomFactorProperty()
.final boolean
Returns the value ofshowLocationsProperty()
.final javafx.beans.property.ObjectProperty
<WorldMapView.SelectionMode> A property used to store the selection mode that will be applied for the selection of locations.final javafx.beans.property.ListProperty
<WorldMapView.Location> A property used to store the list of locations shown by the map.final javafx.beans.property.ObjectProperty
<javafx.util.Callback<WorldMapView.Location, javafx.scene.Node>> A property used to store a factory callback for creating new location views (nodes).final javafx.beans.property.ListProperty
<WorldMapView.Country> A property used for storing the list of selected countries (aka "the selection model").final javafx.beans.property.ListProperty
<WorldMapView.Location> A property used for storing the list of selected locations (aka "the selection model").final void
setCountries
(javafx.collections.ObservableList<WorldMapView.Country> countries) Sets the list of countries that will be shown by the map.final void
Sets the value ofcountrySelectionModeProperty()
.final void
setCountryViewFactory
(javafx.util.Callback<WorldMapView.Country, WorldMapView.CountryView> factory) Sets the value ofcountryViewFactoryProperty()
.final void
setLocations
(javafx.collections.ObservableList<WorldMapView.Location> locations) Sets the list of locations shown by the map.final void
Sets the value oflocationSelectionModeProperty()
.final void
setLocationViewFactory
(javafx.util.Callback<WorldMapView.Location, javafx.scene.Node> factory) Sets the value oflocationViewFactoryProperty()
.final void
setSelectedCountries
(javafx.collections.ObservableList<WorldMapView.Country> countries) Sets the list of currently selected countries.final void
setSelectedLocations
(javafx.collections.ObservableList<WorldMapView.Location> locations) Sets the list of currently selected locations.final void
setShowLocations
(boolean show) Sets the value ofshowLocationsProperty()
.final void
setZoomFactor
(double factor) Sets the value ofzoomFactorProperty()
.final javafx.beans.property.BooleanProperty
A property used to control whether locations will be shown by the map or not.final javafx.beans.property.DoubleProperty
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 class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface javafx.css.Styleable
getStyleableNode
-
Property Details
-
countrySelectionMode
public final javafx.beans.property.ObjectProperty<WorldMapView.SelectionMode> countrySelectionModePropertyA property used to store the selection mode that will be applied for the selection of countries.- See Also:
-
locationSelectionMode
public final javafx.beans.property.ObjectProperty<WorldMapView.SelectionMode> locationSelectionModePropertyA property used to store the selection mode that will be applied for the selection of locations.- See Also:
-
zoomFactor
public final javafx.beans.property.DoubleProperty zoomFactorPropertyA property used to store the current zoom factor, a value between 1 and 10.- See Also:
-
selectedCountries
A property used for storing the list of selected countries (aka "the selection model").- See Also:
-
selectedLocations
A property used for storing the list of selected locations (aka "the selection model").- See Also:
-
countries
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.- See Also:
-
locations
A property used to store the list of locations shown by the map.- See Also:
-
showLocations
public final javafx.beans.property.BooleanProperty showLocationsPropertyA property used to control whether locations will be shown by the map or not.- See Also:
-
locationViewFactory
public final javafx.beans.property.ObjectProperty<javafx.util.Callback<WorldMapView.Location,javafx.scene.Node>> locationViewFactoryPropertyA property used to store a factory callback for creating new location views (nodes).- See Also:
-
countryViewFactory
public final javafx.beans.property.ObjectProperty<javafx.util.Callback<WorldMapView.Country,WorldMapView.CountryView>> countryViewFactoryPropertyA property used to store a factory callback for creating new country views.- See Also:
-
-
Constructor Details
-
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 Details
-
createDefaultSkin
protected javafx.scene.control.Skin<?> createDefaultSkin()- Overrides:
createDefaultSkin
in classjavafx.scene.control.Control
-
getUserAgentStylesheet
- Overrides:
getUserAgentStylesheet
in classjavafx.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
- See Also:
-
getCountrySelectionMode
Returns the value ofcountrySelectionModeProperty()
- Returns:
- the country selection mode
-
setCountrySelectionMode
Sets the value ofcountrySelectionModeProperty()
.- Parameters:
mode
- the country selection mode
-
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
- See Also:
-
getLocationSelectionMode
Returns the value oflocationSelectionModeProperty()
- Returns:
- the location selection mode
-
setLocationSelectionMode
Sets the value oflocationSelectionModeProperty()
.- Parameters:
mode
- the location selection mode
-
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
- See Also:
-
getZoomFactor
public final double getZoomFactor()Returns the value ofzoomFactorProperty()
.- Returns:
- the zoom factor
-
setZoomFactor
public final void setZoomFactor(double factor) Sets the value ofzoomFactorProperty()
.- Parameters:
factor
- the zoom factor
-
selectedCountriesProperty
A property used for storing the list of selected countries (aka "the selection model").- Returns:
- the selected countries property
- See Also:
-
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
A property used for storing the list of selected locations (aka "the selection model").- Returns:
- the selected locations property
- See Also:
-
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
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
- See Also:
-
getCountries
Returns the list of countries that will be shown by the map.- Returns:
- the list of countries shown by the map
-
setCountries
Sets the list of countries that will be shown by the map.- Parameters:
countries
- the list of countries shown by the map
-
locationsProperty
A property used to store the list of locations shown by the map.- Returns:
- the
locations
property - See Also:
-
getLocations
Returns the list of locations shown by the map.- Returns:
- the list of locations
-
setLocations
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
- See Also:
-
isShowLocations
public final boolean isShowLocations()Returns the value ofshowLocationsProperty()
.- Returns:
- true if locations are shown
-
setShowLocations
public final void setShowLocations(boolean show) Sets the value ofshowLocationsProperty()
.- 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
- See Also:
-
getLocationViewFactory
Returns the value oflocationViewFactoryProperty()
.- Returns:
- the location view factory
-
setLocationViewFactory
public final void setLocationViewFactory(javafx.util.Callback<WorldMapView.Location, javafx.scene.Node> factory) Sets the value oflocationViewFactoryProperty()
.- Parameters:
factory
- the location view factory
-
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
- See Also:
-
getCountryViewFactory
public final javafx.util.Callback<WorldMapView.Country,WorldMapView.CountryView> getCountryViewFactory()Returns the value ofcountryViewFactoryProperty()
.- Returns:
- the country view factory
-
setCountryViewFactory
public final void setCountryViewFactory(javafx.util.Callback<WorldMapView.Country, WorldMapView.CountryView> factory) Sets the value ofcountryViewFactoryProperty()
.- Parameters:
factory
- the country view factory
-
getUserAgentStylesheet
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 lookupfileName
- the name of the user agent stylesheet- Returns:
- the external form of the user agent stylesheet (the path)
-