private void MenuItem_RenameFolder(object sender, RoutedEventArgs e)
        {
            //get data form context
            var tmp    = (MenuItem)e.Source;
            var folder = (Folder)tmp.DataContext;

            if (folder == null)
            {
                MessageBox.Show("Please select a Project", "Error"
                                , MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            //Userinteraction
            var dialog = new InputDialog("Please enter the folder name:", "Example Folder");

            dialog.ResizeMode = ResizeMode.NoResize;
            dialog.ShowDialog();
            if (dialog.DialogResult == true)
            {
                folder.Name = dialog.Answer.Trim();
            }
            dialog.Close();
            //Refresh layout
            TreeViewFolder.Items.Refresh();
            TreeViewPlans.Items.Refresh();
            TreeViewProjects.Items.Refresh();
        }
        private void MenuItem_AddRole(object sender, RoutedEventArgs e)
        {
            if (activePermission == null)
            {
                return;
            }
            //ask user about the role
            var dialog = new InputDialog("Please enter the Role name:", "Example Role");

            dialog.ResizeMode = ResizeMode.NoResize;
            dialog.ShowDialog();
            if (dialog.DialogResult == true)
            {
                //remove empty Role
                foreach (var iter in activePermission.AssignedUsers.IndustryRoles.ToList())
                {
                    if (string.IsNullOrWhiteSpace(iter))
                    {
                        activePermission.AssignedUsers.IndustryRoles.Remove(iter);
                    }
                }

                activePermission.AssignedUsers.IndustryRoles.Add(dialog.Answer);
            }

            dialog.Close();
            //refresh layout
            RoleView.Items.Refresh();
        }
        private void MenuItem_ProjectRename(object sender, RoutedEventArgs e)
        {
            //Get the clicked MenuItem
            var menuItem = (MenuItem)sender;
            //Get the ContextMenu to which the menuItem belongs
            var contextMenu = (ContextMenu)menuItem.Parent;
            //Find the placementTarget
            var item = (DataGrid)contextMenu.PlacementTarget;
            //Get the underlying item
            //if(item.SelectedCells[0].Item.GetType().Equals())
            var toModifyFromList = (Bim360Project)item.SelectedCells[0].Item;

            if (toModifyFromList == null)
            {
                MessageBox.Show("Please select a Project", "Error"
                                , MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            var dialog = new InputDialog("Please enter the new Project name:", "Example Project");

            dialog.ResizeMode = ResizeMode.NoResize;
            dialog.ShowDialog();
            if (dialog.DialogResult == true)
            {
                toModifyFromList.ProjectName = dialog.Answer;
            }
            dialog.Close();
            //refresh layout
            ProjectsView.Items.Refresh();
        }
        private void MenuItem_FolderNeighbor(object sender, RoutedEventArgs e)
        {
            var tmp    = (MenuItem)e.Source;
            var folder = (Folder)tmp.DataContext;

            if (folder == null)
            {
                MessageBox.Show("Please select a Project", "Error"
                                , MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            var dialog = new InputDialog("Please enter the folder name:", "folder01");

            dialog.ResizeMode = ResizeMode.NoResize;
            dialog.ShowDialog();
            if (dialog.DialogResult == true)
            {
                folder.RootFolder.AddSubFolder(dialog.Answer);
            }
            dialog.Close();
            //Refresh layout
            TreeViewFolder.Items.Refresh();
            TreeViewPlans.Items.Refresh();
            TreeViewProjects.Items.Refresh();
        }
        private void MenuItem_RootFolderChild(object sender, RoutedEventArgs e)
        {
            if (activeProject == null)
            {
                MessageBox.Show("Please select a Project", "Error"
                                , MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            var menuItem = (MenuItem)sender;
            //Get the ContextMenu to which the menuItem belongs
            var contextMenu = (ContextMenu)menuItem.Parent;
            //Find the placementTarget
            var item = (TreeViewItem)contextMenu.PlacementTarget;
            //Get the underlying item
            Folder folder;

            if (item.Header.ToString() == "Plans")
            {
                folder = activeProject.Plans;
            }
            else if (item.Header.ToString() == "Project Files")
            {
                folder = activeProject.ProjectFiles;
            }
            else
            {
                //this should never happen
                return;
            }

            var dialog = new InputDialog("Please enter the folder name:", "Example Folder");

            dialog.ResizeMode = ResizeMode.NoResize;
            dialog.ShowDialog();
            if (dialog.DialogResult == true)
            {
                folder.AddSubFolder(dialog.Answer);
            }

            dialog.Close();
            //refresh layout
            TreeViewFolder.Items.Refresh();
            TreeViewPlans.Items.Refresh();
            TreeViewProjects.Items.Refresh();
        }