com.esri.arcgis.trackinganalyst
Class TADynamicDisplayRefreshController

java.lang.Object
  extended by com.esri.arcgis.trackinganalyst.TADynamicDisplayRefreshController
All Implemented Interfaces:
IActiveViewEvents, IDisplayEvents, IDynamicMapEvents, IGlobeDisplayEvents, com.esri.arcgis.interop.RemoteObjRef, ISupportErrorInfo, ITAUpdateControl, ITxDocumentEvents, Serializable, EventListener

public class TADynamicDisplayRefreshController
extends Object
implements com.esri.arcgis.interop.RemoteObjRef, ITAUpdateControl, IActiveViewEvents, ISupportErrorInfo, IGlobeDisplayEvents, IDynamicMapEvents, ITxDocumentEvents, IDisplayEvents

Manages all dynamic updates to all of ArcMap's maps, both in the map view and the page layout view.

Description

This Object is responsible for managing all dynamic updates to all of ArcMap's Maps, both in the MapView and the Page Layout View. This object will allow the configuration of the maintenance update interval, the dynamic update maximum rate, and will ensure that multiple dynamic updates are syncronized with general ArcMap screen updates.

The following text describes the general approach that we are going to use, as a first stab, for dynamic updates.

1) Maintain a list of all Temporal layers and map them to Identifiers that uniquely identify a dynamic feature source (Feature class)

2) Provide a interface method that Informs the Object that a substantial change has occured within a feature class

3) Upon reciept of a call to method described above, ensure that the last update completion time is greater than the minimum update rate. If not then issue a ShortUpdate Draw Request.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server. Requires Tracking Analyst Extension.

See Also:
Serialized Form

Constructor Summary
TADynamicDisplayRefreshController(Object obj)
          Construct a TADynamicDisplayRefreshController using a reference to such an object returned from ArcGIS Engine or Server.
 
