public void CopyAIObject <T>(string title, T selected, AITable <T> aitable, BrightIdeasSoftware.ObjectListView olv) where T : class, IAIObject { if (selected == null) { return; } InputBox.InputResult res = InputBox.Show(title, "Enter name:", selected.Name); if (res.ReturnCode == DialogResult.OK) { T newai = selected.Copy(nextID(), res.Text) as T; aitable.Add(newai); olv.BeginUpdate(); olv.AddObject(newai); olv.EndUpdate(); olv.SelectedObject = newai; olv.EnsureVisible(); } }
public void label_logmeter_TextChanged(object sender, EventArgs e) { if ( objectListView_data_table1.Focused ) { return; } item_selection_done_by_code = true; // remove line segment of interest and point of interest if any the_parent_form.show_point_of_interest(new GMap.NET.PointLatLng(0.0, 0.0)); the_parent_form.show_line_of_interest_segment(-1.0, -1.0); double logmeter = 0.0; double logmeter_0, logmeter_0_loaded, logmeter_1, logmeter_1_loaded; int index_of_first_selected_item = -1; int index_of_last_selected_item = -1; try { logmeter = Convert.ToDouble(label_logmeter.Text); } catch { return; } objectListView_data_table1.SelectedIndices.Clear(); for (int i = 0; i < list_data_table.Count; i++) { logmeter_0 = logmeter_0_loaded = utility.get_double(list_data_table[i]["logmeter_0"], -10000.0); logmeter_1 = logmeter_1_loaded = utility.get_double(list_data_table[i]["logmeter_1"], -10000.0); // swap if necessary so the processing below can be simple // this is the anti-log case from data in old database if ( (logmeter_1_loaded > -10000.0) && (logmeter_0_loaded > logmeter_1_loaded) ) { logmeter_0 = logmeter_1_loaded; logmeter_1 = logmeter_0_loaded; } if ( ((logmeter_0 <= logmeter) && (logmeter_1 >= logmeter)) || ((logmeter_1 < 0) && (logmeter_0 - 30 <= logmeter) && (logmeter_0 + 30 >= logmeter)) ) { if (index_of_first_selected_item == -1) { index_of_first_selected_item = i; } index_of_last_selected_item = i; // objectListView_data_table1.SelectedIndices.Add(i); objectListView_data_table1.SelectObject(list_data_table[i], false); } } // try to leave one unselected row on top if (index_of_first_selected_item < list_data_table.Count) { if (index_of_first_selected_item > 0) { try { objectListView_data_table1.EnsureVisible(index_of_first_selected_item - 1); } catch { } } else if (index_of_first_selected_item >= 0) { try { objectListView_data_table1.EnsureVisible(index_of_first_selected_item); } catch { } } } // try to leave one unselected row at the bottom if (index_of_last_selected_item >= 0) { if (index_of_last_selected_item < list_data_table.Count - 1) { try { objectListView_data_table1.EnsureVisible(index_of_last_selected_item + 1); } catch { } } else if (index_of_last_selected_item < list_data_table.Count) { try { objectListView_data_table1.EnsureVisible(index_of_last_selected_item); } catch { } } } item_selection_done_by_code = false; }