// 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 at <your ArcGIS install location>/DeveloperKit10.0/userestrictions.txt.
//
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using ESRI.ArcGIS.ADF.BaseClasses;
using ESRI.ArcGIS.ADF.CATIDs;
using System.Collections.Generic;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.EngineCore;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Carto;
using System.IO;
using System.Collections;
using SafeMobileLib;
namespace Safedispatch_4_0
{
[Guid("2713c8ef-8c59-42c7-bbcd-a0a667b8f51b")]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("GraphicTrackerMap.SelectGT")]
public sealed class SelectGT : BaseTool
{
#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
///
/// Required method for ArcGIS Component Category registration -
/// Do not modify the contents of this method with the code editor.
///
private static void ArcGISCategoryRegistration(Type registerType)
{
string regKey = string.Format("HKEY_CLASSES_ROOT\\CLSID\\{{{0}}}", registerType.GUID);
ControlsCommands.Register(regKey);
}
///
/// Required method for ArcGIS Component Category unregistration -
/// Do not modify the contents of this method with the code editor.
///
private static void ArcGISCategoryUnregistration(Type registerType)
{
string regKey = string.Format("HKEY_CLASSES_ROOT\\CLSID\\{{{0}}}", registerType.GUID);
ControlsCommands.Unregister(regKey);
}
#endregion
#endregion
private IGraphicTracker LocalTracker = null;
private String tabName = "";
//private GTMapForm m_form = null;
public SelectGT(IGraphicTracker _LocalTracker,String _tabName)
{
LocalTracker = _LocalTracker;
tabName = _tabName;
base.m_category = "Graphic Tracker"; //localizable text
base.m_caption = "Select GT"; //localizable text
base.m_message = "Select GT"; //localizable text
base.m_toolTip = "Select graphic"; //localizable text
base.m_name = "GraphicTrackerMap_SelectGT"; //unique id, non-localizable (e.g. "MyCategory_MyTool")
try
{
base.m_bitmap = Dispatcher.Properties.Resources.SelectGT;
byte[] bin = Dispatcher.Properties.Resources.SelectGT1;
using (BinaryWriter binWriter = new BinaryWriter(File.Open(System.Windows.Forms.Application.StartupPath + @"\SelectGT.cur", FileMode.Create)))
{
binWriter.Write(bin);
}
base.m_cursor = new System.Windows.Forms.Cursor(System.Windows.Forms.Application.StartupPath + @"\SelectGT.cur");
}
catch (Exception ex)
{
SM.Debug("Error on create Select:"+ex.ToString());
}
}
#region Overriden Class Methods
public override void OnCreate(object hook)
{
/*if (m_hookHelper == null)
m_hookHelper = new HookHelperClass();
m_hookHelper.Hook = hook;*/
}
public override void OnClick()
{
/* IToolbarControl2 toolBarControl = m_hookHelper.Hook as IToolbarControl2;
IMapControl4 mapControl = m_hookHelper.Hook as IMapControl4;
if (toolBarControl != null)
mapControl = toolBarControl.Buddy as IMapControl4;
if (mapControl == null)
return;*/
}
public override void OnMouseUp(int Button, int Shift, int X, int Y)
{
// Iterate through the GraphicTracker and unselect them all
/* m_form.m_graphicTracker.SuspendUpdate = true;
foreach (int i in m_form.m_GTGeometries.Keys) m_form.m_graphicTracker.Highlight(i, false);
m_form.m_graphicTracker.SuspendUpdate = false;*/
//Highlight the graphic identified by the HitTest result
try
{
int id = LocalTracker.HitTest(X, Y);
if (id != -1)
{
LocalTracker.Highlight(id, true);
foreach (String obj in MainForm2.vehicleHT.Keys)
{
if (((MapElement)(((Vehicle)MainForm2.vehicleHT[obj]).MapsHT[tabName])).GISID == id)
{
((MapElement)(((Vehicle)MainForm2.vehicleHT[obj]).MapsHT[tabName])).GISSelect = true;
//((MapElement)(((Vehicle)MainForm2.vehicleHT[obj]).MapsHT[tabName])).Updatelabel(((MapElement)(((Vehicle)MainForm2.vehicleHT[obj]).MapsHT[tabName])).labelGIS, 4);
((MapElement)(((Vehicle)MainForm2.vehicleHT[obj]).MapsHT[tabName])).UpdateLabelCMD(true);
}
else if (((MapElement)(((Vehicle)MainForm2.vehicleHT[obj]).MapsHT[tabName])).GISID!=-1)
{
try
{
LocalTracker.Highlight(((MapElement)(((Vehicle)MainForm2.vehicleHT[obj]).MapsHT[tabName])).GISID, false);
((MapElement)(((Vehicle)MainForm2.vehicleHT[obj]).MapsHT[tabName])).GISSelect = false;
if (MainForm2.Displaywithname) ((MapElement)(((Vehicle)MainForm2.vehicleHT[obj]).MapsHT[tabName])).Updatelabel(((Vehicle)MainForm2.vehicleHT[obj]).busName, 1);
else ((MapElement)(((Vehicle)MainForm2.vehicleHT[obj]).MapsHT[tabName])).Updatelabel("", 0);
}
catch (Exception ex)
{
SM.Debug("Unable to UNSELECT ID:" + ((MapElement)(((Vehicle)MainForm2.vehicleHT[obj]).MapsHT[tabName])).GISID + " name:" + ((Vehicle)MainForm2.vehicleHT[obj]).busName+" Error:"+ex.ToString());
}
}
}
}
}
catch (Exception ex)
{
SM.Debug("Error on mouse UP:"+ex.ToString());
}
}
#endregion
}
[Guid("2713c8ef-8c59-42c7-bbcd-a0a667b8f51b")]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("GraphicTrackerMap.SelectGTHIS")]
public sealed class SelectGTHIS : BaseTool
{
#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
///
/// Required method for ArcGIS Component Category registration -
/// Do not modify the contents of this method with the code editor.
///
private static void ArcGISCategoryRegistration(Type registerType)
{
string regKey = string.Format("HKEY_CLASSES_ROOT\\CLSID\\{{{0}}}", registerType.GUID);
ControlsCommands.Register(regKey);
}
///
/// Required method for ArcGIS Component Category unregistration -
/// Do not modify the contents of this method with the code editor.
///
private static void ArcGISCategoryUnregistration(Type registerType)
{
string regKey = string.Format("HKEY_CLASSES_ROOT\\CLSID\\{{{0}}}", registerType.GUID);
ControlsCommands.Unregister(regKey);
}
#endregion
#endregion
private IGraphicTracker LocalTracker = null;
private String tabName = "";
//private GTMapForm m_form = null;
public SelectGTHIS(IGraphicTracker _LocalTracker)
{
LocalTracker = _LocalTracker;
base.m_category = "Graphic Tracker"; //localizable text
base.m_caption = "Select GT"; //localizable text
base.m_message = "Select GT"; //localizable text
base.m_toolTip = "Select graphic"; //localizable text
base.m_name = "GraphicTrackerMap_SelectGT"; //unique id, non-localizable (e.g. "MyCategory_MyTool")
try
{
base.m_bitmap = Dispatcher.Properties.Resources.SelectGT;
byte[] bin = Dispatcher.Properties.Resources.SelectGT1;
using (BinaryWriter binWriter = new BinaryWriter(File.Open(System.Windows.Forms.Application.StartupPath + @"\SelectGT.cur", FileMode.Create)))
{
binWriter.Write(bin);
}
base.m_cursor = new System.Windows.Forms.Cursor(System.Windows.Forms.Application.StartupPath + @"\SelectGT.cur");
}
catch (Exception ex)
{
SM.Debug("Error on create Select:" + ex.ToString());
}
}
#region Overriden Class Methods
public override void OnCreate(object hook)
{
}
public override void OnClick()
{
}
ArrayList PositionList = new ArrayList();
public void UpdateLIST(ArrayList _posList)
{
PositionList = _posList;
}
public override void OnMouseUp(int Button, int Shift, int X, int Y)
{
try
{
int id = LocalTracker.HitTest(X, Y);
if (id != -1)
{
try
{
if (PositionList.Count > 0)
{
Int32 both = 0;
foreach (POSIDGIS obj in PositionList)
{
if (obj.GISID==id)
{
LocalTracker.Highlight(obj.GISID, true);
MainForm2.simpleTextSymbol.YOffset = 30;
LocalTracker.SetTextSymbol(obj.GISID, MainForm2.simpleTextSymbol);
String SpeedDatax = " ;" + MainForm2.langSpeed + " " + Convert.ToString(obj.SMpos.m_speed) + MainForm2.kmh;
if (MainForm2.isInMile) SpeedDatax = " ;" + MainForm2.langSpeed + " " + Convert.ToString((int)Math.Round(obj.SMpos.m_speed * 0.621371192)) + MainForm2.milesh;
LocalTracker.SetLabel(obj.GISID, obj.SMpos.m_vehName + "_" + (obj.SMpos.m_posID-1) + "\n" + SpeedDatax + " " + MainForm2.langTime + " " + (obj.SMpos.m_time.ConvertGMTToLocal()).GetDTFromSeconds().ToShortTimeString() + "\n" + obj.SMpos.m_address);
obj.Select = true;
both++;
}
else if (obj.Select)
{
LocalTracker.Highlight(obj.GISID, false);
LocalTracker.SetLabel(obj.GISID, "");
obj.Select = false;
both++;
}
if (both == 2) break;
}
}
}
catch (Exception ex)
{
SM.Debug("Exception on click select a unit:" + ex.ToString());
}
}
}
catch (Exception ex)
{
SM.Debug("Error on mouse UP:" + ex.ToString());
}
}
#endregion
}
}