Introduction
This document describes which types of objects are currently supported and used by Lucy's service
mechanism out-of-the-box (see ILcyLucyEnv#addService(Object, int)
and ILcyLucyEnv#removeService(Object)
).
It is structured as follows:
- The first section provides an overview of all object types which are registered by default, and who typically registers them.
- When different objects are associated, they are grouped into a holder object, and those holder objects are then registered to the Lucy back-end. Those holder objects are discussed in the second section.
- The third section discusses the default composite implementations Lucy provides, and how to use them.
Overview
The following list contains all objects which are registered by default as Lucy service, and describes whether:
- Multiple instances are allowed: if not, it is not allowed to register another instance of the specified
class as service to the Lucy back-end. Note that in such case, the service can also be retrieved by
calling
ILcyLucyEnv#getService(Class)
instead ofILcyLucyEnv#getServices(Class)
. - Who typically registers such instances.
- Who typically uses the registered instances.
When it is allowed to register multiple instances of a class, it is always possible to register
your own instance and this instance will be used by Lucy. For example if you have your own
ILcdGXYLayerFactory
,
you can register it to the Lucy back-end and it will be used when Lucy tries to create an ILcdGXYLayer
for an ILcdModel
(e.g. when using the File | Open action ).
-
com.luciad.lucy.model.ILcyModelContentTypeProvider
:- Multiple instances allowed: yes
- Typically registered by: the data format add-ons. See
ALcyFormat#createModelContentTypeProvider()
- Used by (for example): the default
ILcyGXYLayerOrderManager
to determine the model content type of a model.
-
com.luciad.model.ILcdModelFactory
:- Multiple instances allowed: yes
- Typically registered by: the data format add-ons. See
ALcyFormat#createModelFactory()
- Used by (for example): by the
TLcyFormatBarAddOn
andTLcyDrawingAddOn
to create new models.
-
com.luciad.lucy.model.TLcyModelDecoderHolder
:- Multiple instances allowed: yes
- Typically registered by: the data format add-ons. See
ALcyFormat#createModelDecoders()
and the section about the holder objects. - Used by (for example): when creating an
ILcdModel
from a certain source, e.g. when using the File | Open menu item. Consult the "Loading data in Lucy" chapter in the Lucy Developer Guide for more information about data loading.
-
com.luciad.lucy.model.TLcyModelEncoderHolder
:- Multiple instances allowed: yes
- Typically registered by: the data format add-ons. See
ALcyFormat#createModelEncoders()
and the section about the holder objects. - Used by (for example): when saving a
ILcdModel
from a certain source, e.g. when using the File | Save menu item.
-
com.luciad.lucy.gui.customizer.ILcyCustomizerPanelFactory
:- Multiple instances allowed: yes
- Typically registered by: the data format add-ons. See
ALcyFormat#createDomainObjectCustomizerPanelFactories()
,ALcyFormat#createGXYLayerCustomizerPanelFactories()
,ALcyFormat#createModelCustomizerPanelFactories()
andALcyFormat#createModelEncoderCustomizerPanelFactories()
. - Used by (for example): throughout whole Lucy to show GUI panels to modify
properties of context objects.
A context object is either an instance of the classes in the
com.luciad.lucy.util.context
package or an instance of theTLcyLspCustomizableStyleContext
class. Extended documentation on how to use theILcyCustomizerPanel
s can be found in the Lucy developer guide.
-
com.luciad.lucy.model.TLcyDataSourceHandlerHolder
:- Multiple instances allowed: yes
- Typically registered by: the data format add-ons. See
ALcyFormat#createDataSourceHandlers()
and the section about the holder objects. - Used by (for example): when opening a data source, e.g. through the File | Open menu item. Consult the "Loading data in Lucy" chapter in the Lucy Developer Guide for more information about data loading.
-
com.luciad.lucy.map.ILcyGXYLayerTypeProvider
:- Multiple instances allowed: yes
- Typically registered by: the data format add-ons. See
ALcyFormat#createGXYLayerTypeProvider()
. - Used by (for example): the default
ILcyGXYLayerOrderManager
to determine the layer type of anILcdGXYLayer
.
-
com.luciad.lucy.map.TLcyGXYLayerDecoderHolder
:- Multiple instances allowed: yes
- Typically registered by: the data format add-ons. See
ALcyFormat#createGXYLayerDecoders()
and the section about the holder objects. - Used by (for example): applying a previously saved style to an
ILcdGXYLayer
when opening the layer using the File | Open menu action item.
-
com.luciad.lucy.map.TLcyGXYLayerEncoderHolder
:- Multiple instances allowed: yes
- Typically registered by: the data format add-ons. See
ALcyFormat#createGXYLayerEncoders()
and the section about the holder objects. - Used by (for example): saving the style of a layer using the File | Save Layer Style menu action item.
-
com.luciad.lucy.map.asynchronous.ILcyAsynchronousPaintHintProvider
:- Multiple instances allowed: yes
- Typically registered by: the data format add-ons. See
ALcyFormat#createAsynchronousPaintHintProvider()
. - Used by (for example): the
TLcyAsynchronousPaintAddOn
to determine the paint hint forILcdLayer
instances.
-
com.luciad.lucy.datatransfer.ALcyLayerSelectionTransferHandler
:- Multiple instances allowed: yes
- Typically registered by: the data format add-ons. See
ALcyFormat#createGXYLayerSelectionTransferHandlers()
. - Used by (for example): the copy and paste actions for domain objects in Lucy.
- Warning: there is a limitation on the
ALcyLayerSelectionTransferHandler
objects that may be registered. Consult the javadoc ofTLcyCompositeLayerSelectionTransferHandler
for more information on these limitations.
-
com.luciad.view.gxy.ILcdGXYLayerFactory
:- Multiple instances allowed: yes
- Typically registered by: the data format add-ons. See
ALcyFormat#createGXYLayerFactory()
. - Used by (for example): creating an
ILcdGXYLayer
for anILcdModel
when opening a data source, e.g. through the File | Open menu action.
-
com.luciad.lucy.map.ILcyLayerStyleProvider
:- Multiple instances allowed: yes
- Typically registered by: the data format add-ons. See
ALcyFormat#createGXYLayerStyleProvider()
. - Used by (for example): the copy and paste actions in Lucy when copy-pasting an
ILcdLayer
.
-
com.luciad.lucy.gui.formatbar.ALcyFormatBarFactory
:- Multiple instances allowed: yes
- Typically registered by: the data format add-ons. See
ALcyFormat#createFormatBarFactory()
. - Used by (for example): the
TLcyFormatBarAddOn
to createALcyFormatBar
instances.
-
com.luciad.util.height.ILcdModelHeightProviderFactory
:- Multiple instances allowed: yes
- Typically registered by: the data format add-ons. See
ALcyFormat#createModelHeightProviderFactory()
. - Used by (for example): the mouse location panel of the TLcyMapComponent to show the
height under the mouse cursor. It is also used in the TEA add-ons to retrieve the height
data for the
ILcdModel
s in the view, by thecom.luciad.lucy.util.height.TLcyViewHeightProvider
and byTLcyVerticalViewAddOn
.
-
com.luciad.util.height.ILcdLayerHeightProviderFactory
:- Multiple instances allowed: yes
- Typically registered by: the data format add-ons. See
ALcyFormat#createLayerHeightProviderFactory()
.
-
com.luciad.lucy.model.ALcyDefaultModelDescriptorFactory
:- Multiple instances allowed: yes
- Typically registered by: the data format add-ons. See
ALcyFormat#createDefaultModelDescriptorFactories()
. - Used by (for example): the
TLcyFormatBarAddOn
andTLcyDrawingAddOn
to create a default model descriptor (and a matching model) to for example start drawing on it.
-
com.luciad.model.ILcdModelReferenceDecoder
:- Multiple instances allowed: yes
- Typically registered by: data formats which do not include information about the coordinate system that is used
in their data files
and use an additional model reference file (e.g. the SHP data format in the
TLcyDefaultDecodersAddOn
). TheTLcyModelReferenceAddOn
also registers anILcdModelReferenceDecoder
which features a GUI allowing the user to choose theILcdModelReference
. - Used by (for example): Data formats that could be missing reference information, such as SHP, DGN, DWG, NITF,
... .
The
ILcdModelReferenceDecoder
registered by theTLcyModelReferenceAddOn
is for example used when a creating a new drawing layer with a custom model reference..
-
com.luciad.lucy.realtime.ILcySimulatorModelFactory
:- Multiple instances allowed: yes
- Typically registered by: Real-time data formats.
- Used by (for example): The
TLcyPreviewAddOn
to create preview layers forILcdModel
s.
-
javax.swing.event.HyperlinkListener
:- Multiple instances allowed: yes
- Registered by: the
TLcyHyperlinkAddOn
. - Used by (for example): The
TLcyKML22AddOn
to resolve hyperlinks in KML balloons.
-
com.luciad.view.swing.ILcdBalloonContentProvider
:- Multiple instances allowed: yes
- Registered by: the data format add-ons. See
ALcyFormat#createBalloonContentProviders()
. - Used by (for example): The
TLcyKML22AddOn
to generate balloons for objects of its domain model.
-
com.luciad.io.ILcdInputStreamFactory
:- Multiple instances allowed: yes
- Registered by: an add-on in an applications that needs custom input streams.
- Used by (for example): Data formats (
ALcyFormat
) using anILcdModelDecoder
to load data.
-
com.luciad.io.ILcdOutputStreamFactory
:- Multiple instances allowed: yes
- Registered by: an add-on in an applications that needs custom output streams.
- Used by (for example): Data formats (
ALcyFormat
) using anILcdModelEncoder
to save data.
-
com.luciad.lucy.map.labeling.ILcyGXYLabelPlacementHintProvider
- Multiple instances allowed: yes
- Typically registered by: the data format add-ons. See
ALcyFormat#createLabelPlacementHintProvider()
. - Used by (for example) an
ILcdGXYViewLabelPlacer
that is used to place labels.
-
com.luciad.model.ILcdModelReferenceParser
- Multiple instances allowed: yes
- Typically registered by: the
TLcyModelReferenceAddOn
- Used by (for example) the WFS add-on to parse the model references returned by a WFS server.
-
com.luciad.util.measure.ILcdModelMeasureProviderFactory
- Multiple instances allowed: yes
- Typically registered by: the data format add-ons. See
ALcyFormat#createModelMeasureProviderFactory()
. - Used by (for example): the mouse location panel of the TLcyMapComponent to show the data under the mouse cursor.
-
com.luciad.util.measure.ILcdLayerMeasureProviderFactory
- Multiple instances allowed: yes
- Typically registered by: the data format add-ons. See
ALcyFormat#createLayerMeasureProviderFactory()
. - Used by (for example): the mouse location panel of the TLcyMapComponent to show the data under the mouse cursor.
-
com.luciad.lucy.map.lightspeed.TLcyLspMapManager
- Multiple instances allowed: no
- Registered by: the
TLcyLspMapAddOn
. - Used by (for example): it is the Lightspeed equivalent of the
TLcyMapManager
, and can be used by everybody interested in the creation and removel ofILcyLspMapComponent
instances.
-
com.luciad.view.lightspeed.layer.ILspLayerFactory
- Multiple instances allowed: yes
- Typically registered by: the data format add-ons. See
ALcyLspFormat#createLayerFactory()
. - Used by (for example): creating an
ILspLayer
for anILcdModel
when opening a data source, e.g. through the File | Open menu action.
-
com.luciad.lucy.map.TLcyLayerStyleCodecHolder
:- Multiple instances allowed: yes
- Typically registered by: the data format add-ons. See
ALcyLspFormat#createLayerStyleCodecs()
and the section about the holder objects. - Used by (for example): when saving the style of a layer, e.g. when using File | Save layer style.
-
com.luciad.lucy.map.lightspeed.ALcyLspStyleRepository
:- Multiple instances allowed: no
- Typically registered by: the
TLcyLspStyleRepositoryAddOn
. - Used by (for example): the Lightspeed formats to retrieve the application wide style settings.
-
com.luciad.lucy.map.cameralinking.ALcyCameraLinkerFactory
:- Multiple instances allowed: yes
- Typically registered by: the
TLcyLspCameraLinkAddOn
. - Used by (for example): the
TLcyLspCameraLinkAddOn
, to create new tracking camera links which link tracking cameras to a set of objects.
-
com.luciad.format.s52.TLcdS52DisplaySettings
:- Multiple instances allowed: no
- Typically registered by: the
TLcyS57DecoderAddOn
. - Used by (for example): all the S-52 layers to update their visualization.
-
com.luciad.lucy.map.TLcyGenericMapManager
- Multiple instances allowed: yes
- Typically registered by: each of the map add-ons (GXY and Lightspeed).
- Used by (for example): all code which needs access to the map components. An example
is a workspace codec delegate which encodes all map components. You can access the map managers
as well through the
TLcyCombinedMapManager
, or by asking a specific instance directly (e.g.getService(TLcyLspMapManager.class)
.
-
com.luciad.ogc.ows.model.ILcdOWSTransport
- Multiple instances allowed: yes
- Typically registered by: the OGC client add-ons or a custom add-on.
- Used by (for example): all the OGC clients. The OGC clients use an
ILcdOWSTransport
to communicate with the server. Plugging in your own instance allows you to for example provide hardcoded credentials for a certain server.
-
com.luciad.fusion.core.ALfnEnvironment
- Multiple instances allowed: no
- Typically registered by: the LuciadFusion Core add-on. See
TLcyFusionCoreAddOn#createFusionEnvironment()
. - Used by LuciadFusion layers.
-
com.luciad.fusion.client.TLfnClientFactory
- Multiple instances allowed: no
- Typically registered by: the LuciadFusion Client add-on. See
TLcyFusionClientAddOn#createFusionClientFactory()
. - Used to connect to LuciadFusion servers.
-
com.luciad.fusion.client.ALfnClientEnvironment
- Multiple instances allowed: no
- Typically registered by: the LuciadFusion Client add-on. See
TLcyFusionClientAddOn#createFusionClientEnvironment()
. - Used to configure a LuciadFusion client.
-
com.luciad.fusion.tilestore.TLfnTileStoreProvider
- Multiple instances allowed: no
- Typically registered by: the LuciadFusion Client add-on. See
TLcyFusionClientAddOn#createTileStoreProvider()
. - Used by any add-on to create a Tile Store based on a URL.
-
com.luciad.lucy.addons.tea.lineofsight.TLcyLOSManager
- Multiple instances allowed: no
- Typically registered by: the
TLcyLOSAddOn
. - Used to add line-of-sight coverage to domain objects on Lightspeed maps.
-
com.luciad.lucy.addons.tea.shapevisibility.TLcyShapeVisibilityManager
- Multiple instances allowed: no
- Typically registered by: the
TLcyShapeVisibilityAddOn
. - Used to perform point to shape visibility calculations on a Lightspeed map.
Holder objects
Some of the service objects are associated to other objects. In order to maintain this association, those objects are registered to the back-end grouped into one so called 'holder object'. The table below lists the default holder objects and what they contain.
Note that the holder objects are public classes, so it is possible to register your own holder instance directly at the back-end. They will be picked up and used by Lucy.
Holder object | Contains |
---|---|
com.luciad.lucy.model.TLcyDataSourceHandlerHolder |
|
com.luciad.lucy.map.TLcyGXYLayerDecoderHolder |
|
com.luciad.lucy.map.TLcyGXYLayerEncoderHolder |
|
com.luciad.lucy.model.TLcyModelDecoderHolder |
|
com.luciad.lucy.model.TLcyModelEncoderHolder |
|
com.luciad.lucy.map.TLcyLayerStyleCodecHolder |
|
Composite implementations
For almost all service objects which are registered by default, there exists a composite implementation working on those registered service objects (see the Lucy developer guide for an in-depth explanation of those composite implementations). The available implementations are listed below:
Service object | Composite implementation |
---|---|
com.luciad.lucy.model.ILcyModelContentTypeProvider | com.luciad.lucy.model.TLcyCompositeModelContentTypeProvider |
com.luciad.model.ILcdModelFactory | com.luciad.lucy.model.TLcyCompositeModelFactory |
com.luciad.lucy.model.TLcyModelDecoderHolder | com.luciad.lucy.model.TLcyCompositeModelDecoder |
com.luciad.lucy.model.TLcyModelEncoderHolder | com.luciad.lucy.model.TLcyCompositeModelEncoder |
com.luciad.lucy.gui.customizer.ILcyCustomizerPanelFactory | com.luciad.lucy.gui.customizer.TLcyCompositeCustomizerPanelFactory |
com.luciad.lucy.model.TLcyDataSourceHandlerHolder | com.luciad.lucy.model.TLcyCompositeDataSourceHandler |
com.luciad.lucy.map.ILcyGXYLayerTypeProvider | com.luciad.lucy.map.TLcyCompositeGXYLayerTypeProvider |
com.luciad.lucy.map.TLcyGXYLayerDecoderHolder | com.luciad.lucy.map.TLcyCompositeGXYLayerDecoder |
com.luciad.lucy.map.TLcyGXYLayerEncoderHolder | com.luciad.lucy.map.TLcyCompositeGXYLayerEncoder |
com.luciad.lucy.map.asynchronous.ILcyAsynchronousPaintHintProvider | com.luciad.lucy.map.asynchronous.TLcyCompositeAsynchronousPaintHintProvider |
com.luciad.lucy.datatransfer.ALcyLayerSelectionTransferHandler | com.luciad.lucy.datatransfer.TLcyCompositeLayerSelectionTransferHandler |
com.luciad.view.gxy.ILcdGXYLayerFactory | com.luciad.lucy.map.TLcyCompositeGXYLayerFactory |
com.luciad.lucy.map.ILcyLayerStyleProvider | com.luciad.lucy.map.TLcyCompositeLayerStyleProvider |
com.luciad.lucy.gui.formatbar.ALcyFormatBarFactory | com.luciad.lucy.gui.formatbar.TLcyCompositeFormatBarFactory |
com.luciad.util.height.ILcdModelHeightProviderFactory | com.luciad.lucy.util.height.TLcyCompositeModelHeightProviderFactory |
com.luciad.model.ILcdModelReferenceDecoder | com.luciad.lucy.model.TLcyCompositeModelReferenceDecoder |
com.luciad.lucy.realtime.ILcySimulatorModelFactory | com.luciad.lucy.realtime.TLcyCompositeSimulatorModelFactory |
javax.swing.event.HyperlinkListener | com.luciad.lucy.util.hyperlink.TLcyCompositeHyperlinkListener |
com.luciad.view.swing.ILcdBalloonContentProvider | com.luciad.lucy.gui.balloon.TLcyCompositeBalloonContentProvider |
com.luciad.io.ILcdInputStreamFactory | com.luciad.lucy.io.TLcyCompositeInputStreamFactory |
com.luciad.io.ILcdOutputStreamFactory | com.luciad.lucy.io.TLcyCompositeOutputStreamFactory |
com.luciad.lucy.map.labeling.ILcyGXYLabelPlacementHintProvider | com.luciad.lucy.map.labeling.TLcyGXYCompositeLabelPlacementHintProvider |
com.luciad.model.ILcdModelReferenceParser | com.luciad.lucy.model.TLcyCompositeModelReferenceParser |
com.luciad.util.measure.ILcdModelMeasureProviderFactory | com.luciad.lucy.util.measure.TLcyCompositeModelMeasureProviderFactory |
com.luciad.util.measure.ILcdLayerMeasureProviderFactory | com.luciad.lucy.util.measure.TLcyCompositeLayerMeasureProviderFactory |
com.luciad.view.lightspeed.layer.ILspLayerFactory | com.luciad.lucy.map.lightspeed.TLcyLspCompositeLayerFactory |
com.luciad.lucy.map.TLcyLayerStyleCodecHolder | com.luciad.lucy.map.TLcyCompositeLayerStyleCodec |
com.luciad.lucy.map.cameralinking.ALcyCameraLinkerFactory | com.luciad.lucy.map.cameralinking.TLcyCompositeCameraLinkerFactory |
com.luciad.ogc.ows.model.ILcdOWSTransport | com.luciad.lucy.io.TLcyCompositeOWSTransport |