private void radioBttnRoomHost_Checked(object sender, RoutedEventArgs e)
 {
     if (null != toolSettings)
     {
         bool islinkedRoom = (bool)radioBttnRoomLink.IsChecked;
         treeViewRoom.ItemsSource = null;
         treeViewRoom.ItemsSource = TreeviewModel.SetTreeView(roomDictionary, islinkedRoom);
     }
 }
        private bool DisplayRooms()
        {
            bool result = false;

            try
            {
                Dictionary <int /*roomId*/, RoomElevationProperties> roomsStored = ElevationCreatorDataStorageUtil.GetRoomElevationProperties(m_doc, linkedDocuments);
                roomDictionary = GetRoomsProperties(roomsStored);

                treeViewRoom.ItemsSource = TreeviewModel.SetTreeView(roomDictionary, toolSettings.IsLinkedRoom);
                result = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Failed to display rooms.\n" + ex.Message, "Elevation Creator: DisplayRooms", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
            return(result);
        }
        public static List <TreeviewModel> SetTreeView(Dictionary <int, RoomElevationProperties> dictionary, bool isLinkedRoom)
        {
            List <TreeviewModel> treeView = new List <TreeviewModel>();

            try
            {
                foreach (RoomElevationProperties rep in dictionary.Values)
                {
                    if (rep.IsLinked == isLinkedRoom)
                    {
                        TreeviewModel roomItem = new TreeviewModel(rep);
                        treeView.Add(roomItem);

                        List <TreeviewModel> childrenList = new List <TreeviewModel>();
                        foreach (int markId in rep.ElevationViews.Keys)
                        {
                            foreach (ElevationViewProperties evp in rep.ElevationViews[markId].Values)
                            {
                                TreeviewModel viewItem = new TreeviewModel(evp);
                                childrenList.Add(viewItem);
                            }
                        }

                        childrenList      = childrenList.OrderBy(child => child.name).ToList();
                        roomItem.Children = childrenList;
                        roomItem.Initialize();
                    }
                }
                treeView = treeView.OrderBy(item => item.Name).ToList();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Failed to create the tree view for the rooms.\n" + ex.Message, "Room Elevation Creator", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
            return(treeView);
        }
        private void buttonCreateByList_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (SetToolSettings())
                {
                    List <RoomElevationProperties> selectedRooms = new List <RoomElevationProperties>();

                    List <TreeviewModel> treeviewModels = treeViewRoom.ItemsSource as List <TreeviewModel>;
                    foreach (TreeviewModel roomNode in treeviewModels)
                    {
                        if (roomNode.IsChecked == true)
                        {
                            if (null != roomNode.RoomProperties)
                            {
                                RoomElevationProperties rep = roomNode.RoomProperties;
                                selectedRooms.Add(rep);
                            }
                        }
                    }

                    if (selectedRooms.Count > 0)
                    {
                        progressBar.Visibility = System.Windows.Visibility.Visible;
                        statusLable.Visibility = System.Windows.Visibility.Visible;
                        statusLable.Text       = "Creating Elevation Views . . .";

                        progressBar.Minimum = 0;
                        progressBar.Maximum = selectedRooms.Count;
                        progressBar.Value   = 0;

                        double value = 0;
                        UpdateProgressBarDelegate updatePdDelegate = new UpdateProgressBarDelegate(progressBar.SetValue);

                        foreach (RoomElevationProperties rep in selectedRooms)
                        {
                            ElevationCreator creator = new ElevationCreator(m_app, rep, toolSettings, linkedDocuments);
                            if (creator.CheckExisting())
                            {
                                if (creator.CreateElevationByList())
                                {
                                    RoomElevationProperties roomProperties = new RoomElevationProperties(creator.RoomProperties);
                                    if (roomDictionary.ContainsKey(roomProperties.RoomId))
                                    {
                                        roomDictionary.Remove(roomProperties.RoomId);
                                    }
                                    roomDictionary.Add(roomProperties.RoomId, roomProperties);
                                }
                            }

                            value += 1;
                            Dispatcher.Invoke(updatePdDelegate, System.Windows.Threading.DispatcherPriority.Background, new object[] { ProgressBar.ValueProperty, value });
                        }

                        statusLable.Text       = "Ready";
                        progressBar.Visibility = System.Windows.Visibility.Hidden;

                        treeViewRoom.ItemsSource = null;
                        treeViewRoom.ItemsSource = TreeviewModel.SetTreeView(roomDictionary, toolSettings.IsLinkedRoom);

                        if (LogMessageBuilder.GetLogMessages().Length > 0)
                        {
                            LogMessageBox logMessageBox = new LogMessageBox();
                            logMessageBox.Show();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Failed to start creating elevation views by rooms lists.\n" + ex.Message, "Elevation Creator: CreateByRoomList", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
        }