/// <summary> /// When editRoofButton was click, then create a new RoofEditorForm to edit the selected roof. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void editRoofButton_Click(object sender, EventArgs e) { if (this.footPrintRoofsListView.SelectedItems.Count != 0 || this.extrusionRoofsListView.SelectedItems.Count != 0) { RoofItem item = null; if (this.roofsTabControl.SelectedTab == this.footprintRoofTabPage) { item = this.footPrintRoofsListView.SelectedItems[0] as RoofItem; } else { item = this.extrusionRoofsListView.SelectedItems[0] as RoofItem; } if (item != null) { EditRoofItem(item.ListView, item); } } else { TaskDialog.Show("Revit", "To edit a roof, you should select a roof or double click a roof in the list first."); } }
/// <summary> /// Edit a roof's properties. /// </summary> /// <param name="item">It contains a roof element.</param> private void EditRoofItem(object sender, RoofItem item) { try { m_roofsManager.BeginTransaction(); DialogResult result = DialogResult.None; using (RoofEditorForm editorForm = new RoofEditorForm(m_roofsManager, item.Roof)) { result = editorForm.ShowDialog(); } if (result == DialogResult.OK) { if (m_roofsManager.EndTransaction() == TransactionStatus.Committed) { ListView listView = sender as ListView; if (item.Update()) { listView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); } else { m_roofsManager.FootPrintRoofs.Erase(item.Roof); listView.Items.Remove(item); listView.Refresh(); } } else { m_roofsManager.AbortTransaction(); } } else { m_roofsManager.AbortTransaction(); } } catch (Exception ex) { TaskDialog.Show("Revit", ex.Message); m_roofsManager.AbortTransaction(); } }
/// <summary> /// When the event occurred, then create a new RoofEditorForm to edit the roof. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void roofsListView_MouseDoubleClick(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { RoofItem item = null; if (this.roofsTabControl.SelectedTab == this.footprintRoofTabPage) { item = this.footPrintRoofsListView.GetItemAt(e.X, e.Y) as RoofItem; } else { item = this.extrusionRoofsListView.GetItemAt(e.X, e.Y) as RoofItem; } if (item != null) { EditRoofItem(sender, item); } } }
/// <summary> /// Edit a roof's properties. /// </summary> /// <param name="item">It contains a roof element.</param> private void EditRoofItem(object sender, RoofItem item) { try { m_roofsManager.BeginTransaction(); DialogResult result = DialogResult.None; using (RoofEditorForm editorForm = new RoofEditorForm(m_roofsManager, item.Roof)) { result = editorForm.ShowDialog(); } if (result == DialogResult.OK) { if (m_roofsManager.EndTransaction() == TransactionStatus.Committed) { ListView listView = sender as ListView; if (item.Update()) { listView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); } else { m_roofsManager.FootPrintRoofs.Erase(item.Roof); listView.Items.Remove(item); listView.Refresh(); } } else { m_roofsManager.AbortTransaction(); } } else { m_roofsManager.AbortTransaction(); } } catch (Exception ex) { MessageBox.Show(ex.Message); m_roofsManager.AbortTransaction(); } }