Example #1
0
 public void AddFeatureClass(FeatureClassLinkInfo _add_value)
 {
     FeatureClassLinkInfo[] tmp = new FeatureClassLinkInfo[link_info_array.Length + 1];
     link_info_array.CopyTo(tmp, 0);
     tmp[link_info_array.Length] = _add_value;
     link_info_array             = tmp;
 }
Example #2
0
        }        //method

        internal static void SelectionToDataGridView(MgSelectionBase _selection_base)
        {
            palette_window.links_control.is_suspended = true;         // информируем о заморозке
            palette_window.links_control.SuspendLayout();             // замораживаем логику
            palette_window.links_control.data_grid.Enabled = false;
            palette_window.links_control.data_grid.SuspendLayout();   // замораживаем логику DataGridView
            palette_window.links_control.layers_list.Enabled = false;

            palette_window.links_control.progressbar_in_status.Visible = true;             // включение ProgressBar
            palette_window.links_control.status_strip.Refresh();



            MgReadOnlyLayerCollection layers = _selection_base.GetLayers();

            int curr_features_count = 0, features_count = 0;

            // подсчет количества выбранных объектов
            foreach (MgLayerBase layer in layers)
            {
                features_count += _selection_base.GetSelectedFeaturesCount(layer, layer.FeatureClassName);
            }

            if (features_count == 0)
            {
                return;
            }

            // заполнение списка слоев
            palette_window.links_control.layers_list.Items.Clear();             // очищаем список

            if (layers.Count > 1)
            {
                palette_window.links_control.layers_list.Items.Add("(Все выбранные)");
            }

            foreach (MgLayerBase layer in layers)
            {
                palette_window.links_control.layers_list.Items.Add(layer.Name);
            }
            palette_window.links_control.layers_list.SelectedIndex = 0;

            // заполнение DataGridView
            palette_window.links_control.data_grid.Rows.Clear();              // очищаем строки

            foreach (MgLayerBase layer in layers)
            {
                int curr_ftr_class_idx = config.IndexOf(layer.FeatureClassName);
                if (curr_ftr_class_idx == -1)
                {
                    curr_features_count += _selection_base.GetSelectedFeaturesCount(layer, layer.FeatureClassName);;
                    palette_window.links_control.UpdateStatusRowCounterLabelAndProgressBar(curr_features_count, features_count);
                    continue;
                }
                FeatureClassLinkInfo curr_link_info = config.link_info_array[curr_ftr_class_idx];

                MgFeatureReader ftr_rdr = _selection_base.GetSelectedFeatures(layer, layer.FeatureClassName, false);

                MgPropertyDefinitionCollection identity_prop_defs = ftr_rdr.GetClassDefinition().GetIdentityProperties();                 // получаем набор идентификационных полей

                while (ftr_rdr.ReadNext())
                {
                    curr_features_count++;

                    DataGridViewRow link_row = new DataGridViewRow();   // новая строка

                    DataGridViewLinkCell link_cell;                     // ячейка

                    // формирование URL
                    link_cell = new DataGridViewLinkCell();

                    string title_str = ResolveLinkStringByValueFromReader(ftr_rdr, curr_link_info.LinkTitle);
                    link_cell.Value       = String.IsNullOrEmpty(title_str)? "<Null>": title_str;
                    link_cell.ToolTipText =
                        curr_link_info.LinkCommandPath
                        + command_splitter
                        + ResolveLinkStringByValueFromReader(ftr_rdr, curr_link_info.LinkURL);
                    link_row.Cells.Add(link_cell);                     // вставка ячейки

                    // формирование ID
                    MgPropertyCollection curr_identity_props = GetPropertiesFromReader(ftr_rdr, identity_prop_defs);

                    SelectedFeatureInfo sel_info = new SelectedFeatureInfo(layer, curr_identity_props);
                    link_cell       = new DataGridViewLinkCell();
                    link_cell.Value = sel_info;
                    link_row.Cells.Add(link_cell);                     // вставка ячейки

                    // добавлени строки в DataGridView
                    palette_window.links_control.data_grid.Rows.Add(link_row);

                    // обновление ProgressBar'а и счетчика строк
                    palette_window.links_control.UpdateStatusRowCounterLabelAndProgressBar(curr_features_count, features_count);
                }                                                                               /// while (ftr_rdr.ReadNext())
            }                                                                                   /// foreach (MgLayerBase layer in layers)

            palette_window.links_control.URL.SortMode = DataGridViewColumnSortMode.NotSortable; // сброс сортировки
            palette_window.links_control.URL.SortMode = DataGridViewColumnSortMode.Automatic;   // на исходную автоматическую

            palette_window.links_control.data_grid.SelectAll();                                 // выбираем все строки

            palette_window.links_control.progressbar_in_status.Visible = false;

            palette_window.links_control.layers_list.Enabled = true;
            palette_window.links_control.data_grid.Enabled   = true;
            palette_window.links_control.data_grid.ResumeLayout();   // размораживаем логику DataGridView
            palette_window.links_control.ResumeLayout();             // размораживаем логику
            palette_window.links_control.is_suspended = false;

            palette_window.links_control.UpdateStatusRowCounterLabel();             // обновляем строку статуса
        }