示例#1
0
        // Generate the breadcrumb
        public void GenerateBreadcrumb(MenuEntryData inputData)
        {
            Console.Instance.Write(DebugLevel.Full, MessageLevel.Log, "Generating breadcrumb"); // Write to console
            switch (inputData.id.currentLevel)                                                  // Switch based on current menu level and setup all entries
            {
            case -1:                                                                            // Home
                breadcrumb.suite.Setup(inputData, 1, 0);
                breadcrumb.type.Setup(inputData, 1, 1);
                breadcrumb.group.Setup(inputData, 1, 2);
                break;

            case 0:         // Suite
                breadcrumb.suite.Setup(inputData, 0, 0);
                breadcrumb.type.Setup(inputData, 1, 1);
                breadcrumb.group.Setup(inputData, 1, 2);
                break;

            case 1:         // Type
                breadcrumb.suite.Setup(inputData, 2, 0);
                breadcrumb.type.Setup(inputData, 0, 1);
                breadcrumb.group.Setup(inputData, 1, 2);
                break;

            case 2:         // Scene
                breadcrumb.suite.Setup(inputData, 2, 0);
                breadcrumb.type.Setup(inputData, 2, 1);
                breadcrumb.group.Setup(inputData, 0, 2);
                break;
            }
        }
示例#2
0
        // Clone a MenuEntryData class
        public MenuEntryData CloneMenuEntryData(MenuEntryData input)
        {
            MenuEntryData output = new MenuEntryData();

            output.entryName      = input.entryName;
            output.selectionState = input.selectionState;
            output.id             = CloneMenuTestEntry(input.id);
            return(output);
        }
示例#3
0
        // ------------------------------------------------------------------------------------
        // Initialization

        // Setup the entry
        public void Setup(MenuEntryData data)
        {
            Console.Instance.Write(DebugLevel.Full, MessageLevel.Log, "Setting up menu list entry"); // Write to console
            entryData       = Menu.Instance.CloneMenuEntryData(data);                                // Clone the entry data
            entryLabel.text = entryData.entryName;                                                   // Set label text
            selectionToggle.Setup(this);                                                             // Setup the selection toggle
            selectionToggle.SetSelectionState(entryData.selectionState);                             // Set selection state of the toggle
            mainButton.onClick.RemoveAllListeners();                                                 // Remove button listeners
            mainButton.onClick.AddListener(delegate { Menu.Instance.OnListEntryClick(this); });      // Add listener
        }
示例#4
0
        // Called every time a breadcrumb entry is clicked (button listener)
        public void OnBreadcrumbEntryClick(MenuBreadcrumbEntry clicked)
        {
            Console.Instance.Write(DebugLevel.Full, MessageLevel.Log, "Clicked: Breadcrumb entry"); // Write to console
            MenuEntryData entryData = CloneMenuEntryData(clicked.entryData);                        // Clone the entry data of the clicked entry

            ClearList();                                                                            // Clear the list
            selectedId = entryData.id;                                                              // Set selected id
            GenerateBreadcrumb(clicked.entryData);                                                  // Generate new breadcrumb
            selectedId.currentLevel++;                                                              // Increment current level
            GenerateList();                                                                         // Generate a new list
            CheckViewButtonStatus();                                                                // Check view button status
        }
示例#5
0
        // Master class for setting selection state recursively down the hierarchy. Calls sub-function per level for every necessary level
        void SetSelectionStateOnChildren(MenuEntryData entryData)
        {
            switch (entryData.id.currentLevel)
            {
            case 0:         // Suite
                SetSelectionOfLevelDownward(entryData, 0);
                break;

            case 1:         // Type
                SetSelectionOfLevelDownward(entryData, 1);
                break;

            case 2:         // Scene
                SetSelectionOfLevelDownward(entryData, 2);
                break;
            }
            Console.Instance.Write(DebugLevel.Full, MessageLevel.Log, "Changed selection state for all children of entry " + entryData.entryName); // Write to console
        }
