public override void undo()
        {
            _ullv.Items.Remove(_lviDroped);
            Course     dropedCourse = (Course)_lviDroped.Tag;
            EduProgram ep           = (EduProgram)dropedCourse.Parent;

            ep.removeOneLessonFromUnallocatedLessonsModel(dropedCourse);
            AppForm.CURR_OCTT_DOC.decrUnallocatedLessonsCounter(1);

            if (dropedCourse.getCoursesToHoldTogetherList().Count > 0)
            {
                foreach (Course courseHT in dropedCourse.getCoursesToHoldTogetherList())
                {
                    EduProgram epHT = (EduProgram)courseHT.Parent;
                    epHT.removeOneLessonFromUnallocatedLessonsModel(courseHT);
                }
            }

            AppForm.getAppForm().getStatusBarPanel2().Text = AppForm.CURR_OCTT_DOC.getNumOfUnallocatedLessonsStatusText();

            if (AppForm.getAppForm().getTreeTabControl().SelectedIndex != 1)
            {
                AppForm.getAppForm().getTreeTabControl().SelectedIndexChanged -= new System.EventHandler(AppForm.getAppForm().treeTabControl_SelectedIndexChanged);
                AppForm.getAppForm().getTreeTabControl().SelectedIndex         = 1;
                AppForm.getAppForm().getTreeTabControl().SelectedIndexChanged += new System.EventHandler(AppForm.getAppForm().treeTabControl_SelectedIndexChanged);
            }

            AppForm.getAppForm().getTeachersTreeView().AfterSelect -= new System.Windows.Forms.TreeViewEventHandler(AppForm.getAppForm().teachersTreeView_AfterSelect);
            AppForm.getAppForm().getTeachersTreeView().SelectedNode = _selectedNode;
            AppForm.getAppForm().getTeachersTreeView().AfterSelect += new System.Windows.Forms.TreeViewEventHandler(AppForm.getAppForm().teachersTreeView_AfterSelect);

            AppForm.getAppForm().ttvRefreshTimetablePanel(_selectedNode, false);
        }
        public override void doit()
        {
            AppForm.CURR_OCTT_DOC.decrUnallocatedLessonsCounter(1);
            _unallocatedLessonsTeacherListView.Items.Remove(_dragedLvi);
            Course dragedCourse = (Course)_dragedLvi.Tag;

            EduProgram epInDrag = (EduProgram)dragedCourse.Parent;

            epInDrag.removeOneLessonFromUnallocatedLessonsModel(dragedCourse);


            if (dragedCourse.getCoursesToHoldTogetherList().Count > 0)
            {
                foreach (Course courseHT in dragedCourse.getCoursesToHoldTogetherList())
                {
                    EduProgram epHT = (EduProgram)courseHT.Parent;
                    epHT.removeOneLessonFromUnallocatedLessonsModel(courseHT);

                    ListViewItem itemForDel = null;
                    foreach (ListViewItem listViewItem in _unallocatedLessonsTeacherListView.Items)
                    {
                        Course tagCourse = (Course)listViewItem.Tag;
                        if (tagCourse == courseHT)
                        {
                            itemForDel = listViewItem;
                            break;
                        }
                    }

                    _unallocatedLessonsTeacherListView.Items.Remove(itemForDel);
                }
            }

            AppForm.getAppForm().getStatusBarPanel2().Text = AppForm.CURR_OCTT_DOC.getNumOfUnallocatedLessonsStatusText();
        }
        public override void doit()
        {
            _unallocatedLessonsListView.Items.Remove(_dragedLvi);
            Course     dragedCourse = (Course)_dragedLvi.Tag;
            EduProgram ep           = (EduProgram)dragedCourse.Parent;

            ep.removeOneLessonFromUnallocatedLessonsModel(dragedCourse);
            AppForm.CURR_OCTT_DOC.decrUnallocatedLessonsCounter(1);

            if (dragedCourse.getCoursesToHoldTogetherList().Count > 0)
            {
                foreach (Course courseHT in dragedCourse.getCoursesToHoldTogetherList())
                {
                    EduProgram epHT = (EduProgram)courseHT.Parent;
                    epHT.removeOneLessonFromUnallocatedLessonsModel(courseHT);
                }
            }

            AppForm.getAppForm().getStatusBarPanel2().Text = AppForm.CURR_OCTT_DOC.getNumOfUnallocatedLessonsStatusText();
        }
