|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|