public async Task Progressor_Cancelable()
        {
            ArcGIS.Desktop.Framework.Threading.Tasks.CancelableProgressorSource cps =
                new ArcGIS.Desktop.Framework.Threading.Tasks.CancelableProgressorSource("Doing my thing - cancelable", "Canceled");

            int numSecondsDelay = 5;
            //If you run this in the DEBUGGER you will NOT see the dialog

            //simulate doing some work which can be canceled
            await ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>
            {
                cps.Progressor.Max = (uint)numSecondsDelay;
                //check every second
                while (!cps.Progressor.CancellationToken.IsCancellationRequested)
                {
                    cps.Progressor.Value  += 1;
                    cps.Progressor.Status  = "Status " + cps.Progressor.Value;
                    cps.Progressor.Message = "Message " + cps.Progressor.Value;

                    if (System.Diagnostics.Debugger.IsAttached)
                    {
                        System.Diagnostics.Debug.WriteLine(string.Format("RunCancelableProgress Loop{0}", cps.Progressor.Value));
                    }
                    //are we done?
                    if (cps.Progressor.Value == cps.Progressor.Max)
                    {
                        break;
                    }
                    //block the CIM for a second
                    Task.Delay(1000).Wait();
                }
                System.Diagnostics.Debug.WriteLine(string.Format("RunCancelableProgress: Canceled {0}",
                                                                 cps.Progressor.CancellationToken.IsCancellationRequested));
            }, cps.Progressor);
        }