Method Summary
 void activeViewChanged(ITxDocumentEventsActiveViewChangedEvent theEvent)
          Fired when the active view changes.
 void activeViewerChanged(IGlobeDisplayEventsActiveViewerChangedEvent theEvent)
          Fired when the active viewer changes.
 void addLayer(ILayer piLayer)
          Obsolete Method that is unsupported.
 void afterDraw(IActiveViewEventsAfterDrawEvent theEvent)
          Fired after the specified phase is drawn.
 void afterDraw(IGlobeDisplayEventsAfterDrawEvent theEvent)
          Fired when drawing finishes.
 void afterDynamicDraw(IDynamicMapEventsAfterDynamicDrawEvent theEvent)
          Fired after the specified phase is drawn.
 void afterItemDraw(IActiveViewEventsAfterItemDrawEvent theEvent)
          Fired after an individual view item is drawn.
 void batchTileGenerationStarted(IGlobeDisplayEventsBatchTileGenerationStartedEvent theEvent)
          Fired when data preparation starts.
 void batchTileGenerationStopped(IGlobeDisplayEventsBatchTileGenerationStoppedEvent theEvent)
          Fired when data preparation stops.
 boolean beforeCloseDocument(ITxDocumentEventsBeforeCloseDocumentEvent theEvent)
          Fired before a document is closed.
 boolean beforeDraw(IGlobeDisplayEventsBeforeDrawEvent theEvent)
          Fired when drawing starts.
 void beforeDynamicDraw(IDynamicMapEventsBeforeDynamicDrawEvent theEvent)
          Fired before the specified phase is drawn.
 void closeDocument(ITxDocumentEventsCloseDocumentEvent theEvent)
          Fired when a document is closed.
 void contentsChanged(IActiveViewEventsContentsChangedEvent theEvent)
          Fired when the contents of the view changes.
 void contentsCleared(IActiveViewEventsContentsClearedEvent theEvent)
          Fired when the contents of the view is cleared.
 void displayFinished(IDisplayEventsDisplayFinishedEvent theEvent)
          Notifies clients when drawing completes.
 void displayInvalidated(IDisplayEventsDisplayInvalidatedEvent theEvent)
          Notifies clients when display is invalidated.
 void displayScrolled(IDisplayEventsDisplayScrolledEvent theEvent)
          Notifies clients when display is scrolled.
 void displayStarted(IDisplayEventsDisplayStartedEvent theEvent)
          Notifies clients when drawing starts.
 void dynamicMapFinished(IDynamicMapEventsDynamicMapFinishedEvent theEvent)
          Fired when the dynamic map finishes.
 void dynamicMapStarted(IDynamicMapEventsDynamicMapStartedEvent theEvent)
          Fired when the dynamic map starts.
 boolean equals(Object o)
          Compare this object with another
 void focusMapChanged(IActiveViewEventsFocusMapChangedEvent theEvent)
          Fired when a new map is made active.
 double getMaxUpdateRate()
          Indicates the minimum duration between which the map display updates, as defined in the dynamic update controller.
 double getRefreshRate()
          Indicates the maximum duration between map display refreshes, as defined in the dynamic update controller.
 String getStatistics()
          Various statistics about dynamic display processing.
 int getUpdateMethod()
          Defines how the display refresh is determined: by number of points or CPU usage.
 int getUpdateValue()
          Indicates the number of points or percentage of CPU usage used as the threshold for a map display refresh.
 int hashCode()
          the hashcode for this object
 void interactionStopped(IGlobeDisplayEventsInteractionStoppedEvent theEvent)
          Fired when interaction stops.
 void interfaceSupportsErrorInfo(GUID riid)
          interfaceSupportsErrorInfo
 boolean isAutoRefresh()
          Indicates whether or not the map display will refresh automatically when no new data has been received.
 boolean isManualUpdate()
          Indicates whether or not map display must be updated manually when new data is received.
 void itemAdded(IActiveViewEventsItemAddedEvent theEvent)
          Fired when an item is added to the view.
 void itemDeleted(IActiveViewEventsItemDeletedEvent theEvent)
          Fired when an item is deleted from the view.
 void itemReordered(IActiveViewEventsItemReorderedEvent theEvent)
          Fired when a view item is reordered.
 void mapsChanged(ITxDocumentEventsMapsChangedEvent theEvent)
          Fired when a change is made to the map collection.
 void newDocument(ITxDocumentEventsNewDocumentEvent theEvent)
          Fired when a new document is created.
 void onContextMenu(ITxDocumentEventsOnContextMenuEvent theEvent)
          Indicates if a context menu should be displayed at the given xy location.
 void openDocument(ITxDocumentEventsOpenDocumentEvent theEvent)
          Fired when a document is opened.
 void refreshDisplay(int enumUpdateType)
          Refreshes the map display in ArcMap.
 void removeLayer(ILayer piLayer)
          Obsolete Method that is unsupported.
 void selectionChanged(IActiveViewEventsSelectionChangedEvent theEvent)
          Call this function to fire the selection changed event.
 void setAutoRefresh(boolean pVal)
          Indicates whether or not the map display will refresh automatically when no new data has been received.
 void setManualUpdate(boolean pVal)
          Indicates whether or not map display must be updated manually when new data is received.
 void setMaxUpdateRate(double pVal)
          Indicates the minimum duration between which the map display updates, as defined in the dynamic update controller.
 void setRefreshRate(double pVal)
          Indicates the maximum duration between map display refreshes, as defined in the dynamic update controller.
 void setUpdateMethod(int pVal)
          Defines how the display refresh is determined: by number of points or CPU usage.
 void setUpdateValue(int pVal)
          Indicates the number of points or percentage of CPU usage used as the threshold for a map display refresh.
 void spatialReferenceChanged(IActiveViewEventsSpatialReferenceChangedEvent theEvent)
          Fired when the spatial reference is changed.
 void tileOverflow(IGlobeDisplayEventsTileOverflowEvent theEvent)
          Fired when there is an overflow of vector tiles in a layer.
 void vectorOverflow(IGlobeDisplayEventsVectorOverflowEvent theEvent)
          Fired when there is an overflow of vector features in a tile.
 void viewerAdded(IGlobeDisplayEventsViewerAddedEvent theEvent)
          Fired when a new viewer is added.
 void viewerRemoved(IGlobeDisplayEventsViewerRemovedEvent theEvent)
          Fired when a viewer is removed.
 void viewRefreshed(IActiveViewEventsViewRefreshedEvent theEvent)
          Fired when view is refreshed before draw happens.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.esri.arcgis.interop.RemoteObjRef