示例#6
0
        // Master class for setting selection state recursively up the hierarchy. Calls sub-function per level for every necessary level
        void SetSelectionStateOnParents(MenuEntryData entryData)
        {
            switch (entryData.id.currentLevel)
            {
            case 1:         // Type
                SetSelectionOfLevelUpward(entryData, 0);
                break;

            case 2:         // Scene
                SetSelectionOfLevelUpward(entryData, 1);
                SetSelectionOfLevelUpward(entryData, 0);
                break;

            case 3:         // Test
                SetSelectionOfLevelUpward(entryData, 2);
                SetSelectionOfLevelUpward(entryData, 1);
                SetSelectionOfLevelUpward(entryData, 0);
                break;
            }
            Console.Instance.Write(DebugLevel.Full, MessageLevel.Log, "Changed selection state for all parents of entry " + entryData.entryName); // Write to console
        }
示例#7
0
        // Set a selection state of a specific level based on its immediate children
        void SetSelectionOfLevelDownward(MenuEntryData entryData, int setLevel) // TODO - Can we shorten this?
        {
            switch (setLevel)
            {
            case 0:         // Suite
                for (int ty = 0; ty < testStructure.suites[entryData.id.suiteId].types.Count; ty++)
                {
                    testStructure.suites[entryData.id.suiteId].types[ty].selectionState = entryData.selectionState;
                    for (int gr = 0; gr < testStructure.suites[entryData.id.suiteId].types[ty].groups.Count; gr++)
                    {
                        testStructure.suites[entryData.id.suiteId].types[ty].groups[gr].selectionState = entryData.selectionState;
                        for (int te = 0; te < testStructure.suites[entryData.id.suiteId].types[ty].groups[gr].tests.Count; te++)
                        {
                            testStructure.suites[entryData.id.suiteId].types[ty].groups[gr].tests[te].selectionState = entryData.selectionState;
                        }
                    }
                }
                break;

            case 1:         // Type
                for (int gr = 0; gr < testStructure.suites[entryData.id.suiteId].types[entryData.id.typeId].groups.Count; gr++)
                {
                    testStructure.suites[entryData.id.suiteId].types[entryData.id.typeId].groups[gr].selectionState = entryData.selectionState;
                    for (int te = 0; te < testStructure.suites[entryData.id.suiteId].types[entryData.id.typeId].groups[gr].tests.Count; te++)
                    {
                        testStructure.suites[entryData.id.suiteId].types[entryData.id.typeId].groups[gr].tests[te].selectionState = entryData.selectionState;
                    }
                }
                break;

            case 2:         // Scene
                for (int i = 0; i < testStructure.suites[entryData.id.suiteId].types[entryData.id.typeId].groups[entryData.id.groupId].tests.Count; i++)
                {
                    testStructure.suites[entryData.id.suiteId].types[entryData.id.typeId].groups[entryData.id.groupId].tests[i].selectionState = entryData.selectionState;
                }
                break;
            }
        }
示例#8
0
        // ------------------------------------------------------------------------------------
        // Initialization

        // Setup the breacrumb
        public void Setup(MenuEntryData data, int state, int level)
        {
            Console.Instance.Write(DebugLevel.Full, MessageLevel.Log, "Setting up menu breadcrumb entry"); // Write to console
            switch (state)
            {
            case 0:                                                                                                                                                           // New
                entryData = Menu.Instance.CloneMenuEntryData(data);                                                                                                           // Clone the entry data
                mainButton.onClick.RemoveAllListeners();                                                                                                                      // Remove listeners
                mainButton.onClick.AddListener(delegate { Menu.Instance.OnBreadcrumbEntryClick(this); });                                                                     // Add listener
                entryLabel.text         = TestStructure.Instance.GetNameOfEntry(level, entryData.id.suiteId, entryData.id.typeId, entryData.id.groupId, entryData.id.testId); // Get the label text
                entryLabel.color        = Menu.Instance.GetColor(0);                                                                                                          // Set color
                mainButton.interactable = true;                                                                                                                               // Set interactable
                break;

            case 1:                                                          // Clear
                entryLabel.text         = Menu.Instance.GetLevelName(level); // Get level name and set to label
                entryLabel.color        = Menu.Instance.GetColor(1);         // Set color
                mainButton.interactable = false;                             // Set non-interactable
                break;

            case 2:         // Ignore
                break;
            }
        }
