public class KMLNetworkLink extends KMLAbstractContainer implements PropertyChangeListener
KMLNetworkLink retrieves and loads its network resource whenever necessary. Upon a
 successful retrieval, KMLNetworkLink sends an AVKey.RETRIEVAL_STATE_SUCCESSFUL property
 change event to this link's property change listeners. Once retrieved and loaded, KMLNetworkLink stores
 its network resource by calling setNetworkResource, draws its network resource during preRendering and
 rendering, and forwards property change events from the network resource to its property change listeners.
 
 During retrieval, KMLNetworkLink attempts to use either the Link or the Url.
 The Link is the preferred method for encoding a KML NetworkLink's address since KML version 2.1,
 therefore we give it priority over Url.| Modifier and Type | Class and Description | 
|---|---|
| protected static class  | KMLNetworkLink.RequestTaskAttempts to find this network link resource file locally, and if that fails attempts to find it remotely. | 
| Modifier and Type | Field and Description | 
|---|---|
| protected AtomicLong | firstRetrievalTime | 
| protected boolean | invalidTargetFlag that is raised if the link retrieves a files that is not a KML document. | 
| protected KMLLink | link | 
| protected boolean | linkFetchedFlag to indicate that the Link has been fetched from the hash map. | 
| protected AtomicReference<KMLRoot> | networkResourceIndicates the network resource referenced by this  KMLNetworkLink. | 
| protected AtomicLong | networkResourceRetrievalTimeTime, in milliseconds since the Epoch, at which this  KMLNetworkLink'snetwork resource was last
 retrieved. | 
| protected KMLRoot | rootCache the root of this network link. | 
featuresballoon, region, styleSelectors, visibilityMSG_BOX_CHANGED, MSG_GEOMETRY_CHANGED, MSG_LINK_CHANGED, MSG_STYLE_CHANGED, MSG_TIME_CHANGED, MSG_VIEW_CHANGEDCHARACTERS_CONTENT, fields, namespaceURI, parent| Constructor and Description | 
|---|
| KMLNetworkLink(String namespaceURI)Construct an instance. | 
| Modifier and Type | Method and Description | 
|---|---|
| void | applyChange(KMLAbstractObject sourceValues) | 
| protected long | computeExpiryRefreshTime(KMLRoot root,
                        String address)Indicates the expiration time of a linked resource. | 
| protected void | doPreRender(KMLTraversalContext tc,
           DrawContext dc)Pre-renders the network resource referenced by this  KMLNetworkLink. | 
| protected void | doRender(KMLTraversalContext tc,
        DrawContext dc)Renders the network resource referenced by this  KMLNetworkLink. | 
| String | getDescription() | 
| Boolean | getFlyToView() | 
| protected KMLLink | getLinkOrUrl()Returns this  NetworkLink'sLinkelement or itsUrlelement, depending on
 which is available. | 
| String | getName() | 
| KMLLink | getNetworkLink() | 
| KMLRoot | getNetworkResource()Indicates the network resource referenced by this  KMLNetworkLink. | 
| Boolean | getRefreshVisibility() | 
| KMLRoot | getRoot() Overridden to cache the root instead of climbing the parse tree each time. | 
| Object | getSnippet() | 
| KMLLink | getUrl() | 
| protected boolean | hasNetworkLinkControl() | 
| protected boolean | isFeatureActive(KMLTraversalContext tc,
               DrawContext dc)Indicates whether this  KMLAbstractContaineris active and should be rendered on the specifiedDrawContext. | 
| boolean | isLinkCacheable()Indicates whether the network resource references by this  KMLNetworkLinkshould be retrieved to the
 World Wind cache or to a temporary location. | 
| protected boolean | mustRetrieveNetworkResource()Returns whether this  KMLNetworkLinkmust retrieve its network resource. | 
| void | onChange(Message msg) | 
| void | onMessage(Message msg)Invoked when a message is received. | 
| void | propertyChange(PropertyChangeEvent evt)Forward property change events from the inner  KMLRootto this object's parent KMLRoot. | 
| protected void | requestResource(DrawContext dc)Thread's off a task to determine whether the resource is local or remote and then retrieves it either from disk
 cache or a remote server. | 
| protected void | reset() | 
| protected void | retrieveNetworkResource(String address)Initiates a retrieval of the network resource referenced by this  KMLNetworkLink. | 
| void | setNetworkResource(KMLRoot kmlRoot)Specifies the network resource referenced by this  KMLNetworkLink, ornullif this link
 has no resource. | 
addFeature, beginRendering, doAddEventContent, endRendering, getFeatures, mergeFeatures, preRenderFeatures, removeFeature, renderFeaturesaddStyleSelector, getAddress, getAddressDetails, getAuthor, getBalloon, getExtendedData, getLink, getOpen, getPhoneNumber, getRegion, getSnippetText, getStyleSelectors, getStyleUrl, getSubStyle, getTimePrimitive, getView, getVisibility, hasStyle, hasStyleSelectors, mergeStyleSelectors, preRender, render, renderBalloon, setBalloon, setRegion, setTimePrimitive, setView, setVisibilitygetId, getTargetIdallocate, doAddCharacters, doAddEventAttribute, doParseEventAttributes, doParseEventContent, freeResources, getAConstructor, getCharacters, getField, getField, getFields, getNamespaceURI, getParent, hasField, hasField, hasFields, mergeFields, newInstance, overrideFields, parse, parseCharacterContent, removeField, setField, setField, setFields, setNamespaceURI, setParentprotected AtomicLong firstRetrievalTime
protected boolean invalidTarget
protected KMLLink link
protected boolean linkFetched
protected AtomicReference<KMLRoot> networkResource
KMLNetworkLink. Initially null.protected AtomicLong networkResourceRetrievalTime
KMLNetworkLink's network resource was last
 retrieved. Initially -1, indicating that the network resource has not been retrieved.protected KMLRoot root