getJintegraDispatch, release
 

Constructor Detail

TADynamicDisplayRefreshController

public TADynamicDisplayRefreshController(Object obj)
                                  throws IOException
Construct a TADynamicDisplayRefreshController using a reference to such an object returned from ArcGIS Engine or Server. This is semantically equivalent to casting obj to TADynamicDisplayRefreshController.
Casting to this class from the return value of a method will not work, as this class represents an abstract class in ArcObjects.
*
TADynamicDisplayRefreshController o = (TADynamicDisplayRefreshController)obj; // will not work

TADynamicDisplayRefreshController o = new TADynamicDisplayRefreshController(obj); // Use this constructor instead
* @param obj an object returned from ArcGIS Engine or Server

Throws:
IOException - if there are interop problems TADynamicDisplayRefreshController theTADynamicDisplayRefreshController = (TADynamicDisplayRefreshController) obj;
Method Detail

equals

public boolean equals(Object o)
Compare this object with another

Overrides:
equals in class Object

hashCode

public int hashCode()
the hashcode for this object

Overrides:
hashCode in class Object

addLayer

public void addLayer(ILayer piLayer)
              throws IOException,
                     AutomationException
Obsolete Method that is unsupported.

Description

This method adds a layer to the Display update controller. Only temporal layers are permitted. If a non-temporal layer is added it is rejected and S_False is returned.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server. Requires Tracking Analyst Extension.