Exemple #2
0
        protected async override void OnClick()
        {
            CIMFeatureTemplate        cimFT;
            List <CIMFeatureTemplate> list = new List <CIMFeatureTemplate>();

            var ps = new ArcGIS.Desktop.Framework.Threading.Tasks.CancelableProgressorSource("Importing feature templates", "Canceled");

            await QueuedTask.Run(() =>
            {
                InitializeLibrarian();

                // browse file dialog

                var ofd = new OpenFileDialog
                {
                    Filter           = "xml files (*.xml)|*.xml",
                    RestoreDirectory = true,
                    Multiselect      = false
                };

                if (ofd.ShowDialog() == true)
                {
                    var doc = XDocument.Load(ofd.FileName);

                    var elements = from el in doc.Descendants("Children").Descendants("Children").Where(node => node.Elements("Name").Any())
                                   select new
                    {
                        eName = el.Element("Name").Value,
                        eSIC  = el.Element("SIC").Value
                    };

                    foreach (var item in elements)
                    {
                        var s = _librarian.MakeSymbol("2525C", item.eSIC);

                        cimFT = new CIMFeatureTemplate();
                        switch (s.GeometryType)
                        {
                        case JointMilitarySymbologyLibrary.GeometryType.POINT:
                            cimFT.Tags       = "Point";
                            cimFT.ToolProgID = "2a8b3331-5238-4025-972e-452a69535b06";
                            break;

                        case JointMilitarySymbologyLibrary.GeometryType.LINE:
                            // JointMilitarySymbologyLibrary only works with points
                            cimFT.Tags = "Line";
                            break;

                        case JointMilitarySymbologyLibrary.GeometryType.AREA:
                            // JointMilitarySymbologyLibrary only work with points
                            cimFT.Tags = "Polygon";
                            break;

                        default:
                            break;
                        }
                        cimFT.Name          = item.eName;
                        cimFT.DefaultValues = new Dictionary <string, object>
                        {
                            { "identity", s.SIDC.PartAString.Substring(2, 2) },
                            { "context", s.SIDC.PartAString.Substring(6, 1) },
                            { "symbolset", s.SIDC.PartAString.Substring(4, 2) },
                            { "entity", s.SIDC.PartBString.Substring(0, 6) }
                        };

                        list.Add(cimFT);
                    }
                }
            });

            if (MapView.Active != null && list.Any())
            {
                // get toc highlighted layers
                var selLayers = MapView.Active.GetSelectedLayers();
                // retrieve the first one
                Layer layer = selLayers.FirstOrDefault();
                if (layer != null)
                {
                    // find the CIM and serialize it
                    await QueuedTask.Run(() =>
                    {
                        if (layer is FeatureLayer)
                        {
                            AddMatchingSymbolSetsToLayer(layer, list);
                        }
                        else if (layer is GroupLayer)
                        {
                            var gl        = layer as GroupLayer;
                            var layerList = gl.GetLayersAsFlattenedList();

                            foreach (var layerItem in layerList)
                            {
                                if (layerItem is FeatureLayer)
                                {
                                    AddMatchingSymbolSetsToLayer(layerItem, list);
                                }
                            }
                        }
                    }, ps.Progressor);
                }
            }
        }
        protected async override void OnClick()
        {
            CIMFeatureTemplate cimFT;
            List<CIMFeatureTemplate> list = new List<CIMFeatureTemplate>();

            var ps = new ArcGIS.Desktop.Framework.Threading.Tasks.CancelableProgressorSource("Importing feature templates", "Canceled");

            await QueuedTask.Run(() =>
            {
                InitializeLibrarian();

                // browse file dialog

                var ofd = new OpenFileDialog
                {
                    Filter = "xml files (*.xml)|*.xml",
                    RestoreDirectory = true,
                    Multiselect = false
                };

                if (ofd.ShowDialog() == true)
                {
                    var doc = XDocument.Load(ofd.FileName);

                    var elements = from el in doc.Descendants("Children").Descendants("Children").Where(node => node.Elements("Name").Any())
                                   select new
                                   {
                                       eName = el.Element("Name").Value,
                                       eSIC = el.Element("SIC").Value
                                   };

                    foreach (var item in elements)
                    {
                        var s = _librarian.MakeSymbol("2525C", item.eSIC);

                        cimFT = new CIMFeatureTemplate();
                        switch(s.GeometryType)
                        {
                            case JointMilitarySymbologyLibrary.GeometryType.POINT:
                                cimFT.Tags = "Point";
                                cimFT.ToolProgID = "2a8b3331-5238-4025-972e-452a69535b06";
                                break;
                            case JointMilitarySymbologyLibrary.GeometryType.LINE:
                                // JointMilitarySymbologyLibrary only works with points
                                cimFT.Tags = "Line";
                                break;
                            case JointMilitarySymbologyLibrary.GeometryType.AREA:
                                // JointMilitarySymbologyLibrary only work with points
                                cimFT.Tags = "Polygon";
                                break;
                            default:
                                break;
                        }
                        cimFT.Name = item.eName;
                        cimFT.DefaultValues = new Dictionary<string, object>
                            {
                                {"identity",s.SIDC.PartAString.Substring(2,2)},
                                {"context", s.SIDC.PartAString.Substring(6,1)},
                                {"symbolset", s.SIDC.PartAString.Substring(4,2)},
                                {"entity", s.SIDC.PartBString.Substring(0,6)}
                            };

                        list.Add(cimFT);
                    }
                }
            });

            if (MapView.Active != null && list.Any())
            {
                // get toc highlighted layers
                var selLayers = MapView.Active.GetSelectedLayers();
                // retrieve the first one
                Layer layer = selLayers.FirstOrDefault();
                if (layer != null)
                {
                    // find the CIM and serialize it                    
                    await QueuedTask.Run(() =>
                    {
                        if (layer is FeatureLayer)
                        {
                            AddMatchingSymbolSetsToLayer(layer, list);
                        }
                        else if (layer is GroupLayer)
                        {
                            var gl = layer as GroupLayer;
                            var layerList = gl.GetLayersAsFlattenedList();

                            foreach (var layerItem in layerList)
                            {
                                if (layerItem is FeatureLayer)
                                {
                                    AddMatchingSymbolSetsToLayer(layerItem, list);
                                }
                            }
                        }
                    }, ps.Progressor);
                }
            }
        }