SafeDispatch/Safedispatch_4_0/maptab/TelemTabGIS.cs
2024-02-22 18:43:59 +02:00

840 lines
40 KiB
C#

using System;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using Microsoft.Win32;
using System.Resources;
using System.IO;
using Telerik.WinControls.UI;
using Telerik.WinControls;
using Telerik.WinControls.UI.Docking;
using SafeMobileLib;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.EngineCore;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.Carto;
namespace Safedispatch_4_0
{
/// <summary>
/// This class implements the live tab.</summary>
/// <remarks>
/// The live tab contains two areas, left and right. On the left side
/// the vehicle selection is made, and on the right side information
/// is displayed according to the criteria from the left</remarks>
public partial class TelemTabGIS : UserControl
{
/// <summary>
/// The class constructor. </summary>
///
public enum TelemCommands { SET = 0, CLEAR = 1, TOGGLE = 2, PULSE = 3 };
public bool KillTimerActive = false;
private String milesh, kmh;
public Boolean docLoad = false;
private Int32 loadcnt = 0;
public String updatecomand;
public String getADDRcomand;
public String lasttime;
private String selectName = "";
private IMapControl3 m_mapControl = null;
public IGraphicTracker m_graphicTracker = null;
private void setLanguage()
{
langProgStat = MainForm2.returnLNGString("txProgStatLive");
kmh = MainForm2.returnLNGString("kmh");
milesh = MainForm2.returnLNGString("milesh");
toolWindow1.Text = MainForm2.returnLNGString("selectionExpando");
toolWindow2.Text = MainForm2.returnLNGString("tabPage1");
toolWindow3.Text = MainForm2.returnLNGString("tabPage2");
vehiclesList.Columns[2].HeaderText = MainForm2.returnLNGString("htableVehiclesListColumns1");
lasttime = MainForm2.returnLNGString("lbLastTime");
lbStatus1.Text = MainForm2.returnLNGString("SMSStatus");
lbStatus2.Text = MainForm2.returnLNGString("SMSStatus");
lbStatus3.Text = MainForm2.returnLNGString("SMSStatus");
lbStatus4.Text = MainForm2.returnLNGString("SMSStatus");
lbStatus5.Text = MainForm2.returnLNGString("SMSStatus");
btSend1.Text = MainForm2.returnLNGString("send");
btSend2.Text = MainForm2.returnLNGString("send");
btSend3.Text = MainForm2.returnLNGString("send");
btSend4.Text = MainForm2.returnLNGString("send");
btSend5.Text = MainForm2.returnLNGString("send");
}
public TelemTabGIS(MainForm2 parentParam)
{
DateTime FirstTime;
parent = parentParam;
InitializeComponent();
//this.SelectionLive.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(191)))), ((int)(((byte)(219)))), ((int)(((byte)(255)))));
//ThemeResolutionService.ApplyThemeToControlTree(this, "ControlDefault");
FirstTime = DateTime.Now;
// set height for the grid items
this.vehiclesList.TableElement.RowHeight = 45;
this.vehiclesList.GridViewElement.DrawBorder = false;
this.vehiclesList.GridViewElement.GroupPanelElement.DrawBorder = false;
setLanguage();
vehiclesList.TableElement.RowHeight = 32;
populateVehiclesList(vehicleListNames);
//update data
try
{
if (vehiclesList.SelectedRows[0].Cells[2].Value != null)
{
selectName = vehiclesList.SelectedRows[0].Cells[2].Value.ToString();
foreach (TelemetryObj temobj in ((Vehicle)MainForm2.vehicleHT[vehiclesList.SelectedRows[0].Cells[2].Value.ToString()]).telemList)
{
ChangePreview(temobj, (Bitmap)vehiclesList.SelectedRows[0].Cells[temobj.DigitalNr + 2].Value);
}
//if (((Vehicle)MainForm2.vehicleHT[vehiclesList.SelectedRows[0].Cells[2].Value.ToString()]).telemPos != null)
// lbLastUpdate.Text = lasttime + ": " + convDT.GetDTFromSeconds(convDT.ConvertGMTToLocal(((Vehicle)MainForm2.vehicleHT[vehiclesList.SelectedRows[0].Cells[2].Value.ToString()]).telemPos.TimeGMT));
}
else selectName = "";
}
catch (Exception ex)
{
SM.Debug("Unable to change telemetry " + ex.ToString());
}
cbType1.SelectedIndex = 0;
cbType2.SelectedIndex = 0;
cbType3.SelectedIndex = 0;
cbType4.SelectedIndex = 0;
cbType5.SelectedIndex = 0;
SelectionLive.Enabled = true;
GetPositionForPlace = false;
GetPositionForStart = false;
GetPositionForZones = false;
toolWindow1.ToolCaptionButtons = Telerik.WinControls.UI.Docking.ToolStripCaptionButtons.AutoHide | Telerik.WinControls.UI.Docking.ToolStripCaptionButtons.SystemMenu;
toolWindow1.DocumentButtons &= ~Telerik.WinControls.UI.Docking.DocumentStripButtons.Close;
toolWindow1.AllowedDockState = AllowedDockState.Docked | AllowedDockState.AutoHide;
toolWindow2.ToolCaptionButtons = Telerik.WinControls.UI.Docking.ToolStripCaptionButtons.AutoHide | Telerik.WinControls.UI.Docking.ToolStripCaptionButtons.SystemMenu;
toolWindow2.DocumentButtons &= ~Telerik.WinControls.UI.Docking.DocumentStripButtons.Close;
toolWindow3.ToolCaptionButtons = Telerik.WinControls.UI.Docking.ToolStripCaptionButtons.AutoHide | Telerik.WinControls.UI.Docking.ToolStripCaptionButtons.SystemMenu;
toolWindow3.DocumentButtons &= ~Telerik.WinControls.UI.Docking.DocumentStripButtons.Close;
toolWindow3.AllowedDockState = AllowedDockState.Docked | AllowedDockState.AutoHide;
ContextMenuService menuService = this.radDock1.GetService<ContextMenuService>();
menuService.ContextMenuDisplaying += menuService_ContextMenuDisplaying;
try
{
switch (MainForm2.radioType)
{
case RADIOTYPE.HYT:
radSplitContainer1.BackColor = MainForm2.HyteraColor;
radSplitContainer2.BackColor = MainForm2.HyteraColor;
radSplitContainer4.BackColor = MainForm2.HyteraColor;
documentContainer1.BackColor = MainForm2.HyteraColor;
radDock1.BackColor = MainForm2.HyteraColor;
break;
case RADIOTYPE.HARRIS:
radSplitContainer1.BackColor = MainForm2.HarrisColor;
radSplitContainer2.BackColor = MainForm2.HarrisColor;
radSplitContainer4.BackColor = MainForm2.HarrisColor;
documentContainer1.BackColor = MainForm2.HarrisColor;
radDock1.BackColor = MainForm2.HarrisColor;
lbGPIO1.ForeColor = MainForm2.HarTextColor;
lbGPIO2.ForeColor = MainForm2.HarTextColor;
lbGPIO3.ForeColor = MainForm2.HarTextColor;
lbGPIO4.ForeColor = MainForm2.HarTextColor;
lbGPIO5.ForeColor = MainForm2.HarTextColor;
lbStatus1.ForeColor = MainForm2.HarTextColor;
lbStatus2.ForeColor = MainForm2.HarTextColor;
lbStatus3.ForeColor = MainForm2.HarTextColor;
lbStatus4.ForeColor = MainForm2.HarTextColor;
lbStatus5.ForeColor = MainForm2.HarTextColor;
lbName1.ForeColor = MainForm2.HarTextColor;
lbName2.ForeColor = MainForm2.HarTextColor;
lbName3.ForeColor = MainForm2.HarTextColor;
lbName4.ForeColor = MainForm2.HarTextColor;
lbName5.ForeColor = MainForm2.HarTextColor;
//lbLastUpdate.ForeColor = MainForm2.HarTextColor;
break;
case RADIOTYPE.ATLAS:
radSplitContainer1.BackColor = MainForm2.HarrisColor;
radSplitContainer2.BackColor = MainForm2.HarrisColor;
radSplitContainer4.BackColor = MainForm2.HarrisColor;
documentContainer1.BackColor = MainForm2.HarrisColor;
radDock1.BackColor = MainForm2.HarrisColor;
lbGPIO1.ForeColor = MainForm2.HarTextColor;
lbGPIO2.ForeColor = MainForm2.HarTextColor;
lbGPIO3.ForeColor = MainForm2.HarTextColor;
lbGPIO4.ForeColor = MainForm2.HarTextColor;
lbGPIO5.ForeColor = MainForm2.HarTextColor;
lbStatus1.ForeColor = MainForm2.HarTextColor;
lbStatus2.ForeColor = MainForm2.HarTextColor;
lbStatus3.ForeColor = MainForm2.HarTextColor;
lbStatus4.ForeColor = MainForm2.HarTextColor;
lbStatus5.ForeColor = MainForm2.HarTextColor;
lbName1.ForeColor = MainForm2.HarTextColor;
lbName2.ForeColor = MainForm2.HarTextColor;
lbName3.ForeColor = MainForm2.HarTextColor;
lbName4.ForeColor = MainForm2.HarTextColor;
lbName5.ForeColor = MainForm2.HarTextColor;
//lbLastUpdate.ForeColor = MainForm2.HarTextColor;
break;
case RADIOTYPE.SIMOCO:
case RADIOTYPE.EXCERA:
//we don't need
break;
}
}
catch (Exception ex)
{
SM.Debug("Error on change color constructor:" + ex.ToString());
}
}
private void menuService_ContextMenuDisplaying(object sender, ContextMenuDisplayingEventArgs e)
{
if (e.MenuType == ContextMenuType.DockWindow &&
e.DockWindow.DockTabStrip is DocumentTabStrip)
{
for (int i = 0; i < e.MenuItems.Count; i++)
{
RadMenuItemBase menuItem = e.MenuItems[i];
if (menuItem.Name == "CloseWindow" ||
menuItem.Name == "CloseAllButThis" ||
menuItem.Name == "CloseAll" ||
menuItem.Name == "Floating" ||
menuItem.Name == "Docked" ||
menuItem.Name == "Hidden" ||
menuItem is RadMenuSeparatorItem)
{
menuItem.Visibility = Telerik.WinControls.ElementVisibility.Collapsed;
}
}
}
}
/// <summary>
///populates the list of vehicles from the left part of the tab </summary>
/// <param name="listOfVehicles">an array of strings containing the vehicles names</param>
public volatile List<DataforTelemList> ListforTelemList = new List<DataforTelemList>();
volatile String GroupNameforgrid = "";
volatile Image Imageforgrid = null;
volatile String Statusforgrid = "";
volatile List<Image> ListImg = new List<Image>();
private void populateVehiclesList(ArrayList listOfVehicles)
{
vehiclesList.Columns[2].SortOrder = RadSortOrder.None;
int cont = 0;
ListforTelemList.Clear();
foreach (String obj in MainForm2.vehicleHT.Keys)
{
GroupNameforgrid = MainForm2.returnLNGString("otherunit");
if (MainForm2.GrpIdforScId[((Vehicle)MainForm2.vehicleHT[obj]).sc_id] != null)
GroupNameforgrid = ((GroupClass)MainForm2.GrpIdforScId[((Vehicle)MainForm2.vehicleHT[obj]).sc_id]).name;
Car crtCar = ((Car)MainForm2.carlist[((Vehicle)MainForm2.vehicleHT[obj]).IconID]);
String iconPath = crtCar.listFilePath;
try
{
Bitmap bmp = new Bitmap(iconPath);
Image tmp2 = bmp; //tmp.ToBitmap();
Imageforgrid = tmp2;
}
catch (Exception ex)
{
SM.Debug("Grid icon could not be found [" + iconPath + "]");
Imageforgrid = imageList1.Images[2];
}
ListImg.Clear();
for (int i = 0; i < 5; i++)
ListImg.Add(global::Dispatcher.Properties.Resources.te_in_d);
if ((((Vehicle)MainForm2.vehicleHT[obj]).telemList.Count != 0))
{
foreach (TelemetryObj temobj in ((Vehicle)MainForm2.vehicleHT[obj]).telemList)
{
// set icon for no valid info in case of a out pin
if (!temobj.DigitalType.Equals("IN"))
ListImg[temobj.DigitalNr - 1] = global::Dispatcher.Properties.Resources.te_out_d;
Byte digit = (Byte)Math.Pow(2, temobj.DigitalNr - 1);
// if old value exists for this unit
if ((((Vehicle)MainForm2.vehicleHT[obj]).telemPos != null))
{
// if the pin value is on
if ((((Byte)((Vehicle)MainForm2.vehicleHT[obj]).telemPos.ByteValue) & digit) > 0)
{
// set icon for in pin
ListImg[temobj.DigitalNr - 1] = global::Dispatcher.Properties.Resources.te_in_g;
// set icon for out pin
if (!temobj.DigitalType.Equals("IN"))
ListImg[temobj.DigitalNr - 1] = global::Dispatcher.Properties.Resources.te_out_g;//vehiclesList.Rows[cont].Cells[temobj.DigitalNr + 2].Value = global::Dispatcher.Properties.Resources.green_status;
}
// if pin vlaue is off
else
{
// set icon for in pin
ListImg[temobj.DigitalNr - 1] = global::Dispatcher.Properties.Resources.te_in_r;
// set icon for out pin
if (!temobj.DigitalType.Equals("IN"))
ListImg[temobj.DigitalNr - 1] = global::Dispatcher.Properties.Resources.te_out_r;
}
}
}
}
cont++;
ListforTelemList.Add(new DataforTelemList(GroupNameforgrid, Imageforgrid, obj, ListImg[0], ListImg[1], ListImg[2], ListImg[3], ListImg[4]));
}
try
{
vehiclesList.DataSource = null;
vehiclesList.DataSource = ListforTelemList;
}
catch (Exception ex)
{
SM.Debug("Error on populate grid" + ex.ToString());
}
vehiclesList.Columns[2].SortOrder = RadSortOrder.Ascending;
//grouping stuff
vehiclesList.GroupDescriptors.Clear();
GridGroupByExpression expression = new GridGroupByExpression();
expression.Expression = "GroupName as GroupName format \"{0}: {1}\" Group By GroupName";
vehiclesList.GroupDescriptors.Add(expression);
// vehiclesList.MasterGridViewTemplate.GroupDescriptors.Insert(0, new Telerik.WinControls.Data.GroupDescriptor("GroupName as GroupName format \"{0}: {1}\" Group By GroupName"));
GridExpandAnimationType temp = vehiclesList.GroupExpandAnimationType;
vehiclesList.GroupExpandAnimationType = GridExpandAnimationType.None;
for (int i = 0; i < vehiclesList.Groups.Count; i++)
this.Expand(vehiclesList.Groups[i]);
vehiclesList.GroupExpandAnimationType = temp;
//if (vehiclesList.RowCount > 0)
// vehiclesList.Rows[0].IsSelected = true;
//vehiclesList.Refresh();
}
private void ChangePreview(TelemetryObj temobj, Bitmap tmpImg)
{
switch (temobj.DigitalNr)
{
case 1:
lbName1.Text = temobj.Name;
panStat1.BackgroundImage = tmpImg;
if (temobj.DigitalType == "IN")
{
btSend1.Visible = false;
cbType1.Visible = false;
}
else
{
btSend1.Enabled = true;
cbType1.Enabled = true;
}
break;
case 2:
lbName2.Text = temobj.Name;
panStat2.BackgroundImage = tmpImg;
if (temobj.DigitalType == "IN")
{
btSend2.Visible = false;
cbType2.Visible = false;
}
else
{
btSend2.Enabled = true;
cbType2.Enabled = true;
}
break;
case 3:
lbName3.Text = temobj.Name;
panStat3.BackgroundImage = tmpImg;
if (temobj.DigitalType == "IN")
{
btSend3.Visible = false;
cbType3.Visible = false;
}
else
{
btSend3.Enabled = true;
cbType3.Enabled = true;
}
break;
case 4:
lbName4.Text = temobj.Name;
panStat4.BackgroundImage = tmpImg;
if (temobj.DigitalType == "IN")
{
btSend4.Visible = false;
cbType4.Visible = false;
}
else
{
btSend4.Enabled = true;
cbType4.Enabled = true;
}
break;
case 5:
lbName5.Text = temobj.Name;
panStat5.BackgroundImage = tmpImg;
if (temobj.DigitalType == "IN")
{
btSend5.Visible = false;
cbType5.Visible = false;
}
else
{
btSend5.Enabled = true;
cbType5.Enabled = true;
}
break;
}
}
public void updateName(String Name)
{
Boolean change = false;
try
{
foreach (GridViewRowInfo obj in vehiclesList.Rows)
{
if (obj.Cells[2].Value.ToString() == Name)
{
if ((((Vehicle)MainForm2.vehicleHT[Name]).telemList.Count != 0) && (((Vehicle)MainForm2.vehicleHT[Name]).telemPos != null))
{
foreach (TelemetryObj temobj in ((Vehicle)MainForm2.vehicleHT[Name]).telemList)
{
Byte digit = (Byte)Math.Pow(2, temobj.DigitalNr - 1);
Bitmap tmpImg = global::Dispatcher.Properties.Resources.red_status;
if ((((Byte)((Vehicle)MainForm2.vehicleHT[Name]).telemPos.ByteValue) & digit) > 0) tmpImg = global::Dispatcher.Properties.Resources.green_status;
obj.Cells[temobj.DigitalNr + 2].Value = tmpImg;
change = true;
if (selectName == Name)
{
ChangePreview(temobj, tmpImg);
//lbLastUpdate.Text = lasttime + ": " + convDT.GetDTFromSeconds(convDT.ConvertGMTToLocal(((Vehicle)MainForm2.vehicleHT[Name]).telemPos.TimeGMT));
}
}
}
break;
}
}
if (change) vehiclesList.Refresh();
}
catch (Exception ex)
{
SM.Debug("Erorr on UpdateName:" + ex.ToString());
}
}
private void Expand(DataGroup group)
{
group.Expand();
if (group.Groups.Count > 0)
{
for (int i = 0; i < group.Groups.Count; i++)
{
this.Expand(group.Groups[i]);
}
}
}
private void Killtimer_Tick(object sender, EventArgs e)
{
if (MainForm2.ClosingApp)
{
SM.Debug("Worker Live:Telem FINISHED from timer");
SM.Debug("RELEASE SEMAFOR TAB LIVE: Telem");
KillTimerActive = true;
}
}
void SendTelem_Click(object sender, EventArgs e)
{
foreach(TelemetryObj obj in ((Vehicle)MainForm2.vehicleHT[(String)vehiclesList.SelectedRows[0].Cells[2].Value]).telemList)
if (obj.Name == ((RadMenuItem)sender).Text)
{
String Totrans = "#106#"+((Vehicle)MainForm2.vehicleHT[(String)vehiclesList.SelectedRows[0].Cells[2].Value]).sc_id+"#"+ obj.DigitalNr+"#";
parent.Send_UDP_cmd(Totrans, 10000,0);
break;
}
}
Int32 Idgen = -1;
private void vehiclesList_SelectionChanged(object sender, EventArgs e)
{
IGraphicTrackerSymbol tmpSYMB = null;
if (vehiclesList.SelectedRows.Count > 0)
{
lbName1.Text = "Unknown1";
lbName2.Text = "Unknown2";
lbName3.Text = "Unknown3";
lbName4.Text = "Unknown4";
lbName5.Text = "Unknown5";
panStat1.BackgroundImage = global::Dispatcher.Properties.Resources.grey_status;
panStat2.BackgroundImage = global::Dispatcher.Properties.Resources.grey_status;
panStat3.BackgroundImage = global::Dispatcher.Properties.Resources.grey_status;
panStat4.BackgroundImage = global::Dispatcher.Properties.Resources.grey_status;
panStat5.BackgroundImage = global::Dispatcher.Properties.Resources.grey_status;
/* panStat1.BackgroundImage = global::Dispatcher.Properties.Resources.red_status;
panStat2.BackgroundImage = global::Dispatcher.Properties.Resources.red_status;
panStat3.BackgroundImage = global::Dispatcher.Properties.Resources.red_status;
panStat4.BackgroundImage = global::Dispatcher.Properties.Resources.red_status;
panStat5.BackgroundImage = global::Dispatcher.Properties.Resources.red_status;*/
btSend1.Visible = true; cbType1.Visible = true;
btSend2.Visible = true; cbType2.Visible = true;
btSend3.Visible = true; cbType3.Visible = true;
btSend4.Visible = true; cbType4.Visible = true;
btSend5.Visible = true; cbType5.Visible = true;
btSend1.Enabled = false; cbType1.Enabled = false;
btSend2.Enabled = false; cbType2.Enabled = false;
btSend3.Enabled = false; cbType3.Enabled = false;
btSend4.Enabled = false; cbType4.Enabled = false;
btSend5.Enabled = false; cbType5.Enabled = false;
try
{
if (vehiclesList.SelectedRows[0].Cells[2].Value != null)
{
selectName = vehiclesList.SelectedRows[0].Cells[2].Value.ToString();
foreach (TelemetryObj temobj in ((Vehicle)MainForm2.vehicleHT[vehiclesList.SelectedRows[0].Cells[2].Value.ToString()]).telemList)
ChangePreview(temobj, (Bitmap)vehiclesList.SelectedRows[0].Cells[temobj.DigitalNr + 2].Value);
//if (((Vehicle)MainForm2.vehicleHT[vehiclesList.SelectedRows[0].Cells[2].Value.ToString()]).telemPos != null)
// lbLastUpdate.Text = lasttime + ": " + convDT.GetDTFromSeconds(convDT.ConvertGMTToLocal(((Vehicle)MainForm2.vehicleHT[vehiclesList.SelectedRows[0].Cells[2].Value.ToString()]).telemPos.TimeGMT));
}
else selectName = "";
}
catch (Exception ex)
{
SM.Debug("Unable to change telemetry "+ex.ToString());
}
if (vehiclesList.SelectedRows[0].Cells[2].Value != null)
{
if (loadfinish)
{
if (MainForm2.carlist[((Vehicle)MainForm2.vehicleHT[vehiclesList.SelectedRows[0].Cells[2].Value.ToString()]).IconID] != null)
tmpSYMB = m_graphicTracker.CreateSymbol(((Car)MainForm2.carlist[((Vehicle)MainForm2.vehicleHT[vehiclesList.SelectedRows[0].Cells[2].Value.ToString()]).IconID]).GISsymb as ISymbol, null);
IPoint point = new ESRI.ArcGIS.Geometry.Point();
point.X = ((Vehicle)MainForm2.vehicleHT[vehiclesList.SelectedRows[0].Cells[2].Value.ToString()]).LNG;
point.Y = ((Vehicle)MainForm2.vehicleHT[vehiclesList.SelectedRows[0].Cells[2].Value.ToString()]).LAT;
point.SpatialReference = MainForm2.CreateGeoCoordSys();
if (Idgen == -1)
Idgen = m_graphicTracker.Add(point as IGeometry, tmpSYMB);
else
{
m_graphicTracker.SuspendUpdate = true;
m_graphicTracker.SetGeometry(Idgen, point as IGeometry);
m_graphicTracker.SetSymbol(Idgen, tmpSYMB);
m_graphicTracker.SuspendUpdate =false;
}
MainForm2.simpleTextSymbol.YOffset = 35;
m_graphicTracker.SuspendUpdate = true;
m_graphicTracker.SetTextSymbol(Idgen, MainForm2.simpleTextSymbol);
m_graphicTracker.SetLabel(Idgen, vehiclesList.SelectedRows[0].Cells[2].Value.ToString() + "\n " + MainForm2.langSpeed + " " + Convert.ToString(((Vehicle)MainForm2.vehicleHT[vehiclesList.SelectedRows[0].Cells[2].Value.ToString()]).GetSpeed()) + MainForm2.Measure + " " + MainForm2.langTime + " " + ((Vehicle)MainForm2.vehicleHT[vehiclesList.SelectedRows[0].Cells[2].Value.ToString()]).lastActivityTime.TimeOfDayHHMMLocal() + " \n " + ((Vehicle)MainForm2.vehicleHT[vehiclesList.SelectedRows[0].Cells[2].Value.ToString()]).lastAddress + " ");
m_graphicTracker.SuspendUpdate = false;
//mapControl.Extent = MainForm2.ZoomTo(((Vehicle)MainForm2.vehicleHT[vehiclesList.SelectedRows[0].Cells[2].Value.ToString()]).LNG - 0.01, ((Vehicle)MainForm2.vehicleHT[vehiclesList.SelectedRows[0].Cells[2].Value.ToString()]).LAT - 0.01, ((Vehicle)MainForm2.vehicleHT[vehiclesList.SelectedRows[0].Cells[2].Value.ToString()]).LNG + 0.01, ((Vehicle)MainForm2.vehicleHT[vehiclesList.SelectedRows[0].Cells[2].Value.ToString()]).LAT + 0.01);
mapControl.Extent = MainForm2.ZoomTo(((Vehicle)MainForm2.vehicleHT[vehiclesList.SelectedRows[0].Cells[2].Value.ToString()]).LNG, ((Vehicle)MainForm2.vehicleHT[vehiclesList.SelectedRows[0].Cells[2].Value.ToString()]).LAT, ((Vehicle)MainForm2.vehicleHT[vehiclesList.SelectedRows[0].Cells[2].Value.ToString()]).LNG, ((Vehicle)MainForm2.vehicleHT[vehiclesList.SelectedRows[0].Cells[2].Value.ToString()]).LAT);
}
}
}
else
{
/*Recordset rs = telemDataSet.QueryAllRecords();
rs.MoveFirst();
if (!rs.EOF)
{
pp = rs.Pushpin;
pp.Delete();
} */
}
}
Boolean loadfinish = false;
private void btRefresh_Click(object sender, EventArgs e)
{
if (selectName != "") parent.Send_telem_digit(selectName, 10, 0);
}
private void vehiclesList_GroupSummaryEvaluate(object sender, GroupSummaryEvaluationEventArgs e)
{
try
{
string suff = String.Concat(" (", e.Group.ItemCount.ToString(), ")");
if (e.FormatString.Contains(":"))
{
//e.FormatString = e.FormatString.Replace("GroupName:", "");
e.FormatString = e.FormatString.Replace("{0}:", "");
}
if (!e.FormatString.EndsWith(suff))
{
e.FormatString = String.Concat(e.FormatString, suff);
}
}
catch (Exception ex)
{
SM.Debug("Erorr on GroupSummaryEvaluate"+ex.ToString());
}
}
private void TelemTabGIS_Load(object sender, EventArgs e)
{
//Load a pre-authored map document into the PageLayoutControl using relative paths.
//string fileName = @"E:\Cape Girardeau\GIS data\workspace.mxd";
if (mapControl.CheckMxFile(MainForm2.ArcGisFileName)) mapControl.LoadMxFile(MainForm2.ArcGisFileName);
mapControl.SpatialReference = MainForm2.CreateGeoCoordSys();
//Get the MapControl
m_mapControl = (IMapControl3)mapControl.Object;
m_graphicTracker = new GraphicTrackerClass();
m_graphicTracker.Initialize(m_mapControl.Map as IBasicMap);
loadfinish = true;
}
private void ResizeWorker_DoWork(object sender, DoWorkEventArgs e)
{
Thread.Sleep(700);
}
private void ResizeWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
try
{
if (((toolWindow2.Size.Width > 25) && (toolWindow2.Size.Height > 25)) || ((mapControl.Size.Width > 25) && (mapControl.Size.Height > 25)))
{
vehiclesList.Size = new Size(vehiclesList.Size.Width, splitPanel1.Size.Height);
vehiclesList.Refresh();
if (toolWindow1.DockState == DockState.Docked)
{
toolWindow1.AutoHide();
toolWindow1.DockState = DockState.Docked;
}
}
}
catch (Exception ex)
{
SM.Debug("Error on resize" + ex.ToString());
}
}
private void radDock1_Resize(object sender, EventArgs e)
{
try
{
ResizeWorker.RunWorkerAsync();
}
catch (Exception ex)
{
SM.Debug("Unable to start resize thread" + ex.ToString());
}
}
private void vehiclesList_ViewCellFormatting(object sender, CellFormattingEventArgs e)
{
if ((MainForm2.radioType == RADIOTYPE.HARRIS)||(MainForm2.radioType == RADIOTYPE.ATLAS))
{
if (e.CellElement is GridGroupContentCellElement)
{
e.CellElement.ForeColor = MainForm2.HarTextColor;
}
else
{
e.CellElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local);
}
}
}
private void vehiclesList_CellFormatting(object sender, CellFormattingEventArgs e)
{
GridCellElement cellElement = e.CellElement;
GridViewDataColumn columnInfo = e.CellElement.ColumnInfo as GridViewDataColumn;
if (cellElement != null)
cellElement.DrawBorder = false;
if (columnInfo.Name.StartsWith("Digi"))
{
string unitName = e.Row.Cells[2].Value.ToString();
foreach (TelemetryObj temobj in ((Vehicle)MainForm2.vehicleHT[unitName]).telemList)
{
/*
if (("Digi" + temobj.DigitalNr).Equals(columnInfo.Name) && !temobj.DigitalType.Equals("IN"))
{
cellElement.DrawFill = true;
cellElement.NumberOfColors = 1;
cellElement.BackColor = Color.Thistle;
}*/
}
}
}
private void vehiclesList_ContextMenuOpening(object sender, ContextMenuOpeningEventArgs e)
{
GridDataCellElement cell = e.ContextMenuProvider as GridDataCellElement;
if (cell == null)
{
return;
}
try
{
if (e.ContextMenuProvider is GridDataCellElement)
{
GridViewRowInfo row = ((GridDataCellElement)e.ContextMenuProvider).RowInfo;
// create the drop down menu
RadDropDownMenu TelemMenu = new RadDropDownMenu();
try
{
if (vehiclesList.SelectedRows[0].Cells[2].Value != null)
{
selectName = vehiclesList.SelectedRows[0].Cells[2].Value.ToString();
foreach (TelemetryObj temobj in ((Vehicle)MainForm2.vehicleHT[vehiclesList.SelectedRows[0].Cells[2].Value.ToString()]).telemList)
{
if (temobj.DigitalNr == cell.ColumnIndex - 2)
{
TelemMenu.Text = "Pin " + temobj.DigitalNr + " options";
if (temobj.DigitalType != "IN")
{
// create context menu button
RadMenuItem itemSet = new RadMenuItem(MainForm2.returnLNGString("telemSet"));
// add click listener for the context menu button
itemSet.Click += delegate(object s, EventArgs ev)
{
// send SET command
parent.Send_telem_digit(selectName, temobj.DigitalNr, (int)TelemCommands.SET);
TelemMenu.ClosePopup(RadPopupCloseReason.Mouse);
};
// add button to context menu
TelemMenu.Items.Add(itemSet);
// create context menu button
RadMenuItem itemClear = new RadMenuItem(MainForm2.returnLNGString("telemClear"));
// add click listener for the context menu button
itemClear.Click += delegate(object s, EventArgs ev)
{
// send CLEAR command
parent.Send_telem_digit(selectName, temobj.DigitalNr, (int)TelemCommands.CLEAR);
TelemMenu.ClosePopup(RadPopupCloseReason.Mouse);
};
// add button to context menu
TelemMenu.Items.Add(itemClear);
// create context menu button
RadMenuItem itemToggle = new RadMenuItem(MainForm2.returnLNGString("telemToggle"));
// add click listener for the context menu button
itemToggle.Click += delegate(object s, EventArgs ev)
{
// send TOGGLE command
parent.Send_telem_digit(selectName, temobj.DigitalNr, (int)TelemCommands.TOGGLE);
TelemMenu.ClosePopup(RadPopupCloseReason.Mouse);
};
// add button to context menu
TelemMenu.Items.Add(itemToggle);
// create context menu button
RadMenuItem itemPulse = new RadMenuItem(MainForm2.returnLNGString("telemPulse"));
// add click listener for the context menu button
itemPulse.Click += delegate(object s, EventArgs ev)
{
// send PULSE command
parent.Send_telem_digit(selectName, temobj.DigitalNr, (int)TelemCommands.PULSE);
TelemMenu.ClosePopup(RadPopupCloseReason.Mouse);
};
// add button to context menu
TelemMenu.Items.Add(itemPulse);
}
}
}
}
}
catch (Exception ex)
{
SM.Debug("Unable to change telemetry " + ex.ToString());
}
// create context menu button
RadMenuItem itemRefresh = new RadMenuItem(MainForm2.returnLNGString("refreshAll"));
// add click listener for the context menu button
itemRefresh.Click += delegate(object s, EventArgs ev)
{
// send the refresh command
if (selectName != "")
parent.Send_telem_digit(selectName, 10, 0);
TelemMenu.ClosePopup(RadPopupCloseReason.Mouse);
};
// add button to context menu
TelemMenu.Items.Add(itemRefresh);
e.ContextMenu = TelemMenu;
}
}
catch (Exception ex)
{
SM.Debug("EXLive10:" + ex.ToString());
}
}
/// <summary>
/// Format the cell in order to remove the indent of the cells
/// </summary>
private void vehiclesList_CreateCell(object sender, GridViewCreateCellEventArgs e)
{
// format live column
if (e.Row is GridDataRowElement)
{
// increase row height
//e.Row.RowInfo.Height = 53;
if (e.Column is GridViewIndentColumn)
{
e.Column.IsVisible = false;
/*
e.Column.MaxWidth = 7;
e.Column.MinWidth = 7;
e.Column.Width = 7;*/
//e.CellElement.Visibility = ElementVisibility.Hidden;
}
}
}
}
}