RSS weather layer
WeatherLayerToolbar.cs
// Copyright 2010 ESRI
// 
// All rights reserved under the copyright laws of the United States
// and applicable international laws, treaties, and conventions.
// 
// You may freely redistribute and use this sample code, with or
// without modification, provided you include the original copyright
// notice and use restrictions.
// 
// See the use restrictions.
// 

using ESRI.ArcGIS.ADF.BaseClasses;
using ESRI.ArcGIS.ADF.CATIDs;
using ESRI.ArcGIS.SystemUI;
using System;
using System.Runtime.InteropServices;
namespace RSSWeatherLayer
{

  /// <summary>
  /// The layer's command items toolbar
  /// </summary>
  [Guid("653D29A8-10A4-44b8-9140-86170B715931")]
  [ClassInterface(ClassInterfaceType.None)]
  [ProgId("RSSWeatherLayer.WeatherLayerToolbar")]
  [ComVisible(true)]
  public class WeatherLayerToolbar : IToolBarDef
  {
    #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);
      MxCommandBars.Register(regKey);
      ControlsToolbars.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);
      MxCommandBars.Unregister(regKey);
      ControlsToolbars.Unregister(regKey);
    }

    #endregion
    #endregion

    struct ToolDef
    {
      public string  itemDef;
      public bool    group;
      public ToolDef(string itd, bool grp)
      {
        itemDef = itd;
        group = grp;
      }
    };

    private ToolDef[] m_toolDefs = {
                                     new ToolDef("RSSWeatherLayer.AddRSSWeatherLayer", false),
                                     new ToolDef("RSSWeatherLayer.SelectByCityName", false),
                                     new ToolDef("RSSWeatherLayer.AddWeatherItemCmd", false),
                                     new ToolDef("RSSWeatherLayer.AddWeatherItemTool", false),
                                     new ToolDef("RSSWeatherLayer.RefreshLayerCmd", false) 
                                   };

    public WeatherLayerToolbar()
    {
    }

  
    #region IToolBarDef Implementations
    public void GetItemInfo(int pos, ESRI.ArcGIS.SystemUI.IItemDef itemDef)
    {
      itemDef.ID = m_toolDefs[pos].itemDef;
      itemDef.Group = m_toolDefs[pos].group;
    }

    public string Caption
    {
      get
      {
        return "RSS Weather layer";
      }
    }

    public string Name
    {
      get
      {
        return "WeatherLayerToolbar";
      }
    }

    public int ItemCount
    {
      get
      {
        return m_toolDefs.Length;
      }
    }
    #endregion

  }
}