示例#9
0
        // ------------------------------------------------------------------------------------
        // Set Selection
        // - TODO - Clean and comment this

        public void SetSelectionState(MenuEntryData entryData)
        {
            switch (entryData.id.currentLevel)
            {
            case 0:         // Suite
                testStructure.suites[entryData.id.suiteId].selectionState = entryData.selectionState;
                break;

            case 1:         // Type
                testStructure.suites[entryData.id.suiteId].types[entryData.id.typeId].selectionState = entryData.selectionState;
                break;

            case 2:         // Scene
                testStructure.suites[entryData.id.suiteId].types[entryData.id.typeId].groups[entryData.id.groupId].selectionState = entryData.selectionState;
                break;

            case 3:         // Test
                testStructure.suites[entryData.id.suiteId].types[entryData.id.typeId].groups[entryData.id.groupId].tests[entryData.id.testId].selectionState = entryData.selectionState;
                break;
            }
            SetSelectionStateOnChildren(entryData);
            SetSelectionStateOnParents(entryData);
            Console.Instance.Write(DebugLevel.Full, MessageLevel.Log, "Changed selection state for entry " + entryData.entryName); // Write to console
        }
示例#10
0
        // Set a selection state of a specific level based on its immediate children
        void SetSelectionOfLevelUpward(MenuEntryData entryData, int setLevel) // TODO - Can we shorten this?
        {
            int x = 0;

            switch (setLevel)
            {
            case 0:         // Suite
                for (int i = 0; i < testStructure.suites[entryData.id.suiteId].types.Count; i++)
                {
                    if (testStructure.suites[entryData.id.suiteId].types[i].selectionState == 2)
                    {
                        break;
                    }
                    else if (testStructure.suites[entryData.id.suiteId].types[i].selectionState == 0)
                    {
                        x--;
                    }
                    else
                    {
                        x++;
                    }
                }
                if (x == testStructure.suites[entryData.id.suiteId].types.Count)
                {
                    testStructure.suites[entryData.id.suiteId].selectionState = 1;
                }
                else if (x == -testStructure.suites[entryData.id.suiteId].types.Count)
                {
                    testStructure.suites[entryData.id.suiteId].selectionState = 0;
                }
                else
                {
                    testStructure.suites[entryData.id.suiteId].selectionState = 2;
                }
                break;

            case 1:         // Type
                for (int i = 0; i < testStructure.suites[entryData.id.suiteId].types[entryData.id.typeId].groups.Count; i++)
                {
                    if (testStructure.suites[entryData.id.suiteId].types[entryData.id.typeId].groups[i].selectionState == 2)
                    {
                        break;
                    }
                    else if (testStructure.suites[entryData.id.suiteId].types[entryData.id.typeId].groups[i].selectionState == 0)
                    {
                        x--;
                    }
                    else
                    {
                        x++;
                    }
                }
                if (x == testStructure.suites[entryData.id.suiteId].types[entryData.id.typeId].groups.Count)
                {
                    testStructure.suites[entryData.id.suiteId].types[entryData.id.typeId].selectionState = 1;
                }
                else if (x == -testStructure.suites[entryData.id.suiteId].types[entryData.id.typeId].groups.Count)
                {
                    testStructure.suites[entryData.id.suiteId].types[entryData.id.typeId].selectionState = 0;
                }
                else
                {
                    testStructure.suites[entryData.id.suiteId].types[entryData.id.typeId].selectionState = 2;
                }
                break;

            case 2:         // Scene
                for (int i = 0; i < testStructure.suites[entryData.id.suiteId].types[entryData.id.typeId].groups[entryData.id.groupId].tests.Count; i++)
                {
                    if (testStructure.suites[entryData.id.suiteId].types[entryData.id.typeId].groups[entryData.id.groupId].tests[i].selectionState == 2)
                    {
                        break;
                    }
                    else if (testStructure.suites[entryData.id.suiteId].types[entryData.id.typeId].groups[entryData.id.groupId].tests[i].selectionState == 0)
                    {
                        x--;
                    }
                    else
                    {
                        x++;
                    }
                }
                if (x == testStructure.suites[entryData.id.suiteId].types[entryData.id.typeId].groups[entryData.id.groupId].tests.Count)
                {
                    testStructure.suites[entryData.id.suiteId].types[entryData.id.typeId].selectionState = 1;
                }
                else if (x == -testStructure.suites[entryData.id.suiteId].types[entryData.id.typeId].groups[entryData.id.groupId].tests.Count)
                {
                    testStructure.suites[entryData.id.suiteId].types[entryData.id.typeId].groups[entryData.id.groupId].selectionState = 0;
                }
                else
                {
                    testStructure.suites[entryData.id.suiteId].types[entryData.id.typeId].groups[entryData.id.groupId].selectionState = 2;
                }
                break;
            }
        }
