void HandleToolboxGroupDrop(ToolboxGroup tbg)
        {
            GroupTypeOrder targetGroupTypeOrder = MyGroupTypeOrder;
            GroupType      draggedGroupType     = tbg.Group;

            GTViewModel.InsertGroup(targetGroupTypeOrder, draggedGroupType);
        }
        void HandleGroupTableDrop(object sender, DragEventArgs e)
        {
            Grid targetGroupTable      = e.Data.GetData("System.Windows.Controls.Grid") as Grid;
            GroupTableUserControl gtUC = (GroupTableUserControl)targetGroupTable.Parent;
            GroupTypeOrder        targetGroupTypeOrder = MyGroupTypeOrder;

            GroupTypeOrder draggedGroupTypeOrder = gtUC.MyGroupTypeOrder;

            if (!targetGroupTypeOrder.GroupTypeID.Equals(draggedGroupTypeOrder.GroupTypeID))
            {
                GTViewModel.HandleGroupTableDrop(targetGroupTypeOrder, draggedGroupTypeOrder);
            }
        }
        void HandleToolboxItemDrop(object sender, DragEventArgs e)
        {
            Border bCell = GetBorderByDropEvent(e);

            ListBoxItem   lbi         = e.Data.GetData("System.Windows.Controls.ListBoxItem") as ListBoxItem;
            ToolboxItem   tbi         = (ToolboxItem)lbi.Content;
            ItemTypeOrder itToBeMoved = (ItemTypeOrder)bCell.DataContext;
            GroupType     gt          = MyGroupTypeOrder.Group;

            GTViewModel.HandleToolboxItemDrop(gt, tbi, itToBeMoved);
            RefreshGroupTable();
            DisableAllowDropByNewLineItem();
        }
        void HandleItemTypeDrop(object sender, DragEventArgs e)
        {
            Border        target         = GetBorderByDropEvent(e);
            ItemTypeOrder targetItemType = (ItemTypeOrder)target.DataContext;


            Border         target2         = e.Data.GetData("System.Windows.Controls.Border") as Border;
            ItemTypeOrder  draggedItemType = (ItemTypeOrder)target2.DataContext;
            Grid           groupTable      = (Grid)target2.Parent;
            GroupTypeOrder gto             = GetGroupType(groupTable);
            GroupType      gt = gto.Group;

            GTViewModel.HandleDropAndDropBetweenItems(gt, targetItemType, draggedItemType);
            gt.ItemOrder.Sort(i => i.ItemOrder);
            RefreshGroupTable();
        }
        private void btnRemoveGroup_Click(object sender, RoutedEventArgs e)
        {
            if (MessageBox.Show("Are you sure?", "Confirmation", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
            {
                Button btn = sender as Button;
                btn.Visibility = Visibility.Hidden;
                StackPanel     sp       = (StackPanel)btn.Parent;
                Grid           gridCell = (Grid)sp.Parent;
                Border         border   = (Border)gridCell.Parent;
                GroupTypeOrder gto      = (GroupTypeOrder)border.DataContext;

                GTViewModel.RemoveGroup(gto);
                RefreshGroupTable();
                DisableAllowDropByNewLineItem();
            }
        }
        private void btnRemoveItem_Click(object sender, RoutedEventArgs e)
        {
            Button btn = sender as Button;

            btn.Visibility = Visibility.Hidden;

            Grid           gridCell       = (Grid)btn.Parent;
            Border         border         = (Border)gridCell.Parent;
            Grid           gridGroupTable = (Grid)border.Parent;
            GroupTypeOrder gto            = (GroupTypeOrder)gridGroupTable.DataContext;
            GroupType      gt             = gto.Group;

            ItemTypeOrder itToBeDeleted = (ItemTypeOrder)border.DataContext;

            //gt.ItemOrder.Remove(itToBeDeleted);
            GTViewModel.RemoveItemTypeOrder(gt, itToBeDeleted);
            GTViewModel.AdjustItemOrder(gt);
            RefreshGroupTable();
            DisableAllowDropByNewLineItem();
            PreviousGroupTypeOrder = null;
        }
        public void btnEditGroup_Click(object sender, RoutedEventArgs e)
        {
            // Instantiate the dialog box
            EditGroupDialogBox dlg = new EditGroupDialogBox();

            dlg.Title = "Edit Group - " + MyGroupTypeOrder.Group.GroupHeader;
            dlg.englishTextBox.Text = MyGroupTypeOrder.Group.EnglishTranslationText;
            dlg.danishTextBox.Text  = MyGroupTypeOrder.Group.DanishTranslationText;

            ObservableCollection <string> obscDepartmentList = new ObservableCollection <string>();
            int i = 0;

            while (i < GroupTypeOrderCollection.Count)
            {
                if (GroupTypeOrderCollection[i].GroupTypeID == MyGroupTypeOrder.GroupTypeID)
                {
                    obscDepartmentList.Add(GroupTypeOrderCollection[i].DepartmentID);
                }
                i++;
            }
            dlg.departmentUserControl.departmentsListBox.ItemsSource = obscDepartmentList;

            // Open the dialog box modally
            dlg.ShowDialog();

            // Process data entered by user if dialog box is accepted
            if (dlg.DialogResult == true)
            {
                List <string> departmentList = new List <string>();
                foreach (string s in dlg.departmentUserControl.departmentsListBox.Items)
                {
                    departmentList.Add(s);
                }
                GTViewModel.EditGroup(MyGroupTypeOrder, dlg.englishTextBox.Text, dlg.danishTextBox.Text, departmentList);
            }
        }