Specified by:
addLayer in interface ITAUpdateControl
Parameters:
piLayer - A reference to a com.esri.arcgis.carto.ILayer (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

removeLayer

public void removeLayer(ILayer piLayer)
                 throws IOException,
                        AutomationException
Obsolete Method that is unsupported.

Description

This method removes a layer from the Controller's management.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server. Requires Tracking Analyst Extension.

Specified by:
removeLayer in interface ITAUpdateControl
Parameters:
piLayer - A reference to a com.esri.arcgis.carto.ILayer (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getRefreshRate

public double getRefreshRate()
                      throws IOException,
                             AutomationException
Indicates the maximum duration between map display refreshes, as defined in the dynamic update controller.

Remarks

Gets and sets the maximum number of seconds between map refreshes if no new data has been received when AutoRefresh is enabled on the dynamic update controller. If no new data has been received to trigger an update refresh this timer will cause the map to refresh. This is important for maintaining time windows and aging. The RefreshRate must be greater than or equal to the MaxUpdateRate and less than or equal to 500 seconds.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server. Requires Tracking Analyst Extension.

Specified by:
getRefreshRate in interface ITAUpdateControl
Returns:
The pVal
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setRefreshRate

public void setRefreshRate(double pVal)
                    throws IOException,
                           AutomationException
Indicates the maximum duration between map display refreshes, as defined in the dynamic update controller.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server. Requires Tracking Analyst Extension.

Specified by:
setRefreshRate in interface ITAUpdateControl
Parameters:
pVal - The pVal (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getMaxUpdateRate

public double getMaxUpdateRate()
                        throws IOException,
                               AutomationException
Indicates the minimum duration between which the map display updates, as defined in the dynamic update controller.

Remarks

Gets and sets the minimum number of seconds between map refreshes when real-time data is being received and AutoRefresh is enabled. The MaxUpdateRate must be between 0.5 and 60 seconds. This timer is triggered only if new data has been received since the last refresh. If data stops being received for an extended period the timer specified by the RefreshRate property will execute to maintain temporal windows and aging.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server. Requires Tracking Analyst Extension.

Specified by:
getMaxUpdateRate in interface ITAUpdateControl
Returns:
The pVal
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setMaxUpdateRate

public void setMaxUpdateRate(double pVal)
                      throws IOException,
                             AutomationException
Indicates the minimum duration between which the map display updates, as defined in the dynamic update controller.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server. Requires Tracking Analyst Extension.

Specified by:
setMaxUpdateRate in interface ITAUpdateControl
Parameters:
pVal - The pVal (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

refreshDisplay

public void refreshDisplay(int enumUpdateType)
                    throws IOException,
                           AutomationException
Refreshes the map display in ArcMap.

Remarks

There are five types of screen updates available:

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server. Requires Tracking Analyst Extension.

Specified by:
refreshDisplay in interface ITAUpdateControl
Parameters:
enumUpdateType - A com.esri.arcgis.trackinganalyst.enumScreenUpdateType constant (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getUpdateMethod

public int getUpdateMethod()
                    throws IOException,
                           AutomationException
Defines how the display refresh is determined: by number of points or CPU usage.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server. Requires Tracking Analyst Extension.

Specified by:
getUpdateMethod in interface ITAUpdateControl
Returns:
A com.esri.arcgis.trackinganalyst.enumScreenUpdateThresholdType constant
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setUpdateMethod

public void setUpdateMethod(int pVal)
                     throws IOException,
                            AutomationException
Defines how the display refresh is determined: by number of points or CPU usage.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server. Requires Tracking Analyst Extension.

Specified by:
setUpdateMethod in interface ITAUpdateControl
Parameters:
pVal - A com.esri.arcgis.trackinganalyst.enumScreenUpdateThresholdType constant (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getUpdateValue

public int getUpdateValue()
                   throws IOException,
                          AutomationException
Indicates the number of points or percentage of CPU usage used as the threshold for a map display refresh.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server. Requires Tracking Analyst Extension.

Specified by:
getUpdateValue in interface ITAUpdateControl
Returns:
The pVal
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setUpdateValue

public void setUpdateValue(int pVal)
                    throws IOException,
                           AutomationException
Indicates the number of points or percentage of CPU usage used as the threshold for a map display refresh.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server. Requires Tracking Analyst Extension.

Specified by:
setUpdateValue in interface ITAUpdateControl
Parameters:
pVal - The pVal (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getStatistics

public String getStatistics()
                     throws IOException,
                            AutomationException
Various statistics about dynamic display processing.

Description

This method returns a XML string containing named variables of various statistics about display processing for temporal data.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server. Requires Tracking Analyst Extension.

Specified by:
getStatistics in interface ITAUpdateControl
Returns:
The pbstrXMLData
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isManualUpdate

public boolean isManualUpdate()
                       throws IOException,
                              AutomationException
Indicates whether or not map display must be updated manually when new data is received.

Remarks

If ManualUpdate is set to true then you are responsible for causing map refreshes to animate the display of tracking data. The primary mechanism to cause a screen refresh is using RefreshDisplay. you can also using IActiveView::Refresh and IActiveView::PartialRefresh, but they are not as optimized for updating tracking data.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server. Requires Tracking Analyst Extension.

Specified by:
isManualUpdate in interface ITAUpdateControl
Returns:
The pVal
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setManualUpdate

public void setManualUpdate(boolean pVal)
                     throws IOException,
                            AutomationException
Indicates whether or not map display must be updated manually when new data is received.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server. Requires Tracking Analyst Extension.

Specified by:
setManualUpdate in interface ITAUpdateControl
Parameters:
pVal - The pVal (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isAutoRefresh

public boolean isAutoRefresh()
                      throws IOException,
                             AutomationException
Indicates whether or not the map display will refresh automatically when no new data has been received.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server. Requires Tracking Analyst Extension.

Specified by:
isAutoRefresh in interface ITAUpdateControl
Returns:
The pVal
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setAutoRefresh

public void setAutoRefresh(boolean pVal)
                    throws IOException,
                           AutomationException
Indicates whether or not the map display will refresh automatically when no new data has been received.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server. Requires Tracking Analyst Extension.

Specified by:
setAutoRefresh in interface ITAUpdateControl
Parameters:
pVal - The pVal (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

contentsChanged

public void contentsChanged(IActiveViewEventsContentsChangedEvent theEvent)
                     throws IOException,
                            AutomationException
Fired when the contents of the view changes.

Remarks

The Map object fires this event when a new document is loaded. Adding a new layer to a Map does not trigger this event.

The PageLayout object fires the event when IGraphicsContainer::DeleteAllElements in called and when a new document is loaded.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
contentsChanged in interface IActiveViewEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
IActiveView.contentsChanged()

contentsCleared

public void contentsCleared(IActiveViewEventsContentsClearedEvent theEvent)
                     throws IOException,
                            AutomationException
Fired when the contents of the view is cleared.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
contentsCleared in interface IActiveViewEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

itemAdded

public void itemAdded(IActiveViewEventsItemAddedEvent theEvent)
               throws IOException,
                      AutomationException
Fired when an item is added to the view.

Remarks

The Map fires the event every time a new layer is added.

The PageLayout fires this event whenever a new element is added to the layout. Elements include not only graphics but data frames as well.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
itemAdded in interface IActiveViewEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

itemDeleted

public void itemDeleted(IActiveViewEventsItemDeletedEvent theEvent)
                 throws IOException,
                        AutomationException
Fired when an item is deleted from the view.

Remarks

The PageLayout object fires this event whenever elements are deleted from the layout.

The Map object fires this event when a layer is removed.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
itemDeleted in interface IActiveViewEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

itemReordered

public void itemReordered(IActiveViewEventsItemReorderedEvent theEvent)
                   throws IOException,
                          AutomationException
Fired when a view item is reordered.

Remarks

The Map objects only fire this event whenever IMap::MoveLayer is called. In the ArcMap application, this occurs when you reorder layers in the table of contents. The Map will also fire this event when new layers are added.

The PageLayout object fires this event when changing the order of graphics. For example, IGraphicsContainer::BringToFront, PutElementOrder, SendToBack, SendBackward, and BringForward all fire this event. These functions are on ArcMap's Drawing menu under the Order pull right menu. Although the Map object is also a graphics container, it does not fire this event when its graphics are reordered.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
itemReordered in interface IActiveViewEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

selectionChanged

public void selectionChanged(IActiveViewEventsSelectionChangedEvent theEvent)
                      throws IOException,
                             AutomationException
Call this function to fire the selection changed event.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
selectionChanged in interface IActiveViewEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

viewRefreshed

public void viewRefreshed(IActiveViewEventsViewRefreshedEvent theEvent)
                   throws IOException,
                          AutomationException
Fired when view is refreshed before draw happens.

Description

Method that gets fired in response to IActiveView::Refresh and IActiveView::PartialRefresh.

Remarks

This event is useful in the case where you're watching for something to change in the view and there aren't any specific events for that change (e.g. ContentsChanged, ItemAdded). You can always listen for this method as a last resort. Care must be taken however to be very efficient in your implementation of this event because it will be called quite often.

The event parameters directly coincide with the arguments to IActiveView::PartialRefresh. For additional information about the arguments, see the help for that method.

If the event object connects to both the layout and a map, then the view parameter tells you which object initiated the event.

In an implementation of this method you typically want to check the phase and respond to only one. Otherwise, your code will execute multiple times per drawing sequence.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
viewRefreshed in interface IActiveViewEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

afterDraw

public void afterDraw(IActiveViewEventsAfterDrawEvent theEvent)
               throws IOException,
                      AutomationException
Fired after the specified phase is drawn.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
afterDraw in interface IActiveViewEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

afterItemDraw

public void afterItemDraw(IActiveViewEventsAfterItemDrawEvent theEvent)
                   throws IOException,
                          AutomationException
Fired after an individual view item is drawn. Example: view items include layers in a map or elements in a page layout.

Remarks

AfterItemDraw can be used to execute after each individual item has drawn. Event firing can be an expensive operation (time consuming) when there are many layers in a map, however. As a result, the AfterItemDraw event is only fired when the IViewManger::VerboseEvents property is set to True. By default this property is False.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
afterItemDraw in interface IActiveViewEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

focusMapChanged

public void focusMapChanged(IActiveViewEventsFocusMapChangedEvent theEvent)
                     throws IOException,
                            AutomationException
Fired when a new map is made active.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
focusMapChanged in interface IActiveViewEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

spatialReferenceChanged

public void spatialReferenceChanged(IActiveViewEventsSpatialReferenceChangedEvent theEvent)
                             throws IOException,
                                    AutomationException
Fired when the spatial reference is changed.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
spatialReferenceChanged in interface IActiveViewEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

interfaceSupportsErrorInfo

public void interfaceSupportsErrorInfo(GUID riid)
                                throws IOException,
                                       AutomationException
interfaceSupportsErrorInfo

Description

Indicates whether the interface supports IErrorInfo.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
interfaceSupportsErrorInfo in interface ISupportErrorInfo
Parameters:
riid - A Structure: com.esri.arcgis.support.ms.stdole.GUID (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

activeViewerChanged

public void activeViewerChanged(IGlobeDisplayEventsActiveViewerChangedEvent theEvent)
                         throws IOException,
                                AutomationException
Fired when the active viewer changes.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
activeViewerChanged in interface IGlobeDisplayEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

viewerAdded

public void viewerAdded(IGlobeDisplayEventsViewerAddedEvent theEvent)
                 throws IOException,
                        AutomationException
Fired when a new viewer is added.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
viewerAdded in interface IGlobeDisplayEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

viewerRemoved

public void viewerRemoved(IGlobeDisplayEventsViewerRemovedEvent theEvent)
                   throws IOException,
                          AutomationException
Fired when a viewer is removed.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
viewerRemoved in interface IGlobeDisplayEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

interactionStopped

public void interactionStopped(IGlobeDisplayEventsInteractionStoppedEvent theEvent)
                        throws IOException,
                               AutomationException
Fired when interaction stops.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
interactionStopped in interface IGlobeDisplayEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

batchTileGenerationStarted

public void batchTileGenerationStarted(IGlobeDisplayEventsBatchTileGenerationStartedEvent theEvent)
                                throws IOException,
                                       AutomationException
Fired when data preparation starts.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
batchTileGenerationStarted in interface IGlobeDisplayEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

batchTileGenerationStopped

public void batchTileGenerationStopped(IGlobeDisplayEventsBatchTileGenerationStoppedEvent theEvent)
                                throws IOException,
                                       AutomationException
Fired when data preparation stops.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
batchTileGenerationStopped in interface IGlobeDisplayEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

beforeDraw

public boolean beforeDraw(IGlobeDisplayEventsBeforeDrawEvent theEvent)
                   throws IOException,
                          AutomationException
Fired when drawing starts.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
beforeDraw in interface IGlobeDisplayEvents
Parameters:
theEvent - The event
Returns:
The pbHandled
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

afterDraw

public void afterDraw(IGlobeDisplayEventsAfterDrawEvent theEvent)
               throws IOException,
                      AutomationException
Fired when drawing finishes.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
afterDraw in interface IGlobeDisplayEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

vectorOverflow

public void vectorOverflow(IGlobeDisplayEventsVectorOverflowEvent theEvent)
                    throws IOException,
                           AutomationException
Fired when there is an overflow of vector features in a tile.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
vectorOverflow in interface IGlobeDisplayEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

tileOverflow

public void tileOverflow(IGlobeDisplayEventsTileOverflowEvent theEvent)
                  throws IOException,
                         AutomationException
Fired when there is an overflow of vector tiles in a layer.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
tileOverflow in interface IGlobeDisplayEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

dynamicMapStarted

public void dynamicMapStarted(IDynamicMapEventsDynamicMapStartedEvent theEvent)
                       throws IOException,
                              AutomationException
Fired when the dynamic map starts.

Description

Fired each time the dynamic map cycle starts, if the Dynamic Map is enabled.

This event is tied to the internal heart beat of the dynamic map and will get fired on every dynamic map heart beat, even if the dynamic map is not being redrawn.

Remarks

The dynamic map heart beat interval is set by the IDynamicMap.DynamicDrawRate property.

This event is useful when a timer mechanism is needed. This event synchronizes with the dynamic map heart beatt, therefore it can be used to implement a navigation mode, by changing the visible bounds and calling the refresh method.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
dynamicMapStarted in interface IDynamicMapEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

dynamicMapFinished

public void dynamicMapFinished(IDynamicMapEventsDynamicMapFinishedEvent theEvent)
                        throws IOException,
                               AutomationException
Fired when the dynamic map finishes.

Description

Fired each time the dynamic map cycle ends, if the Dynamic Map is enabled.

This event is tied to the internal heart beat of the dynamic map and will get fired on every dynamic map heart beat, even if the dynamic map is not being redrawn.

Remarks

The dynamic map heart beat interval is set by the IDynamicMap.DynamicDrawRate property.

This event is useful when a timer mechanism is needed. This event synchronizes with the dynamic map heart beat.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
dynamicMapFinished in interface IDynamicMapEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

beforeDynamicDraw

public void beforeDynamicDraw(IDynamicMapEventsBeforeDynamicDrawEvent theEvent)
                       throws IOException,
                              AutomationException
Fired before the specified phase is drawn.

Remarks

The BeforeDynamicDraw event is getting fired with two different phases (enum esriDynamicMapDrawPhase). Each phase has a different meaning and usage:

  1. esriDMDPDynamicLayers – This is getting fired on each dynamic cycle that the Dynamic Map re-renders the scene. The BeforeDynamicDraw event is fired just before the first layer is rendered, and AfterDynamicDraw event is fired just after the last layer (including any Graphic Layer) is rendered.
    In this context, there is an active OpenGL Rendering context (with a preset rendering volume, viewport, etc).
    Use this context to plug-in any custom dynamic drawings with the DynamicDisplay API as well as with the OpenGL API. This context can be useful in order to draw dynamic elements behind or on top of the Layers and Graphics, which do not need to be associated with a layer.
  2. esriDMDPLayers – When the Dynamic Map is sensing that it needs to fetch tiles in order to be able to render the scene, the BeforeDynamicDraw will get fired. When the last missing tile will be available and rendered the AfterDynamicDraw event will get fired.
    Note that it is not valid to use the DynamicDisplay API, nor the OpenGL API in this context, since the OpenGL Rendering Context is not fully setup.
    Use this context if you need to monitor when the Dynamic Map is still in a process of fetching tiles for rendering the display.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
beforeDynamicDraw in interface IDynamicMapEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

afterDynamicDraw

public void afterDynamicDraw(IDynamicMapEventsAfterDynamicDrawEvent theEvent)
                      throws IOException,
                             AutomationException
Fired after the specified phase is drawn.

Remarks

The AfterDynamicDraw event is getting fired with two different phases (enum esriDynamicMapDrawPhase). Each phase has a different meaning and usage:

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
afterDynamicDraw in interface IDynamicMapEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

activeViewChanged

public void activeViewChanged(ITxDocumentEventsActiveViewChangedEvent theEvent)
                       throws IOException,
                              AutomationException
Fired when the active view changes.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server. Requires Tracking Analyst Extension.

Specified by:
activeViewChanged in interface ITxDocumentEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

mapsChanged

public void mapsChanged(ITxDocumentEventsMapsChangedEvent theEvent)
                 throws IOException,
                        AutomationException
Fired when a change is made to the map collection.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server. Requires Tracking Analyst Extension.

Specified by:
mapsChanged in interface ITxDocumentEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

onContextMenu

public void onContextMenu(ITxDocumentEventsOnContextMenuEvent theEvent)
                   throws IOException,
                          AutomationException
Indicates if a context menu should be displayed at the given xy location. Return true if handled.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server. Requires Tracking Analyst Extension.

Specified by:
onContextMenu in interface ITxDocumentEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

newDocument

public void newDocument(ITxDocumentEventsNewDocumentEvent theEvent)
                 throws IOException,
                        AutomationException
Fired when a new document is created.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server. Requires Tracking Analyst Extension.

Specified by:
newDocument in interface ITxDocumentEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

openDocument

public void openDocument(ITxDocumentEventsOpenDocumentEvent theEvent)
                  throws IOException,
                         AutomationException
Fired when a document is opened.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server. Requires Tracking Analyst Extension.

Specified by:
openDocument in interface ITxDocumentEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

beforeCloseDocument

public boolean beforeCloseDocument(ITxDocumentEventsBeforeCloseDocumentEvent theEvent)
                            throws IOException,
                                   AutomationException
Fired before a document is closed. Return True to abort the close process.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server. Requires Tracking Analyst Extension.

Specified by:
beforeCloseDocument in interface ITxDocumentEvents
Parameters:
theEvent - The event
Returns:
The abortClose
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

closeDocument

public void closeDocument(ITxDocumentEventsCloseDocumentEvent theEvent)
                   throws IOException,
                          AutomationException
Fired when a document is closed.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server. Requires Tracking Analyst Extension.

Specified by:
closeDocument in interface ITxDocumentEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

displayStarted

public void displayStarted(IDisplayEventsDisplayStartedEvent theEvent)
                    throws IOException,
                           AutomationException
Notifies clients when drawing starts.

Remarks

IDisplay::StartDrawing fires this event to notify clients that drawing has started. The display where drawing was initiated is returned.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
displayStarted in interface IDisplayEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

displayFinished

public void displayFinished(IDisplayEventsDisplayFinishedEvent theEvent)
                     throws IOException,
                            AutomationException
Notifies clients when drawing completes.

Remarks

IDisplay::FinishDrawing fires this event to notify clients that drawing has completed. The display where drawing has completed is returned to the client.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
displayFinished in interface IDisplayEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

displayInvalidated

public void displayInvalidated(IDisplayEventsDisplayInvalidatedEvent theEvent)
                        throws IOException,
                               AutomationException
Notifies clients when display is invalidated.

Remarks

IScreenDisplay::Invalidate fires this event to notify all clients a display has been invalidated. The display, the area invalidated, the erase setting, and the cacheID are all returned to clients listening to this event.

The Map object is one client that listens for this event and it may in turn fire the IActiveViewEvenets::ViewRefreshed event.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
displayInvalidated in interface IDisplayEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

displayScrolled

public void displayScrolled(IDisplayEventsDisplayScrolledEvent theEvent)
                     throws IOException,
                            AutomationException
Notifies clients when display is scrolled.

Remarks

IScreenDisplay::DoScroll fires this event to notify all clients that the display has scrolled. For example, the Map object listens for this event because it needs to perform some drawing operations whenever its display is scrolled.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
displayScrolled in interface IDisplayEvents
Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.