示例#11
0
 // Get a list of entries at a specific level
 public MenuEntryData[] GetEntries(MenuTestEntry input) // TODO - Can we shorten this?
 {
     MenuEntryData[] output = null;
     if (input.currentLevel == 0)
     {
         output = new MenuEntryData[testStructure.suites.Count];
     }
     for (int su = 0; su < testStructure.suites.Count; su++)
     {
         if (input.currentLevel == 0)
         {
             MenuEntryData entry = new MenuEntryData();
             MenuTestEntry id    = Menu.Instance.CloneMenuTestEntry(input);
             id.suiteId           = su;                      // Replace relevent data
             entry.entryName      = testStructure.suites[su].suiteName;
             entry.selectionState = testStructure.suites[su].selectionState;
             entry.id             = id;
             output[su]           = entry;
         }
         if (input.currentLevel >= 1)
         {
             if (su == input.suiteId)
             {
                 if (input.currentLevel == 1)
                 {
                     output = new MenuEntryData[testStructure.suites[su].types.Count];
                 }
                 for (int ty = 0; ty < testStructure.suites[su].types.Count; ty++)
                 {
                     if (input.currentLevel == 1 && su == input.suiteId)
                     {
                         MenuEntryData entry = new MenuEntryData();
                         MenuTestEntry id    = Menu.Instance.CloneMenuTestEntry(input);
                         id.currentLevel      = 1;                       // Replace relevent data
                         id.suiteId           = su;                      // Replace relevent data
                         id.typeId            = ty;                      // Replace relevent data
                         entry.entryName      = testStructure.suites[su].types[ty].typeName;
                         entry.selectionState = testStructure.suites[su].types[ty].selectionState;
                         entry.id             = id;
                         output[ty]           = entry;
                     }
                     if (input.currentLevel >= 2)
                     {
                         if (ty == input.typeId)
                         {
                             if (input.currentLevel == 2)
                             {
                                 output = new MenuEntryData[testStructure.suites[su].types[ty].groups.Count];
                             }
                             for (int gr = 0; gr < testStructure.suites[su].types[ty].groups.Count; gr++)
                             {
                                 if (input.currentLevel == 2 && ty == input.typeId)
                                 {
                                     MenuEntryData entry = new MenuEntryData();
                                     MenuTestEntry id    = Menu.Instance.CloneMenuTestEntry(input);
                                     id.currentLevel      = 2;                       // Replace relevent data
                                     id.suiteId           = su;                      // Replace relevent data
                                     id.typeId            = ty;                      // Replace relevent data
                                     id.groupId           = gr;                      // Replace relevent data
                                     entry.entryName      = testStructure.suites[su].types[ty].groups[gr].groupName;
                                     entry.selectionState = testStructure.suites[su].types[ty].groups[gr].selectionState;
                                     entry.id             = id;
                                     output[gr]           = entry;
                                 }
                                 if (input.currentLevel >= 3)
                                 {
                                     if (gr == input.groupId)
                                     {
                                         if (input.currentLevel == 3)
                                         {
                                             output = new MenuEntryData[testStructure.suites[su].types[ty].groups[gr].tests.Count];
                                         }
                                         for (int te = 0; te < testStructure.suites[su].types[ty].groups[gr].tests.Count; te++)
                                         {
                                             if (input.currentLevel == 3 && gr == input.groupId)
                                             {
                                                 MenuEntryData entry = new MenuEntryData();
                                                 MenuTestEntry id    = Menu.Instance.CloneMenuTestEntry(input);
                                                 id.currentLevel      = 3;                       // Replace relevent data
                                                 id.suiteId           = su;                      // Replace relevent data
                                                 id.typeId            = ty;                      // Replace relevent data
                                                 id.groupId           = gr;                      // Replace relevent data
                                                 id.testId            = te;                      // Replace relevent data
                                                 entry.entryName      = testStructure.suites[su].types[ty].groups[gr].tests[te].testName;
                                                 entry.selectionState = testStructure.suites[su].types[ty].groups[gr].tests[te].selectionState;
                                                 entry.id             = id;
                                                 output[te]           = entry;
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     Console.Instance.Write(DebugLevel.Full, MessageLevel.Log, "Returned entry list for level " + input.currentLevel); // Write to console
     return(output);
 }