public KMLNetworkLink(String namespaceURI)
namespaceURI - the qualifying namespace URI. May be null to indicate no namespace qualification.public void applyChange(KMLAbstractObject sourceValues)
applyChange in class KMLAbstractContainerprotected long computeExpiryRefreshTime(KMLRoot root, String address)
root - Root of target resource.address - Address of linked resource.protected void doPreRender(KMLTraversalContext tc, DrawContext dc)
KMLNetworkLink. If this link must retrieve its
 network resource, this initiates a retrieval and does nothing until the resource is retrieved and loaded. Once
 the network resource is retrieved and loaded, this calls setNetworkResource(KMLRoot)AVKey.RETRIEVAL_STATE_SUCCESSFULdoPreRender in class KMLAbstractContainertc - the current KML traversal context.dc - the current draw context.getNetworkResource()protected void doRender(KMLTraversalContext tc, DrawContext dc)
KMLNetworkLink. This does nothing if this link has
 no network resource.doRender in class KMLAbstractContainertc - the current KML traversal context.dc - the current draw context.public String getDescription()
getDescription in class KMLAbstractFeaturepublic Boolean getFlyToView()
protected KMLLink getLinkOrUrl()
NetworkLink's Link element or its Url element, depending on
 which is available. Link is the preferred method for encoding a NetworkLink since KML
 version 2.1, therefore we give it priority. If a Link is not specified, the deprecated
 Url element is returned.NetworkLink's Link element, if one is specified. Otherwise, this
         NetworkLink's Url element. Returns null if neither
         Link or a Url are specified.public String getName()
getName in class KMLAbstractFeaturepublic KMLLink getNetworkLink()
public KMLRoot getNetworkResource()
KMLNetworkLink. This returns null if
 this link has no resource.null to indicate that this link has no resource.setNetworkResource(KMLRoot)public Boolean getRefreshVisibility()
public KMLRoot getRoot()
getRoot in class KMLAbstractObjectpublic Object getSnippet()
getSnippet in class KMLAbstractFeaturepublic KMLLink getUrl()
protected boolean hasNetworkLinkControl()
protected boolean isFeatureActive(KMLTraversalContext tc, DrawContext dc)
KMLAbstractContainer is active and should be rendered on the specified
 DrawContext. This returns true if this container's visibility is
 unspecified (null) or is set to true.
 
 Regions do not apply directly to KML containers, because a descendant features can override the container's
 Region with its own. Since a descendant Region may be larger or have a less restrictive LOD range than this
 container, we cannot determine the visibility of the entire tree based on this container's Region. A container's
 Region is inherited by any descendants that do not specify a Region, and Region visibility is determined at the
 leaf nodes. Overridden to apply region culling according to the same rules as in KMLAbstractFeature. This
 prevents retrieving network links in inactive regions.isFeatureActive in class KMLAbstractContainertc - the current KML traversal context. This parameter is ignored.dc - the draw context. This parameter is ignored.true if this container should be rendered, otherwise false.public boolean isLinkCacheable()
KMLNetworkLink should be retrieved to the
 World Wind cache or to a temporary location. This returns true if all of the following conditions
 are met, and false otherwise:
 
 Link or a Url element.refreshMode is not onInterval or onExpire.viewRefreshMode is not onStop.true if this link's network resource can should be stored in a cache, or false
         if it should be stored in a temporary location.protected boolean mustRetrieveNetworkResource()
KMLNetworkLink must retrieve its network resource. This always returns
 false if this KMLNetworkLink has no KMLLink.true if this KMLNetworkLink must retrieve its network resource, otherwise
         false.public void onChange(Message msg)
onChange in class KMLAbstractObjectpublic void onMessage(Message msg)
MessageListeneronMessage in interface MessageListeneronMessage in class KMLAbstractContainermsg - The message that was received.public void propertyChange(PropertyChangeEvent evt)
KMLRoot to this object's parent KMLRoot.propertyChange in interface PropertyChangeListenerevt - Event to forward.protected void requestResource(DrawContext dc)
dc - the current draw context.protected void reset()
protected void retrieveNetworkResource(String address)
KMLNetworkLink. Once the network
 resource is retrieved and loaded, this calls setNetworkResource(KMLRoot)AVKey.RETRIEVAL_STATE_SUCCESSFULKMLNetworkLink has no KMLLink.address - the address of the resource to retrievepublic void setNetworkResource(KMLRoot kmlRoot)
KMLNetworkLink, or null if this link
 has no resource. If the specified kmlRoot is not nullkmlRoot during preRendering and rendering, and forwards property change events from the
 kmlRoot to this link's property change listeners.kmlRoot - the network resource referenced by this KMLNetworkLink. May be null.getNetworkResource()