123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507 |
-
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using Tofly.CoreUI.Plot;
- using Tofly.Core.Stereotype;
- using Tofly.Core.Context;
- using Tofly.Core.Context.Support;
- using Tofly.CoreUI.Control;
- using Tofly.GISUI.Controls;
- using System.Data;
- using Tofly.GIS.Carto;
- using Tofly.CoreUI.Message;
- using Tofly.GIS;
- using Tofly.Core.ServiceLocator;
- using Tofly.DataEditUI;
- using Tofly.DataEdit.Paramter;
- using Tofly.Data.General;
- using Tofly.DataEdit;
- using Tofly.GISUI.Draw;
- using Tofly.DataEditUI.Paramter;
- namespace Tofly.DataEditUI
- {
-
-
-
- [PluginComponentAttribute((long)Core.SysRegist.ModuleKey.Edit, PluginGISType.ArcGIS, GroupName = "编辑", Caption = "编辑设置", Describe = "编辑设置", IsCreate = true, States = Tofly.CoreUI.Control.Status.STATE_EDIT)]
- [Tofly.Core.Stereotype.Component(IsSingleton = "false", Name = "Tofly.DataEditUI.EditParamterSetCommand")]
- public class EditParamterSetCommand : PluginButtonBase
- {
- private IEditParamterSetForm pEditParamterSetForm;
- private IApplicationContext appContext;
- private Dictionary<int, string> keyCodeString = new Dictionary<int, string>();
- private IActiveView pActiveView;
- private List<NodeRelLayerInfo> pNodeRelLayerInfos;
- private Dictionary<int, NodeRelLayerInfo> editLayers = new Dictionary<int, NodeRelLayerInfo>();
- private int tbXYIN = 0;
- private int tbUNDO = 0;
- private int tbSELADD = 0;
- private int tbSELSUBTRACT = 0;
- private int tbMOVE = 0;
- private int tbCLEAR = 0;
- private int tbREDO = 0;
- private int tbFINISH = 0;
- private int tbTURN = 0;
- private int tbSNAP = 0;
- public override void Create(IPluginContent content)
- {
- base.Create(content);
- appContext = ContextRegistry.GetContext();
- content.ServiceLocator.ServiceValueChange += new Core.ServiceLocator.ServiceValueChangeHander(ServiceLocator_ServiceValueChange);
- }
- void ServiceLocator_ServiceValueChange(string key, object value)
- {
- if (key.Equals(ServiceLocatorKeys.IsMapEdit))
- {
-
- if (!this.Enable)
- this.Enable = true;
- }
- }
- public override void Click()
- {
- InitKeyCode();
- InitEditParamter();
- if (pEditParamterSetForm != null)
- pEditParamterSetForm.ShowDialog();
- }
- private void InitEditParamter()
- {
- if (pEditParamterSetForm == null)
- {
- pEditParamterSetForm = appContext.GetObject("IEditParamterSetForm") as IEditParamterSetForm;
- if (pEditParamterSetForm == null) return;
- pEditParamterSetForm.LoadEvent += new CoreUI.Control.EventHandler(pEditParamterSetForm_LoadEvent);
- pEditParamterSetForm.btnOK.ClickEvent += new CoreUI.Control.EventHandler(btnOK_ClickEvent);
- pEditParamterSetForm.tbCLEAR.KeyDownEvent += new KeyEventHandler(tbCLEAR_KeyDownEvent);
- pEditParamterSetForm.tbFINISH.KeyDownEvent += new KeyEventHandler(tbFINISH_KeyDownEvent);
- pEditParamterSetForm.tbMOVE.KeyDownEvent += new KeyEventHandler(tbMOVE_KeyDownEvent);
- pEditParamterSetForm.tbREDO.KeyDownEvent += new KeyEventHandler(tbREDO_KeyDownEvent);
- pEditParamterSetForm.tbSELADD.KeyDownEvent += new KeyEventHandler(tbSELADD_KeyDownEvent);
- pEditParamterSetForm.tbSELSUBTRACT.KeyDownEvent += new KeyEventHandler(tbSELSUBTRACT_KeyDownEvent);
- pEditParamterSetForm.tbSNAP.KeyDownEvent += new KeyEventHandler(tbSNAP_KeyDownEvent);
- pEditParamterSetForm.tbTURN.KeyDownEvent += new KeyEventHandler(tbTURN_KeyDownEvent);
- pEditParamterSetForm.tbUNDO.KeyDownEvent += new KeyEventHandler(tbUNDO_KeyDownEvent);
- pEditParamterSetForm.tbXYIN.KeyDownEvent += new KeyEventHandler(tbXYIN_KeyDownEvent);
- pEditParamterSetForm.rgSELFEATURE.SelectedIndexChangedEvent += new DataListSelectChanged(rgSELFEATURE_SelectedIndexChangedEvent);
- pEditParamterSetForm.rgSELLAYER.SelectedIndexChangedEvent += new DataListSelectChanged(rgSELLAYER_SelectedIndexChangedEvent);
- }
- }
- #region 窗体事件
- void pEditParamterSetForm_LoadEvent(object sender)
- {
- IQueryFilter pQF = new QueryFilter();
- EditParamterRow row = EditParamterTable.editParamterTable.GetEntity<EditParamterRow>(pQF);
- if (row == null)
- {
- row = EditParamter.GetDefulatRow();
- EditParamterTable.editParamterTable.Delete(pQF);
- EditParamterTable.editParamterTable.Save(row);
- EditParamter.Init();
- }
- if (row.ONLYSELLAYER)
- pEditParamterSetForm.rgSELLAYER.SelectedIndex = 0;
- else
- pEditParamterSetForm.rgSELLAYER.SelectedIndex = 1;
- if (row.ONLYSELFEATURE)
- pEditParamterSetForm.rgSELFEATURE.SelectedIndex = 0;
- else
- pEditParamterSetForm.rgSELFEATURE.SelectedIndex = 1;
- pEditParamterSetForm.intSEARCHTOL.Value = row.SEARCHTOL;
- pEditParamterSetForm.intSNAPTOL.Value = row.SNAPTOL;
- pEditParamterSetForm.intLINKLONG.Value = row.LINELINK;
- pEditParamterSetForm.doubleLINEBUFFER.Value = row.LINEBUFFER;
- pEditParamterSetForm.doubleWEED.Value = row.WEED;
- pEditParamterSetForm.cbBUFFERTYPE.SelectedIndex = row.LINEBUFFERTYPE;
- tbCLEAR = GetIntFromStr(row.CLEAR);
- pEditParamterSetForm.tbCLEAR.Text = keyCodeString[GetIntFromStr(row.CLEAR)].ToString();
- pEditParamterSetForm.tbELEMENTNAME.Text = row.ELEMENTNAME;
- tbFINISH = GetIntFromStr(row.FINISH);
- pEditParamterSetForm.tbFINISH.Text = keyCodeString[GetIntFromStr(row.FINISH)].ToString();
- tbMOVE = GetIntFromStr(row.MOVE);
- pEditParamterSetForm.tbMOVE.Text = keyCodeString[GetIntFromStr(row.MOVE)].ToString();
- tbREDO = GetIntFromStr(row.REDO);
- pEditParamterSetForm.tbREDO.Text = keyCodeString[GetIntFromStr(row.REDO)].ToString();
- tbSELADD = GetIntFromStr(row.SELADD);
- pEditParamterSetForm.tbSELADD.Text = keyCodeString[GetIntFromStr(row.SELADD)].ToString();
- tbSELSUBTRACT = GetIntFromStr(row.SELSUBTRACT);
- pEditParamterSetForm.tbSELSUBTRACT.Text = keyCodeString[GetIntFromStr(row.SELSUBTRACT)].ToString();
- tbSNAP = GetIntFromStr(row.SNAP);
- pEditParamterSetForm.tbSNAP.Text = keyCodeString[GetIntFromStr(row.SNAP)].ToString();
- tbTURN = GetIntFromStr(row.TURN);
- pEditParamterSetForm.tbTURN.Text = keyCodeString[GetIntFromStr(row.TURN)].ToString();
- tbUNDO = GetIntFromStr(row.UNDO);
- pEditParamterSetForm.tbUNDO.Text = keyCodeString[GetIntFromStr(row.UNDO)].ToString();
- tbXYIN = GetIntFromStr(row.XYIN);
- pEditParamterSetForm.tbXYIN.Text = keyCodeString[GetIntFromStr(row.XYIN)].ToString();
- DataTable bufferTable = new DataTable();
- bufferTable.Columns.Add("BufferType", typeof(string));
- DataRow dr1 = bufferTable.NewRow();
- dr1["BufferType"] = "圆头缓冲";
- bufferTable.Rows.Add(dr1);
- DataRow dr2 = bufferTable.NewRow();
- dr2["BufferType"] = "平头缓冲";
- bufferTable.Rows.Add(dr2);
- DataRow dr3 = bufferTable.NewRow();
- dr3["BufferType"] = "正方缓冲";
- bufferTable.Rows.Add(dr3);
- pEditParamterSetForm.cbBUFFERTYPE.DisplayFieldName = "BufferType";
- pEditParamterSetForm.cbBUFFERTYPE.CodeFieldName = "BufferType";
- pEditParamterSetForm.cbBUFFERTYPE.DataSource = bufferTable;
- pEditParamterSetForm.cbBUFFERTYPE.SelectedIndex = row.LINEBUFFERTYPE - 1;
- IMapControl pMapControl = this.content.ServiceLocator.GetInstance<IControl>(ServiceLocatorKeys.MapControl) as IMapControl;
- if (pMapControl != null)
- pActiveView = pMapControl.ActiveView;
- if (pActiveView != null)
- {
- IList<IFeatureLayer> pFeatureLayers = pActiveView.FocusMap.GetFeatureLayersByMap();
- if (pFeatureLayers == null || pFeatureLayers.Count < 1)
- return;
- pNodeRelLayerInfos = this.content.ServiceLocator.GetInstance<List<NodeRelLayerInfo>>(ServiceLocatorKeys.RelNoteLayers) as List<NodeRelLayerInfo>;
- if (pNodeRelLayerInfos == null)
- pNodeRelLayerInfos = new List<NodeRelLayerInfo>();
- bool beHave = false;
- foreach (IFeatureLayer pLayer in pFeatureLayers)
- {
- foreach (NodeRelLayerInfo pNodeRelLayerInfo in pNodeRelLayerInfos)
- {
- if (pNodeRelLayerInfo.Featurelayer.DataLayerSourceName.Equals(pLayer.DataLayerSourceName))
- {
- beHave = true;
- break;
- }
- }
- if (!beHave)
- {
- NodeRelLayerInfo addNodeRelLayerInfo = new NodeRelLayerInfo(pLayer.Name, false, pLayer);
- pNodeRelLayerInfos.Add(addNodeRelLayerInfo);
- }
- beHave = false;
- }
-
- DataTable relDataTable = new DataTable();
- relDataTable.Columns.Add("序号", typeof(Int32));
- relDataTable.Columns.Add("图层名", typeof(string));
- relDataTable.Columns.Add("是否联动", typeof(bool));
- int i = 1;
- editLayers.Clear();
- foreach (NodeRelLayerInfo pNodeRelLayerInfo in pNodeRelLayerInfos)
- {
- DataRow dr = relDataTable.NewRow();
- dr["序号"] = i;
- dr["图层名"] = pNodeRelLayerInfo.Name;
- dr["是否联动"] = pNodeRelLayerInfo.RelNode;
- relDataTable.Rows.Add(dr);
- editLayers.Add(i, pNodeRelLayerInfo);
- i++;
- }
- pEditParamterSetForm.RelLayerGridControl.AllowColumnResizing = true;
- pEditParamterSetForm.RelLayerGridControl.DataSource = relDataTable;
- pEditParamterSetForm.RelLayerGridControl.SetColumnVisible("序号", false);
- }
- }
- void tbXYIN_KeyDownEvent(object sender, KeyEventArgs args)
- {
- if (!keyCodeString.ContainsKey(args.KeyCode))
- return;
- pEditParamterSetForm.tbXYIN.Text = keyCodeString[args.KeyCode];
- tbXYIN = args.KeyCode;
- }
- void tbUNDO_KeyDownEvent(object sender, KeyEventArgs args)
- {
- if (!keyCodeString.ContainsKey(args.KeyCode))
- return;
- pEditParamterSetForm.tbUNDO.Text = keyCodeString[args.KeyCode];
- tbUNDO = args.KeyCode;
- }
- void tbTURN_KeyDownEvent(object sender, KeyEventArgs args)
- {
- if (!keyCodeString.ContainsKey(args.KeyCode))
- return;
- pEditParamterSetForm.tbTURN.Text = keyCodeString[args.KeyCode];
- tbTURN = args.KeyCode;
- }
- void tbSNAP_KeyDownEvent(object sender, KeyEventArgs args)
- {
- if (!keyCodeString.ContainsKey(args.KeyCode))
- return;
- pEditParamterSetForm.tbSNAP.Text = keyCodeString[args.KeyCode];
- tbSNAP = args.KeyCode;
- }
- void tbSELSUBTRACT_KeyDownEvent(object sender, KeyEventArgs args)
- {
- if (!keyCodeString.ContainsKey(args.KeyCode))
- return;
- pEditParamterSetForm.tbSELSUBTRACT.Text = keyCodeString[args.KeyCode];
- tbSELSUBTRACT = args.KeyCode;
- }
- void tbSELADD_KeyDownEvent(object sender, KeyEventArgs args)
- {
- if (!keyCodeString.ContainsKey(args.KeyCode))
- return;
- pEditParamterSetForm.tbSELADD.Text = keyCodeString[args.KeyCode];
- tbSELADD = args.KeyCode;
- }
- void tbREDO_KeyDownEvent(object sender, KeyEventArgs args)
- {
- if (!keyCodeString.ContainsKey(args.KeyCode))
- return;
- pEditParamterSetForm.tbREDO.Text = keyCodeString[args.KeyCode];
- tbREDO = args.KeyCode;
- }
- void tbMOVE_KeyDownEvent(object sender, KeyEventArgs args)
- {
- if (!keyCodeString.ContainsKey(args.KeyCode))
- return;
- pEditParamterSetForm.tbMOVE.Text = keyCodeString[args.KeyCode];
- tbMOVE = args.KeyCode;
- }
- void tbFINISH_KeyDownEvent(object sender, KeyEventArgs args)
- {
- if (!keyCodeString.ContainsKey(args.KeyCode))
- return;
- pEditParamterSetForm.tbFINISH.Text = keyCodeString[args.KeyCode];
- tbFINISH = args.KeyCode;
- }
- void tbCLEAR_KeyDownEvent(object sender, KeyEventArgs args)
- {
- if (!keyCodeString.ContainsKey(args.KeyCode))
- return;
- pEditParamterSetForm.tbCLEAR.Text = keyCodeString[args.KeyCode];
- tbCLEAR = args.KeyCode;
- }
- void btnOK_ClickEvent(object sender)
- {
- try
- {
- EditParamterRow row = new EditParamterRow();
- #region 收集设置值
- if (pEditParamterSetForm.rgSELLAYER.SelectedIndex == 0)
- row.ONLYSELLAYER = true;
- else
- row.ONLYSELLAYER = false;
- if (pEditParamterSetForm.rgSELFEATURE.SelectedIndex == 0)
- row.ONLYSELFEATURE = true;
- else
- row.ONLYSELFEATURE = false;
- if (!row.ONLYSELLAYER && !row.ONLYSELFEATURE)
- {
- MessageManager.Show("编辑失败!原因:当前选择图层与当前选择要素至少选择一个!");
- return;
- }
- row.SEARCHTOL = Convert.ToInt32(pEditParamterSetForm.intSEARCHTOL.Value);
- row.SNAPTOL = Convert.ToInt32(pEditParamterSetForm.intSNAPTOL.Value);
- row.LINELINK = Convert.ToInt32(pEditParamterSetForm.intLINKLONG.Value);
- row.LINEBUFFER = Convert.ToDouble(pEditParamterSetForm.doubleLINEBUFFER.Value);
- row.WEED = Convert.ToDouble(pEditParamterSetForm.doubleWEED.Value);
- row.LINEBUFFERTYPE = pEditParamterSetForm.cbBUFFERTYPE.SelectedIndex + 1;
- row.CLEAR = tbCLEAR.ToString();
- row.ELEMENTNAME = pEditParamterSetForm.tbELEMENTNAME.Text;
- row.FINISH = tbFINISH.ToString();
- row.MOVE = tbMOVE.ToString();
- row.REDO = tbREDO.ToString();
- row.SELADD = tbSELADD.ToString();
- row.SELSUBTRACT = tbSELSUBTRACT.ToString();
- row.SNAP = tbSNAP.ToString();
- row.TURN = tbTURN.ToString();
- row.UNDO = tbUNDO.ToString();
- row.XYIN = tbXYIN.ToString();
- #endregion
- IQueryFilter pQF = new QueryFilter();
- EditParamterTable.editParamterTable.Delete(pQF);
- EditParamterTable.editParamterTable.Save(row);
- DataTable dt = pEditParamterSetForm.RelLayerGridControl.DataSource as DataTable;
- pNodeRelLayerInfos = new List<NodeRelLayerInfo>();
- if (dt != null)
- {
- foreach (DataRow dr in dt.Rows)
- {
- int id = Convert.ToInt32(dr["序号"]);
- NodeRelLayerInfo pNodeRelLayerInfo = editLayers[id];
- bool relNode = Convert.ToBoolean(dr["是否联动"]);
- pNodeRelLayerInfo.RelNode = relNode;
- pNodeRelLayerInfos.Add(pNodeRelLayerInfo);
- }
- }
- this.content.ServiceLocator.SetInstance<List<NodeRelLayerInfo>>(pNodeRelLayerInfos, ServiceLocatorKeys.RelNoteLayers);
- MessageManager.Show("设置保存成功!");
- EditParamter.Init();
- pEditParamterSetForm.Close();
- }
- catch (Exception ex)
- {
- MessageManager.Show("设置保存失败!" + ex.Message);
- throw ex;
- }
- }
- void rgSELLAYER_SelectedIndexChangedEvent(object sender, object data)
- {
- if (pEditParamterSetForm.rgSELLAYER.SelectedIndex == 1 && pEditParamterSetForm.rgSELFEATURE.SelectedIndex == 1)
- pEditParamterSetForm.rgSELFEATURE.SelectedIndex = 0;
- }
- void rgSELFEATURE_SelectedIndexChangedEvent(object sender, object data)
- {
- if (pEditParamterSetForm.rgSELFEATURE.SelectedIndex == 1 && pEditParamterSetForm.rgSELLAYER.SelectedIndex == 1)
- pEditParamterSetForm.rgSELLAYER.SelectedIndex = 0;
- }
- #endregion
- #region 键盘值对应关系
- private void InitKeyCode()
- {
- keyCodeString.Clear();
- keyCodeString.Add(0, "");
- keyCodeString.Add(8, "BackSpace");
- keyCodeString.Add(9, "Tab");
- keyCodeString.Add(13, "Enter");
- keyCodeString.Add(16, "Shift");
- keyCodeString.Add(17, "Ctrl");
- keyCodeString.Add(18, "Alt");
- keyCodeString.Add(20, "Caps_Lock");
- keyCodeString.Add(27, "Esc");
- keyCodeString.Add(32, "space");
- keyCodeString.Add(33, "Prior");
- keyCodeString.Add(34, "Next");
- keyCodeString.Add(35, "End");
- keyCodeString.Add(36, "Home");
- keyCodeString.Add(37, "Left");
- keyCodeString.Add(38, "Up");
- keyCodeString.Add(39, "Right");
- keyCodeString.Add(40, "Down");
- keyCodeString.Add(41, "Select");
- keyCodeString.Add(42, "Print");
- keyCodeString.Add(43, "Execute");
- keyCodeString.Add(45, "Insert");
- keyCodeString.Add(46, "Delete");
- keyCodeString.Add(47, "Help");
- keyCodeString.Add(48, "0");
- keyCodeString.Add(49, "1");
- keyCodeString.Add(50, "2");
- keyCodeString.Add(51, "3");
- keyCodeString.Add(52, "4");
- keyCodeString.Add(53, "5");
- keyCodeString.Add(54, "6");
- keyCodeString.Add(55, "7");
- keyCodeString.Add(56, "8");
- keyCodeString.Add(57, "9");
- keyCodeString.Add(65, "A");
- keyCodeString.Add(66, "B");
- keyCodeString.Add(67, "C");
- keyCodeString.Add(68, "D");
- keyCodeString.Add(69, "E");
- keyCodeString.Add(70, "F");
- keyCodeString.Add(71, "G");
- keyCodeString.Add(72, "H");
- keyCodeString.Add(73, "I");
- keyCodeString.Add(74, "J");
- keyCodeString.Add(75, "K");
- keyCodeString.Add(76, "L");
- keyCodeString.Add(77, "M");
- keyCodeString.Add(78, "N");
- keyCodeString.Add(79, "O");
- keyCodeString.Add(80, "P");
- keyCodeString.Add(81, "Q");
- keyCodeString.Add(82, "R");
- keyCodeString.Add(83, "S");
- keyCodeString.Add(84, "T");
- keyCodeString.Add(85, "U");
- keyCodeString.Add(86, "V");
- keyCodeString.Add(87, "W");
- keyCodeString.Add(88, "X");
- keyCodeString.Add(89, "Y");
- keyCodeString.Add(90, "Z");
- keyCodeString.Add(112, "F1");
- keyCodeString.Add(113, "F2");
- keyCodeString.Add(114, "F3");
- keyCodeString.Add(115, "F4");
- keyCodeString.Add(116, "F5");
- keyCodeString.Add(117, "F6");
- keyCodeString.Add(118, "F7");
- keyCodeString.Add(119, "F8");
- keyCodeString.Add(120, "F9");
- keyCodeString.Add(121, "F10");
- keyCodeString.Add(122, "F11");
- keyCodeString.Add(123, "F12");
- keyCodeString.Add(136, "Num_Lock");
- keyCodeString.Add(137, "Scroll_lock");
- }
- private int GetIntFromStr(string str)
- {
- int i = 0;
- int.TryParse(str, out i);
- return i;
- }
- #endregion
- }
- }
|