ArcObjects Library Reference  

RefreshLayerCmd

About the RSS weather layer Sample

[C#]

RefreshLayerCmd.cs

using System;
using System.Drawing;
using System.Runtime.InteropServices;
using ESRI.ArcGIS.ADF.BaseClasses;
using ESRI.ArcGIS.ADF.CATIDs;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.Carto;

namespace RSSWeatherLayer
{
	/// <summary>
	/// Refreshes the layer's data (runs the layer update thread)
	/// </summary>     
  [Guid("30FD7DC6-6696-4101-99AD-4C8CDE968E4B")]
  [ProgId("RSSWeatherLayer.RefreshLayerCmd")]
  [ComVisible(true)]
	public class RefreshLayerCmd: BaseCommand
	{
    #region COM Registration Function(s)
    [ComRegisterFunction()]
    [ComVisible(false)]
    static void RegisterFunction(Type registerType)
    {
      // Required for ArcGIS Component Category Registrar support
      ArcGISCategoryRegistration(registerType);

      //
      // TODO: Add any COM registration code here
      //
    }

    [ComUnregisterFunction()]
    [ComVisible(false)]
    static void UnregisterFunction(Type registerType)
    {
      // Required for ArcGIS Component Category Registrar support
      ArcGISCategoryUnregistration(registerType);

      //
      // TODO: Add any COM unregistration code here
      //
    }

    #region ArcGIS Component Category Registrar generated code
    /// <summary>
    /// Required method for ArcGIS Component Category registration -
    /// Do not modify the contents of this method with the code editor.
    /// </summary>
    private static void ArcGISCategoryRegistration(Type registerType)
    {
      string regKey = string.Format("HKEY_CLASSES_ROOT\\CLSID\\{{{0}}}", registerType.GUID);
      ControlsCommands.Register(regKey);
    }
    /// <summary>
    /// Required method for ArcGIS Component Category unregistration -
    /// Do not modify the contents of this method with the code editor.
    /// </summary>
    private static void ArcGISCategoryUnregistration(Type registerType)
    {
      string regKey = string.Format("HKEY_CLASSES_ROOT\\CLSID\\{{{0}}}", registerType.GUID);
      ControlsCommands.Unregister(regKey);
    }

    #endregion
    #endregion

    //Class members
    private IHookHelper m_hookHelper = null;

    /// <summary>
    /// CTor
    /// </summary>
		public RefreshLayerCmd()
		{
      base.m_category = "Weather";
      base.m_caption = "Refresh layer";
      base.m_message = "Refresh the layer";
      base.m_toolTip = "Refresh layer";
      base.m_name = base.m_category + "_" + base.m_caption;

      try
      {
        base.m_bitmap = new Bitmap(GetType().Assembly.GetManifestResourceStream(GetType(), "RefreshLayerCmd.bmp"));
      }
      catch (Exception ex)
      {
        System.Diagnostics.Trace.WriteLine(ex.Message, "Invalid Bitmap");
      }
		}

    #region Overriden Class Methods

    /// <summary>
    /// Occurs when this command is created
    /// </summary>
    /// <param name="hook">Instance of the application</param>
    public override void OnCreate(object hook)
    {
      //Instantiate the hook helper
      if (m_hookHelper == null)
        m_hookHelper = new HookHelperClass();

      //set the hook
      m_hookHelper.Hook = hook;
    }

    /// <summary>
    /// Occurs when this command is clicked
    /// </summary>
    public override void OnClick()
    {
      try
      {
        if (0 == m_hookHelper.FocusMap.LayerCount)
          return;

        RSSWeatherLayerClass weatherLayer = null;
        
        //get the weather layer
        IEnumLayer layers = m_hookHelper.FocusMap.get_Layers(null, false);
        layers.Reset();
        ILayer layer = layers.Next();
        while (layer != null)
        {
          if (layer is RSSWeatherLayerClass)
          {
            weatherLayer = (RSSWeatherLayerClass)layer;
            weatherLayer.Refresh();
            return;
          }
          layer = layers.Next();
        }
      }
      catch (Exception ex)
      {
        System.Diagnostics.Trace.WriteLine(ex.Message);
      }
    }

    #endregion
	}
}

[Visual Basic .NET]

RefreshLayerCmd.vb

Imports Microsoft.VisualBasic
Imports System
Imports System.Drawing
Imports System.Runtime.InteropServices
Imports ESRI.ArcGIS.ADF.BaseClasses
Imports ESRI.ArcGIS.ADF.CATIDs
Imports ESRI.ArcGIS.Controls
Imports ESRI.ArcGIS.Carto

	''' <summary>
	''' Refreshes the layer's data (runs the layer update thread)
	''' </summary>     
  <Guid("30FD7DC6-6696-4101-99AD-4C8CDE968E4B"), ProgId("RefreshLayerCmd"), ComVisible(True)> _
  Public Class RefreshLayerCmd : Inherits BaseCommand
	#Region "COM Registration Function(s)"
	<ComRegisterFunction(), ComVisible(False)> _
	Private Shared Sub RegisterFunction(ByVal registerType As Type)
	  ' Required for ArcGIS Component Category Registrar support
	  ArcGISCategoryRegistration(registerType)

	  '
	  ' TODO: Add any COM registration code here
	  '
	End Sub

	<ComUnregisterFunction(), ComVisible(False)> _
	Private Shared Sub UnregisterFunction(ByVal registerType As Type)
	  ' Required for ArcGIS Component Category Registrar support
	  ArcGISCategoryUnregistration(registerType)

	  '
	  ' TODO: Add any COM unregistration code here
	  '
	End Sub

	#Region "ArcGIS Component Category Registrar generated code"
	''' <summary>
	''' Required method for ArcGIS Component Category registration -
	''' Do not modify the contents of this method with the code editor.
	''' </summary>
	Private Shared Sub ArcGISCategoryRegistration(ByVal registerType As Type)
	  Dim regKey As String = String.Format("HKEY_CLASSES_ROOT\CLSID\{{{0}}}", registerType.GUID)
	  ControlsCommands.Register(regKey)
	End Sub
	''' <summary>
	''' Required method for ArcGIS Component Category unregistration -
	''' Do not modify the contents of this method with the code editor.
	''' </summary>
	Private Shared Sub ArcGISCategoryUnregistration(ByVal registerType As Type)
	  Dim regKey As String = String.Format("HKEY_CLASSES_ROOT\CLSID\{{{0}}}", registerType.GUID)
	  ControlsCommands.Unregister(regKey)
	End Sub

	#End Region
	#End Region

	'Class members
	Private m_hookHelper As IHookHelper = Nothing

	''' <summary>
	''' CTor
	''' </summary>
		Public Sub New()
			MyBase.m_category = "Weather"
			MyBase.m_caption = "Refresh layer"
			MyBase.m_message = "Refresh the layer"
			MyBase.m_toolTip = "Refresh layer"
			MyBase.m_name = MyBase.m_category & "_" & MyBase.m_caption

			Try
				MyBase.m_bitmap = New Bitmap(Me.GetType().Assembly.GetManifestResourceStream(Me.GetType(), "RefreshLayerCmd.bmp"))
			Catch ex As Exception
				System.Diagnostics.Trace.WriteLine(ex.Message, "Invalid Bitmap")
			End Try
		End Sub

#Region "Overridden Class Methods"

    ''' <summary>
    ''' Occurs when this command is created
    ''' </summary>
    ''' <param name="hook">Instance of the application</param>
    Public Overrides Sub OnCreate(ByVal hook As Object)
        'Instantiate the hook helper
        If m_hookHelper Is Nothing Then
            m_hookHelper = New HookHelperClass()
        End If

        'set the hook
        m_hookHelper.Hook = hook
    End Sub

    ''' <summary>
    ''' Occurs when this command is clicked
    ''' </summary>
    Public Overrides Sub OnClick()
        Try
            If 0 = m_hookHelper.FocusMap.LayerCount Then
                Return
            End If

            Dim weatherLayer As RSSWeatherLayerClass = Nothing

            'get the weather layer
            Dim layers As IEnumLayer = m_hookHelper.FocusMap.Layers(Nothing, False)
            layers.Reset()
            Dim layer As ILayer = layers.Next()
            Do While Not layer Is Nothing
                If TypeOf layer Is RSSWeatherLayerClass Then
                    weatherLayer = CType(layer, RSSWeatherLayerClass)
                    weatherLayer.Refresh()
                    Return
                End If
                layer = layers.Next()
            Loop
        Catch ex As Exception
            System.Diagnostics.Trace.WriteLine(ex.Message)
        End Try
    End Sub

#End Region
  End Class