Exemple #4
0
        private void acceptTheBestSolution()
        {
            /*foreach (ACourse ac in _aglobal._allACourses)
             * {
             *  Console.WriteLine("------------");
             *  Console.WriteLine(ac.Name);
             *  foreach (ALessonNode aln in ac.MyAllLessonNodesForAllocation)
             *  {
             *      Console.WriteLine(aln.PositionInGlobalBestSolution);
             *  }
             *
             * }*/

            if (_isRunFromEmptySolution)
            {
                foreach (EduProgramGroup epg in AppForm.CURR_OCTT_DOC.CoursesRootNode.Nodes)
                {
                    foreach (EduProgram ep in epg.Nodes)
                    {
                        ep.setTimetable(new ArrayList[AppForm.CURR_OCTT_DOC.IncludedTerms.Count, AppForm.CURR_OCTT_DOC.getNumberOfDays()]);

                        AppForm.CURR_OCTT_DOC.TotalNumberOfUnallocatedLessons = 0;
                        ep.setUnallocatedLessonsList(new ArrayList());
                    }
                }
            }


            foreach (EduProgramGroup epg in AppForm.CURR_OCTT_DOC.CoursesRootNode.Nodes)
            {
                foreach (EduProgram ep in epg.Nodes)
                {
                    foreach (Course course in ep.Nodes)
                    {
                        int epgIndex    = AppForm.CURR_OCTT_DOC.CoursesRootNode.Nodes.IndexOf(epg);
                        int epIndex     = epg.Nodes.IndexOf(ep);
                        int courseIndex = ep.Nodes.IndexOf(course);

                        ACourse ac = (ACourse)_coursesMapping[epgIndex + "," + epIndex + "," + courseIndex];
                        if (ac != null && !ac.IsHTCourse)
                        {
                            foreach (ALessonNode aln in ac.MyAllLessonNodesForAllocation)
                            {
                                //Console.WriteLine(aln.PositionInBestSolution);
                                int indexRow, indexCol, roomIndex;
                                this.convertNumberOfTimeSlotToRowColumnAndRoom(aln.PositionInGlobalBestSolution, out indexRow, out indexCol, out roomIndex);
                                Room room = (Room)_sortedRoomsRelCapacityList[roomIndex];

                                ArrayList[,] mytt = ep.getTimetable();
                                ArrayList lessonsInOneTimeSlot;
                                if (mytt[indexRow, indexCol] == null)
                                {
                                    lessonsInOneTimeSlot = new ArrayList();
                                }
                                else
                                {
                                    lessonsInOneTimeSlot = mytt[indexRow, indexCol];
                                }


                                Object[] courseAndRoomPair = new Object[2];
                                courseAndRoomPair[0] = course;
                                courseAndRoomPair[1] = room;

                                lessonsInOneTimeSlot.Add(courseAndRoomPair);
                                mytt[indexRow, indexCol] = lessonsInOneTimeSlot;

                                //
                                if (!_isRunFromEmptySolution)
                                {
                                    ep.removeOneLessonFromUnallocatedLessonsModel(course);
                                    AppForm.CURR_OCTT_DOC.decrUnallocatedLessonsCounter(1);
                                }
                                //

                                if (course.getCoursesToHoldTogetherList().Count > 0)
                                {
                                    foreach (Course courseHT in course.getCoursesToHoldTogetherList())
                                    {
                                        EduProgram epHT = (EduProgram)courseHT.Parent;
                                        ArrayList[,] myttHT = epHT.getTimetable();

                                        ArrayList lessonsInOneTimeSlotHT;
                                        if (myttHT[indexRow, indexCol] == null)
                                        {
                                            lessonsInOneTimeSlotHT = new ArrayList();
                                        }
                                        else
                                        {
                                            lessonsInOneTimeSlotHT = myttHT[indexRow, indexCol];
                                        }

                                        Object[] courseAndRoomPairHT = new Object[2];

                                        courseAndRoomPairHT[0] = courseHT;
                                        courseAndRoomPairHT[1] = room;

                                        lessonsInOneTimeSlotHT.Add(courseAndRoomPairHT);
                                        myttHT[indexRow, indexCol] = lessonsInOneTimeSlotHT;

                                        //
                                        if (!_isRunFromEmptySolution)
                                        {
                                            epHT.removeOneLessonFromUnallocatedLessonsModel(courseHT);
                                        }
                                        //
                                    }
                                }
                            }
                        }
                    }
                }
            }

            //

            _acceptBestSolutionButton.Enabled = false;
            AppForm.getAppForm().getStatusBarPanel2().Text = AppForm.CURR_OCTT_DOC.getNumOfUnallocatedLessonsStatusText();
            AppForm.getAppForm().getCommandProcessor().emptyAllStacks();
            AppForm.getAppForm().getCommandProcessor().setUnReButtonState();

            int      tabIndex    = AppForm.getAppForm().getTreeTabControl().SelectedIndex;
            TreeNode workingNode = null;

            if (tabIndex == 0)
            {
                workingNode = AppForm.getAppForm().getCoursesTreeView().SelectedNode;
                if (workingNode == null)
                {
                    workingNode = AppForm.CURR_OCTT_DOC.CoursesRootNode;
                }
                AppForm.CURR_OCTT_DOC.CTVSelectedNode = workingNode;
                AppForm.getAppForm().ctvRefreshTimetablePanel(workingNode, true, true);

                AppForm.getAppForm().getCoursesTreeView().AfterSelect -= new System.Windows.Forms.TreeViewEventHandler(AppForm.getAppForm().coursesTreeView_AfterSelect);
                AppForm.getAppForm().getCoursesTreeView().SelectedNode = workingNode;
                AppForm.getAppForm().getCoursesTreeView().AfterSelect += new System.Windows.Forms.TreeViewEventHandler(AppForm.getAppForm().coursesTreeView_AfterSelect);
            }
            else if (tabIndex == 1)
            {
                workingNode = AppForm.getAppForm().getTeachersTreeView().SelectedNode;
                if (workingNode == null)
                {
                    workingNode = AppForm.CURR_OCTT_DOC.TeachersRootNode;
                }
                AppForm.getAppForm().getTeachersTreeView().AfterSelect -= new System.Windows.Forms.TreeViewEventHandler(AppForm.getAppForm().teachersTreeView_AfterSelect);
                AppForm.getAppForm().getTeachersTreeView().SelectedNode = workingNode;
                AppForm.getAppForm().getTeachersTreeView().AfterSelect += new System.Windows.Forms.TreeViewEventHandler(AppForm.getAppForm().teachersTreeView_AfterSelect);

                AppForm.CURR_OCTT_DOC.TTVSelectedNode = workingNode;
                AppForm.getAppForm().ttvRefreshTimetablePanel(workingNode, true);
            }
            else if (tabIndex == 2)
            {
                workingNode = AppForm.getAppForm().getRoomsTreeView().SelectedNode;
                if (workingNode == null)
                {
                    workingNode = AppForm.CURR_OCTT_DOC.RoomsRootNode;
                }
                AppForm.getAppForm().getRoomsTreeView().AfterSelect -= new System.Windows.Forms.TreeViewEventHandler(AppForm.getAppForm().roomsTreeView_AfterSelect);
                AppForm.getAppForm().getRoomsTreeView().SelectedNode = workingNode;
                AppForm.getAppForm().getRoomsTreeView().AfterSelect += new System.Windows.Forms.TreeViewEventHandler(AppForm.getAppForm().roomsTreeView_AfterSelect);

                AppForm.CURR_OCTT_DOC.RTVSelectedNode = workingNode;
                AppForm.getAppForm().rtvRefreshTimetablePanel(workingNode, true);
            }
        }