Class WorldMapView
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:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumAn enumerator listing all countries of the world.static classA view used to visualize the bounds of a country via SVG.static classAn object using latitude and longitude information to specify a location in the real world.static enumThe selection modes supported by the 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.BooleanPropertyA property used to control whether locations will be shown by the map or not.final javafx.beans.property.DoublePropertyA property used to store the current zoom factor, a value between 1 and 10.Properties inherited from class javafx.scene.control.Control
contextMenu, skin, tooltipProperties inherited from class javafx.scene.layout.Region
background, border, cacheShape, centerShape, height, insets, maxHeight, maxWidth, minHeight, minWidth, opaqueInsets, padding, prefHeight, prefWidth, scaleShape, shape, snapToPixel, widthProperties inherited from class javafx.scene.Parent
needsLayoutProperties 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.layout.Region
USE_COMPUTED_SIZE, USE_PREF_SIZEFields 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 StringgetUserAgentStylesheet(Class<?> clazz, String fileName) A helper method that ensures that the resource based lookup of the user agent stylesheet only happens once.final doubleReturns the value ofzoomFactorProperty().final booleanReturns 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 voidsetCountries(javafx.collections.ObservableList<WorldMapView.Country> countries) Sets the list of countries that will be shown by the map.final voidSets the value ofcountrySelectionModeProperty().final voidsetCountryViewFactory(javafx.util.Callback<WorldMapView.Country, WorldMapView.CountryView> factory) Sets the value ofcountryViewFactoryProperty().final voidsetLocations(javafx.collections.ObservableList<WorldMapView.Location> locations) Sets the list of locations shown by the map.final voidSets the value oflocationSelectionModeProperty().final voidsetLocationViewFactory(javafx.util.Callback<WorldMapView.Location, javafx.scene.Node> factory) Sets the value oflocationViewFactoryProperty().final voidsetSelectedCountries(javafx.collections.ObservableList<WorldMapView.Country> countries) Sets the list of currently selected countries.final voidsetSelectedLocations(javafx.collections.ObservableList<WorldMapView.Location> locations) Sets the list of currently selected locations.final voidsetShowLocations(boolean show) Sets the value ofshowLocationsProperty().final voidsetZoomFactor(double factor) Sets the value ofzoomFactorProperty().final javafx.beans.property.BooleanPropertyA property used to control whether locations will be shown by the map or not.final javafx.beans.property.DoublePropertyA 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, tooltipPropertyMethods 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, widthPropertyMethods inherited from class javafx.scene.Parent
getChildren, getChildrenUnmodifiable, getManagedChildren, getStylesheets, isNeedsLayout, layout, lookup, needsLayoutProperty, requestLayout, requestParentLayout, setNeedsLayout, updateBoundsMethods 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, visiblePropertyMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods 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:
createDefaultSkinin classjavafx.scene.control.Control
-
getUserAgentStylesheet
- Overrides:
getUserAgentStylesheetin 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
locationsproperty - 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
public final javafx.util.Callback<WorldMapView.Location, javafx.scene.Node> 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)
-