You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
280 lines
12 KiB
280 lines
12 KiB
using DevExpress.XtraBars; |
|
using DevExpress.XtraBars.Docking; |
|
using DevExpress.XtraBars.Docking2010.Views.Tabbed; |
|
using DevExpress.XtraBars.Localization; |
|
using DevExpress.XtraBars.Ribbon; |
|
using ESRI.ArcGIS.Carto; |
|
using ESRI.ArcGIS.Controls; |
|
using ESRI.ArcGIS.Display; |
|
using KGIS.Framework.Core.Services; |
|
using KGIS.Framework.DevLocalizationCHS; |
|
using KGIS.Framework.Maps; |
|
using KGIS.Framework.Platform; |
|
using KGIS.Framework.Utils; |
|
using Kingo.PluginServiceInterface; |
|
using System; |
|
using System.Configuration; |
|
using System.Drawing; |
|
using System.Windows.Forms; |
|
using UIShell.OSGi; |
|
|
|
namespace Kingo.PlatformPlugin |
|
{ |
|
public partial class FrmMain : RibbonForm, KGIS.Framework.Platform.Interface.IProgress, IFormMain |
|
{ |
|
private static FrmMain _mainForm; |
|
public RibbonControl RibControl { get; private set; } |
|
public DockManager dockManager { get; private set; } |
|
public TabbedView tabbedView { get; private set; } |
|
|
|
public BarEditItem WorkPath { get; private set; } |
|
private Timer timerResize = new Timer(); |
|
private Timer LicTimer = new Timer(); |
|
public static FrmMain GetInstance(IBundleContext context) |
|
{ |
|
return _mainForm ?? (_mainForm = new FrmMain()); |
|
} |
|
public FrmMain() |
|
{ |
|
InitializeComponent(); |
|
RibControl = rbMenuCtrl; |
|
dockManager = dockManager1; |
|
tabbedView = tabbedView1; |
|
WorkPath = workPath; |
|
rbMenuCtrl.ApplicationDocumentCaption = ConfigurationManager.AppSettings.Get("APPName").Replace(" ", ""); |
|
this.Text = ""; |
|
Platform.Instance.Progress = this; |
|
licState.Visibility = BarItemVisibility.Never; |
|
} |
|
|
|
private void FrmMain_Load(object sender, EventArgs e) |
|
{ |
|
timerResize.Interval = 1000; |
|
timerResize.Tick += TimerResize_Tick; |
|
|
|
timerResize.Start(); |
|
|
|
|
|
if (RunIDService2.Instance.ExpirationTime != null) |
|
{ |
|
TimeSpan ts = ((DateTime)RunIDService2.Instance.ExpirationTime).Subtract(DateTime.Now); |
|
licState.EditValue = string.Format("剩余{0}天{1}小时{2}分到期!", ts.Days, ts.Hours, ts.Minutes); |
|
} |
|
|
|
LicTimer.Interval = 60000;// 300000; |
|
LicTimer.Tick += (s, e1) => |
|
{ |
|
this.Invoke((Action)delegate () |
|
{ |
|
string jkrjSQ = System.IO.Path.Combine(SysAppPath.GetCurrentAppPath(), "jkrj.lic"); |
|
if (System.IO.File.Exists(jkrjSQ) && RunIDService2.Instance.UpdateLic()) |
|
{ |
|
licState.BeginUpdate(); |
|
if (RunIDService2.Instance.ExpirationTime != null) |
|
{ |
|
TimeSpan ts = ((DateTime)RunIDService2.Instance.ExpirationTime).Subtract(DateTime.Now); |
|
licState.EditValue = string.Format("剩余{0}天{1}小时{2}分到期!", ts.Days, ts.Hours, ts.Minutes); |
|
} |
|
else |
|
{ |
|
licState.EditValue = "未授权"; |
|
MessageBox.Show("软件授权验证未通过,程序即将退出!"); |
|
EngineEditor editor = new EngineEditorClass(); |
|
if (editor.EditState == esriEngineEditState.esriEngineStateEditing) |
|
{ |
|
editor.StopEditing(true); |
|
} |
|
Platform.Instance.SendMsg(new KGIS.Framework.Utils.Interface.NotifyMsgPackage() { MsgType = "SaveProject" }); |
|
//System.Environment.Exit(0); |
|
Application.ExitThread(); |
|
Application.Exit(); |
|
} |
|
licState.EndUpdate(); |
|
} |
|
}); |
|
}; |
|
|
|
LicTimer.Start(); |
|
this.Icon = new Icon(string.Format("{0}.ico", Platform.Instance.SystemType.ToString())); |
|
|
|
BarLocalizer.Active = new DxperienceXtraBarsLocalizationCHS(); |
|
DockManagerLocalizer.Active = new DxperienceXtraDockManagerLocalizationCHS(); |
|
DevExpress.XtraGrid.Localization.GridLocalizer.Active = new DxperienceXtraGridLocalizationCHS(); |
|
//ShowFilePath(); |
|
} |
|
private void TimerResize_Tick(object sender, EventArgs e) |
|
{ |
|
timerResize.Stop(); |
|
this.OnResize(e); |
|
Platform.Instance.SendMsg(new KGIS.Framework.Utils.Interface.NotifyMsgPackage() { MsgType = "InitProject" }); |
|
|
|
ProjectInfo ProInfo = MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo; |
|
if (ProInfo != null) |
|
{ |
|
if (ProInfo.ProjType == EnumProjType.BHTBTQ && Platform.Instance.SystemType != KGIS.Framework.Platform.Entity.SystemTypeEnum.BGFWCG |
|
|| ProInfo.ProjType != EnumProjType.BHTBTQ && Platform.Instance.SystemType == KGIS.Framework.Platform.Entity.SystemTypeEnum.BGFWCG) |
|
{ |
|
ClearData(); |
|
LogAPI.Debug("工程类型与当前软件类型不匹配,将会导致功能不可用,请正确打开工程类型!"); |
|
KGIS.Framework.Utils.Helper.MessageHelper.ShowError("当前工程类型与当前软件类型不匹配,将会导致一些功能不可正常使用,请重新正确打开工程类型!"); |
|
return; |
|
} |
|
} |
|
if (ProInfo != null && ProInfo.ProjType == EnumProjType.BHTBTQ && Platform.Instance.SystemType == KGIS.Framework.Platform.Entity.SystemTypeEnum.BGFWCG) |
|
{ |
|
//添加作业区标注 |
|
MarkLayer(); |
|
IUcZYQMagrHelper ucZYQMagrHelper = BundleRuntime.Instance.GetFirstOrDefaultService<IUcZYQMagrHelper>(); |
|
if (ucZYQMagrHelper != null) |
|
{ |
|
ucZYQMagrHelper.UpdataData(); |
|
} |
|
IUcMulitMapControlHelper ucMulitMapControlHelper = BundleRuntime.Instance.GetFirstOrDefaultService<IUcMulitMapControlHelper>(); |
|
if (ucMulitMapControlHelper != null) |
|
{ |
|
ucMulitMapControlHelper.InitView(); |
|
ucMulitMapControlHelper.MarkLabelLayer(); |
|
if (ucMulitMapControlHelper.CurrentGeometry != null && !ucMulitMapControlHelper.CurrentGeometry.IsEmpty) |
|
ucMulitMapControlHelper.SetMask(ucMulitMapControlHelper.CurrentGeometry); |
|
} |
|
|
|
} |
|
} |
|
private void ClearData() |
|
{ |
|
MapsManager.Instance.MapService.getAxMapControl().ClearLayers(); |
|
if (Platform.Instance.SystemType == KGIS.Framework.Platform.Entity.SystemTypeEnum.BGFWCG) |
|
{ |
|
IUcZYQMagrHelper ucZYQMagrHelper = BundleRuntime.Instance.GetFirstOrDefaultService<IUcZYQMagrHelper>(); |
|
if (ucZYQMagrHelper != null) |
|
{ |
|
ucZYQMagrHelper.ClearData(); |
|
} |
|
IUcMulitMapControlHelper ucMulitMapControlHelper = BundleRuntime.Instance.GetFirstOrDefaultService<IUcMulitMapControlHelper>(); |
|
if (ucMulitMapControlHelper != null) |
|
{ |
|
ucMulitMapControlHelper.ClearData(); |
|
} |
|
} |
|
} |
|
private void MarkLayer() |
|
{ |
|
try |
|
{ |
|
IFeatureLayer pFeatureLayer = MapsManager.Instance.MapService.GetFeatureLayerByName("ZYQ"); |
|
if (pFeatureLayer == null) return; |
|
IGeoFeatureLayer pGeoLayer = pFeatureLayer as IGeoFeatureLayer; |
|
IRgbColor pColor = new RgbColorClass() { Red = 85, Blue = 105, Green = 255 }; |
|
stdole.IFontDisp pFont = new stdole.StdFont() |
|
{ |
|
Name = "宋体", |
|
//Bold = true |
|
} as stdole.IFontDisp; |
|
|
|
ITextSymbol pTextSymbol = new TextSymbolClass() |
|
{ |
|
Color = pColor, |
|
Font = pFont, |
|
Size = 8 |
|
}; |
|
IBasicOverposterLayerProperties pBasicOverLayerPro = new BasicOverposterLayerPropertiesClass(); |
|
pBasicOverLayerPro.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolygon; |
|
pBasicOverLayerPro.GenerateUnplacedLabels = true; |
|
pBasicOverLayerPro.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerShape; |
|
|
|
ILabelEngineLayerProperties pLableEngine = new LabelEngineLayerPropertiesClass() |
|
{ |
|
Symbol = pTextSymbol, |
|
IsExpressionSimple = true |
|
}; |
|
IOverposterLayerProperties2 pOverLayerProper = pBasicOverLayerPro as IOverposterLayerProperties2; |
|
pOverLayerProper.TagUnplaced = true;//设置该属性,目的是不被其他element遮挡 |
|
pLableEngine.BasicOverposterLayerProperties = pBasicOverLayerPro; |
|
IAnnotateLayerProperties pAnnoPros = pLableEngine as IAnnotateLayerProperties; |
|
pGeoLayer.AnnotationProperties.Add(pAnnoPros); |
|
pGeoLayer.DisplayAnnotation = true; |
|
AxMapControl axMapControl1 = MapsManager.Instance.MapService.getAxMapControl(); |
|
axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewBackground, null, axMapControl1.Extent); |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug("设置标注时发生异常,异常信息如下:" + ex); |
|
return; |
|
} |
|
} |
|
|
|
private void FrmMain_Shown(object sender, EventArgs e) |
|
{ |
|
//BUG-03468 打开软件首页后,点击里面的模块后,软件首页不要放在桌面最上层 |
|
this.Activate(); |
|
} |
|
public void CloseProgressBar() |
|
{ |
|
try |
|
{ |
|
this.Enabled = true; |
|
if (splashScreenManager.IsSplashFormVisible) |
|
{ |
|
splashScreenManager.CloseWaitForm(); |
|
splashScreenManager.WaitForSplashFormClose();//王欢 2018-11-17 splashScreenManager占用问题 |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug("关闭进度条异常:" + ex.Message); |
|
} |
|
} |
|
|
|
private void ShowFilePath() |
|
{ |
|
try |
|
{ |
|
if (System.IO.File.Exists(AppDomain.CurrentDomain.BaseDirectory + "ProjectPath.xml")) |
|
{ |
|
System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument(); |
|
xmlDoc.Load(AppDomain.CurrentDomain.BaseDirectory + "ProjectPath.xml"); |
|
System.Xml.XmlNode root = xmlDoc.SelectSingleNode("Root/File"); |
|
if (root == null) return; |
|
string filePath = root.Attributes[0].Value; |
|
if (true == string.IsNullOrEmpty(filePath) || false == System.IO.File.Exists(filePath)) |
|
{ |
|
return; |
|
} |
|
workPath.EditValue = System.IO.Path.GetDirectoryName(filePath); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug("读取文件异常:" + ex.Message); |
|
} |
|
} |
|
public void SetWorkPath(string path) |
|
{ |
|
if (!string.IsNullOrEmpty(path)) |
|
{ |
|
workPath.EditValue = path; |
|
} |
|
} |
|
|
|
public void ShowProgressBar(string message = "", int CountProgress = 0, int currentProgress = 0, string caption = "提示") |
|
{ |
|
|
|
} |
|
|
|
public void UpdateProgressBarMessage(string message = "", int CountProgress = 0, int currentProgress = 0, string caption = "提示") |
|
{ |
|
|
|
} |
|
|
|
public void SetStateMsg(string pMsg) |
|
{ |
|
// string.Format("X:{0:F3} Y:{1:F3} Unit {2}", o.mapX, o.mapY, Platform.Instance.MapsService.getAxMapControl().Map.MapUnits); |
|
toolStripStatusLabel1.Text = pMsg; |
|
} |
|
|
|
public void SetLocationInfo(string pLocation) |
|
{ |
|
this.labCurrentLocation.Text = pLocation; |
|
} |
|
} |
|
}
|
|
|