com.esri.arcgis.trackinganalyst
Class TADynamicDisplayRefreshController

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

public class TADynamicDisplayRefreshController
extends Object
implements com.esri.arcgis.interop.RemoteObjRef, ITAUpdateControl, IActiveViewEvents

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 ArcMaps 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 addLayer(ILayer piLayer)
          Obsolete Method that is unsupported.
 void afterDraw(IActiveViewEventsAfterDrawEvent theEvent)
          Fired after the specified phase is drawn.
 void afterItemDraw(IActiveViewEventsAfterItemDrawEvent theEvent)
          Fired after an individual view item is drawn.
 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.
 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
 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 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 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.

Description

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.

Description

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.