Esempio n. 1
0
        private void DoDownload(object sender, EventArgs args)
        {
            var hasPointsToDownload = false;

            foreach (var layer in App.Map.MapFrame.GetAllLayers())
            {
                if (!layer.Checked || !SearchLayerModifier.IsSearchLayer(layer))
                {
                    continue;
                }

                var featureLayer = (IFeatureLayer)layer;
                if (featureLayer.Selection.Count == 0)
                {
                    continue;
                }
                hasPointsToDownload = true;

                StartDownloading(featureLayer, featureLayer.Selection.ToFeatureList());
                break;
            }

            if (!hasPointsToDownload)
            {
                MessageBox.Show("No sites are selected. Please select sites for downloading data in the map.",
                                "No selected sites", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
Esempio n. 2
0
        private void DoSeriesControlUpdateValues(object sender, EventArgs e)
        {
            var selectedSeriesID = SeriesControl.SelectedSeriesID;

            if (selectedSeriesID == 0)
            {
                return;
            }

            // Find by selectedSeriesID layer and feature to update.
            // We can do it, because value of SeriesID column is unique for all features in the map.
            foreach (var layer in App.Map.MapFrame.GetAllLayers())
            {
                if (!SearchLayerModifier.IsSearchLayer(layer))
                {
                    continue;
                }

                var featureLayer = (IFeatureLayer)layer;
                if (featureLayer.DataSet.GetColumn("SeriesID") == null)
                {
                    continue;
                }

                var featureToDownload = featureLayer.DataSet.Features
                                        .FirstOrDefault(feature => feature.DataRow["SeriesID"] != DBNull.Value &&
                                                        feature.DataRow["SeriesID"].ToString() == selectedSeriesID.ToString(CultureInfo.InvariantCulture));
                if (featureToDownload != null)
                {
                    StartDownloading(featureLayer, new[] { featureToDownload });
                }
            }
        }
        private void Update_Click(object sender, EventArgs e)
        {
            if (ShowIfBusy())
            {
                return;
            }

            var dataSitesGroup = App.Map.GetDataSitesLayer();

            if (dataSitesGroup == null)
            {
                return;
            }

            _layersToUpdate.Clear();
            foreach (var layer in dataSitesGroup.Layers)
            {
                var featureLayer = layer as IFeatureLayer;
                if (!layer.Checked || !SearchLayerModifier.IsSearchLayer(layer))
                {
                    continue;
                }
                _layersToUpdate.Add(featureLayer);
            }

            DownloadManager.Completed += OnDownloadManagerOnCompleted;
            ProcessUpdate();
        }
Esempio n. 4
0
        private void DownloadManager_Completed(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e)
        {
            if (e.Cancelled)
            {
                return;
            }

            var dManager  = DownloadManager;
            var themeName = dManager.Information.StartArgs.DataTheme.Name;

            var         _themeManager = new ThemeManager();
            IFeatureSet featureSet;

            try
            {
                featureSet = _themeManager.GetFeatureSet(themeName);
            }
            catch (ArgumentException)
            {
                // No such theme in the database
                featureSet = null;
            }
            if (featureSet == null)
            {
                // in theory this condition always will be false
                if (dManager.Information.WithError != dManager.Information.TotalSeries)
                {
                    MessageBox.Show("Theme not found, but some series was saved!", "Error", MessageBoxButtons.OK,
                                    MessageBoxIcon.Error);
                }
                return;
            }

            featureSet.FillAttributes();

            var sourceLayer = (IFeatureLayer)dManager.Information.StartArgs.Tag;
            var lm          = SearchLayerModifier.Create(sourceLayer, (Map)App.Map, this);

            Debug.Assert(lm != null);

            lm.UpdateDataTable(featureSet, DownloadManager);
            lm.UpdateSymbolizing();
            lm.UpdateContextMenu();

            // Check for DataAggregation
            var aggPlugin = App.GetExtension <IDataAggregationPlugin>();

            if (aggPlugin != null)
            {
                aggPlugin.AttachLayerToPlugin(sourceLayer);
            }

            // Refresh list of the time series in the table and graph in the main form
            SeriesControl.RefreshSelection();
        }
Esempio n. 5
0
        void _map_MouseMove(object sender, MouseEventArgs e)
        {
            if (!_parentPlugin.ShowPopups)
            {
                return;
            }

            var visibleLayers = _map.GetAllLayers().OfType <IFeatureLayer>()
                                .Where(layer => layer.IsVisible && SearchLayerModifier.IsSearchLayer(layer))
                                .ToList();

            if (visibleLayers.Count == 0)
            {
                HideToolTip();
                return;
            }

            var rtol     = new Rectangle(e.X - 8, e.Y - 8, 0x10, 0x10);
            var tolerant = _map.PixelToProj(rtol);

            var pInfos = visibleLayers.Select(layer => Identify(layer, tolerant))
                         .Where(pInfo => !pInfo.IsEmpty).ToList();

            if (pInfos.Count == 0)
            {
                HideToolTip();
                return;
            }

            // If already visible same tooltip, not show again
            var control = (CustomToolTipControl)toolTip.Content;

            if (toolTip.Visible && control.IsInfoAlreadySetted(pInfos))
            {
                return;
            }

            HideToolTip();
            control.SetInfo(pInfos);

            Point adjustedLocation = adjustPopupLocation(e.Location);

            toolTip.Show(_map, toolTip.Parent.PointToClient(adjustedLocation));
        }
Esempio n. 6
0
        private void AttachLayerToPlugin(ILayer layer, bool isDeserializing = false)
        {
            if (SearchLayerModifier.IsSearchLayer(layer))
            {
                if (_searchLayerInformer == null)
                {
                    // Create popup-informer
                    var extractor = new HISCentralInfoExtractor(new Lazy <Dictionary <string, string> >(() => HisCentralServices.Services));
                    _searchLayerInformer = new SearchLayerInformer(extractor, (Map)App.Map);
                }

                var lm = SearchLayerModifier.Create(layer, (Map)App.Map, this);
                Debug.Assert(lm != null);

                if (!isDeserializing)
                {
                    lm.UpdateLabeling();
                    lm.UpdateSymbolizing();
                }
                lm.UpdateContextMenu();

                btnDownload1.Enabled = true;
                btnDownload2.Enabled = true;
            }

            var group = layer as IGroup;

            if (group != null)
            {
                group.LayerAdded   += Map_LayerAdded;
                group.LayerRemoved += Layers_LayerRemoved;

                foreach (var child in group.GetLayers())
                {
                    AttachLayerToPlugin(child, isDeserializing);
                }
            }
        }
        private void AttachLayerToPlugin(ILayer layer, bool isDeserializing = false)
        {
            if (SearchLayerModifier.IsSearchLayer(layer))
            {
                if (_searchLayerInformer == null)
                {
                    // Create popup-informer
                    var extractor = new HISCentralInfoExtractor(new Lazy <Dictionary <string, string> >(() => new HisCentralServices(App).Services));
                    _searchLayerInformer = new SearchLayerInformer(this, extractor, (Map)App.Map);
                }

                var lm = SearchLayerModifier.Create(layer, (Map)App.Map, this);
                Debug.Assert(lm != null);

                if (!isDeserializing)
                {
                    lm.UpdateLabeling();
                    lm.UpdateSymbolizing();
                }
                lm.UpdateContextMenu();

                if (_btnDownloadInSearch != null)
                {
                    _btnDownloadInSearch.Enabled = true;
                }
                if (_btnSearchOptions != null)
                {
                    _btnSearchOptions.Enabled = true;
                }
                //if (_btnSearchOptions != null)
                //{
                //    _btnSearchOptions.Enabled = true;
                //}
                if (_btnSearchResults != null)
                {
                    _btnSearchResults.Enabled = true;
                }
                if (_btnShowPopups != null)
                {
                    if (!_btnShowPopups.Enabled)
                    {
                        _btnShowPopups.Enabled = true;
                    }
                    if (!ShowPopups)
                    {
                        _btnShowPopups.Toggle();
                    }
                }


                //_btnDownload.Enabled = true;
                //_btnUpdate.Enabled = true;
                //_btnShowPopups.Enabled = true;
            }

            var group = layer as IGroup;

            if (group != null)
            {
                group.LayerAdded   += Map_LayerAdded;
                group.LayerRemoved += Layers_LayerRemoved;

                foreach (var child in group.GetLayers())
                {
                    AttachLayerToPlugin(child, isDeserializing);
                }
            }
        }