public class TLcyPrintableComponentFactory extends ALcyPrintableComponentFactory
java.awt.Component
s. This factory was designed
so that it is easy to modify small parts of the creation process. This can be done by subclassing
this class and overriding certain methods.
The main create function createPrintableComponent( ILcyMapComponent, TLcyProperties )
will first create all usable parts, eg. the map view, the header text, the scale icon,... using the
functions createGXYView(id)
and createComponent(id)
. Then it calls
createPrintableComponentContent()
, which will create the content of the printable component
using the created objects by calling getGXYView(id)
and getComponent(id)
.
And finally it will create the actual TLcyGXYViewPrintableComponent
.
Note however that we use ID's. This is because there are different types of components that can be
created: the legend, the scale icon, the footer/header text,... All possible ID's that can be passed
to the createComponent
method all end with the same suffix "component". The
same thing goes for "gxyview" (createGXYView
, getGXYView
).
As an example, imagine you want to change the behaviour of the footer text. Browsing this class learns
there is a FOOTER_TEXT_COMPONENT
constant. Because it ends with "component", this
constant can only be passed to the createComponent
method. Therefore we can override the
method createComponent
, check if the ID is FOOTER_TEXT_COMPONENT
and return a
custom component instance. Or use super.createComponent
and change some settings before
returning it. If you want to remove the component completely, you can simply return null.
The method createPrintableComponent(ILcyMapComponent, TLcyProperties)
should not be overridden
without using the super function. Changing the layout of the TLcyGXYViewPrintableComponent
can be
done by overriding createPrintableComponentContent()
. The internal elements are already
created and should be retrieved by calling getGXYView(id)
and getComponent(id)
.
Modifier and Type | Field and Description |
---|---|
static int |
CLASSIFICATION_COMPONENT
The id for creating the classification component
|
static int |
FOOTER_TEXT_COMPONENT
The id for creating the footer text component.
|
static int |
HEADER_TEXT_COMPONENT
The id for creating the header text component.
|
static int |
LEGEND_COMPONENT
The id for creating the legend component.
|
static int |
MAIN_GXYVIEW
The id for creating the gxyview of the current map component.
|
static int |
MODIFIABLE_HEADER_TEXT_COMPONENT
The id for creating the header text component which can be altered by the user in the UI.
|
static int |
OVERVIEW_GXYVIEW
The id for creating the gxyview of the current map overview component.
|
static int |
SCALE_ICON_COMPONENT
The id for creating the scale icon component.
|
static int |
SCALE_LABEL_COMPONENT
The id for creating the scale indication component.
|
static int |
TITLE_TEXT_COMPONENT
The id for creating the title text component.
|
Constructor and Description |
---|
TLcyPrintableComponentFactory()
Default constructor.
|
TLcyPrintableComponentFactory(ILcyLucyEnv aLucyEnv)
Creates a new
TLcyPrintableComponentFactory . |
Modifier and Type | Method and Description |
---|---|
protected Component |
createComponent(int aID,
ILcyMapComponent aMapComponent,
TLcyProperties aProperties)
Creates a
java.awt.Component for the given ID. |
protected ILcdGXYView |
createGXYView(int aID,
ILcyMapComponent aMapComponent,
TLcyProperties aProperties)
Creates an
ILcdGXYView for the given ID. |
TLcyGXYViewPrintableComponent |
createPrintableComponent(ILcyMapComponent aMapComponent,
TLcyProperties aProperties)
This function will first create all internal components using
createGXYView
and createComponent . |
protected Component |
createPrintableComponentContent(ILcyMapComponent aMapComponent,
TLcyProperties aProperties)
Creates the content of the
TLcyGXYViewPrintableComponent . |
protected Component |
getComponent(int aID)
Returns the
java.awt.Component for the given ID. |
protected ILcdGXYView |
getGXYView(int aID)
Returns the
ILcdGXYView for the given ID. |
ILcyLucyEnv |
getLucyEnv()
Returns the associated lucy environment.
|
void |
setLucyEnv(ILcyLucyEnv aLucyEnv)
Sets the associated lucy environment.
|
public static final int MAIN_GXYVIEW
null
.public static final int OVERVIEW_GXYVIEW
public static final int LEGEND_COMPONENT
TLcyPrintAddOn.getPrintAreaGXYLayerFilter()
public static final int SCALE_ICON_COMPONENT
public static final int SCALE_LABEL_COMPONENT
public static final int HEADER_TEXT_COMPONENT
public static final int FOOTER_TEXT_COMPONENT
public static final int TITLE_TEXT_COMPONENT
public static final int MODIFIABLE_HEADER_TEXT_COMPONENT
public static final int CLASSIFICATION_COMPONENT
public TLcyPrintableComponentFactory()
TLcyPrintableComponentFactory
. Note that
you will have to set an ILcyLucyEnv
before this instance can be used.public TLcyPrintableComponentFactory(ILcyLucyEnv aLucyEnv)
TLcyPrintableComponentFactory
.aLucyEnv
- The lucy environment, contextual information.public ILcyLucyEnv getLucyEnv()
ALcyPrintableMapComponentFactory
getLucyEnv
in class ALcyPrintableMapComponentFactory<ILcyMapComponent>
ALcyPrintableMapComponentFactory.setLucyEnv(com.luciad.lucy.ILcyLucyEnv)
public void setLucyEnv(ILcyLucyEnv aLucyEnv)
ALcyPrintableMapComponentFactory
setLucyEnv
in class ALcyPrintableMapComponentFactory<ILcyMapComponent>
aLucyEnv
- The lucy environment.ALcyPrintableMapComponentFactory.getLucyEnv()
public TLcyGXYViewPrintableComponent createPrintableComponent(ILcyMapComponent aMapComponent, TLcyProperties aProperties)
createGXYView
and createComponent
. Then it calls createPrintableComponentContent
, which will create the content of the printable component using
the internal components by calling getGXYView
and getComponent
.
And finally it will create the actual TLcyGXYViewPrintableComponent
.
Warning: Should not be overridden without calling the super
function.
createPrintableComponent
in class ALcyPrintableComponentFactory
aMapComponent
- The map component to use.aProperties
- The property node to use.protected Component createPrintableComponentContent(ILcyMapComponent aMapComponent, TLcyProperties aProperties)
TLcyGXYViewPrintableComponent
. The methods getGXYView(id)
and getComponent(id)
are used to safely retrieve the previously created objects. The
retrieved components are layed out in for example a javax.swing.JPanel
. This function should be
overridden when you want to change the layout of the TLcyGXYViewPrintableComponent
.
If you would like to put components on the map (for example a legend), a
JLayeredPane
can be useful to overlay them.aMapComponent
- The map component to use.aProperties
- The property node to use.protected ILcdGXYView createGXYView(int aID, ILcyMapComponent aMapComponent, TLcyProperties aProperties)
ILcdGXYView
for the given ID. This
ILcdGXYView
is assumed to be an instance of
java.awt.Component
(or one of its subclasses).
The return value for the MAIN_GXYVIEW
constant must not be null.
By default, it returns a view for the MAIN_GXYVIEW
constant
where the invisible layers are no longer part of (so that they, for
example, don't appear in the legend). Subclasses can overwrite this method
and for example do add the invisible layers or add extra layers.
Note: it is important that the returned ILcdGXYView
instance is not
part of any existing user interface, because its properties (scale, size, ...) might
be modified during the print (preview) process. It is also important that the
returned ILcdGXYView has correct initial values for scale, size, ... as these
could for example be used to find the initial visible area.aID
- The id describing which gxyview to create. This is a constant
that ends in GXYVIEW
.aMapComponent
- The map component to use.aProperties
- The property node to use.ILcdGXYView
, or null. Null is
however not returned for the MAIN_GXYVIEW
constant.protected ILcdGXYView getGXYView(int aID)
ILcdGXYView
for the given ID.aID
- The id describing which gxyview to create. This is a constant that ends in GXYVIEW
.ILcdGXYView
for the given ID.protected Component createComponent(int aID, ILcyMapComponent aMapComponent, TLcyProperties aProperties)
java.awt.Component
for the given ID.
The map component is provided as contextual information, and could for
example be used to build a legend.
The properties can be used to tweak the component creation.
For example when the legend is created (see LEGEND_COMPONENT
), null is returned
if the value of TLcyPrintAddOn.LEGEND_VISIBLE_KEY
is false
. If the
value of TLcyPrintAddOn.LEGEND_SELECTED_KEY
changes (even after the component
is returned), the legend will toggle its visibility. One can detect changes in
the given aProperties by using ALcyProperties.addPropertyChangeListener(java.beans.PropertyChangeListener)
.aID
- The id describing which component to create. This is a constant that ends in
COMPONENT
.aMapComponent
- The map component, provided as contextual information.aProperties
- The property node.java.awt.Component
, or null.protected Component getComponent(int aID)
java.awt.Component
for the given ID.aID
- The id describing which component to create. This is a constant that ends in COMPONENT
.java.awt.Component
for the given ID.