RSS Weather 3D Layer
GlobeWeatherIdentifyObject.cs
// Copyright 2006 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 System;
using System.Collections;
using System.Runtime.InteropServices;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.GlobeCore;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.DataSourcesFile;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.Analyst3D;
namespace RSSWeatherLayer3D
{
/// <summary>
/// Summary description for GlobeWeatherIdentifyObject.
/// </summary>
public class GlobeWeatherIdentifyObject : IIdentifyObj, IIdentifyObject, IDisposable
{
private RSSWeatherLayer3DClass m_weatherLayer = null;
private IPropertySet m_propset = null;
private IdentifyDlg m_identifyDlg = null;
private System.Windows.Forms.ContextMenu m_menu;
public GlobeWeatherIdentifyObject()
{
InitializeContextMenu();
}
#region IIdentifyObject Members
public IPropertySet PropertySet
{
get
{
return m_propset;
}
set
{
m_propset = value;
}
}
public string Name
{
get
{
return "WeatherInfo";
}
set
{
// TODO: Add GlobeWeatherIdentifyObject.Name setter implementation
}
}
#endregion
#region IIdentifyObj Members
public void Flash(IScreenDisplay pDisplay)
{
if(null == m_propset)
return;
long zipCode = Convert.ToInt64(m_propset.GetProperty("ZIPCODE"));
m_weatherLayer.Flash(zipCode);
}
public bool CanIdentify(ILayer pLayer)
{
if(!(pLayer is RSSWeatherLayer3DClass))
return false;
m_weatherLayer = (RSSWeatherLayer3DClass)pLayer;
return true;;
}
public int hWnd
{
get
{
if(null == m_identifyDlg || m_identifyDlg.Handle.ToInt32() == 0)
{
m_identifyDlg = new IdentifyDlg();
m_identifyDlg.CreateControl();
m_identifyDlg.SetProperties(m_propset);
}
return m_identifyDlg.Handle.ToInt32();
}
}
string ESRI.ArcGIS.Carto.IIdentifyObj.Name
{
get
{
return "WeatherInfo";
}
}
public ILayer Layer
{
get
{
return m_weatherLayer;
}
}
public void PopUpMenu(int x, int y)
{
//System.Windows.Forms.Form.ActiveForm
//m_menu.Show(m_identifyDlg, new System.Drawing.Point(x,y));
m_menu.Show(m_identifyDlg, m_identifyDlg.PointToClient(new System.Drawing.Point(x,y)));
}
#endregion
#region IDisposable Members
public void Dispose()
{
if(!m_identifyDlg.IsDisposed)
m_identifyDlg.Dispose();
m_weatherLayer = null;
m_propset = null;
}
#endregion
private void InitializeContextMenu()
{
m_menu = new System.Windows.Forms.ContextMenu();
System.Windows.Forms.MenuItem menuFlash = new System.Windows.Forms.MenuItem("Flash", new System.EventHandler(menuFlash_Click));
m_menu.MenuItems.Add(menuFlash);
System.Windows.Forms.MenuItem menuSeparator = new System.Windows.Forms.MenuItem("-");
m_menu.MenuItems.Add(menuSeparator);
System.Windows.Forms.MenuItem menuZoomTo = new System.Windows.Forms.MenuItem("ZoomTo", new System.EventHandler(menuZoomTo_Click));
m_menu.MenuItems.Add(menuZoomTo);
System.Windows.Forms.MenuItem menuSelect = new System.Windows.Forms.MenuItem("Select", new System.EventHandler(menuSelect_Click));
m_menu.MenuItems.Add(menuSelect);
}
private void menuFlash_Click(System.Object sender, System.EventArgs e)
{
if(null == m_propset)
return;
long zipCode = Convert.ToInt64(m_propset.GetProperty("ZIPCODE"));
m_weatherLayer.Flash(zipCode);
}
private void menuZoomTo_Click(System.Object sender, System.EventArgs e)
{
if(null == m_propset)
return;
long zipCode = Convert.ToInt64(m_propset.GetProperty("ZIPCODE"));
m_weatherLayer.ZoomTo(zipCode);
}
private void menuSelect_Click(System.Object sender, System.EventArgs e)
{
if(null == m_propset)
return;
long zipCode = Convert.ToInt64(m_propset.GetProperty("ZIPCODE"));
m_weatherLayer.Select(zipCode, true);
}
}
}