private void UpdateDropdown <T>(
            List <T> items,
            CustomDropdown dropdown,
            ItemNameDelegate <T> itemName,
            Sprite icon,
            OnSelectDelegate <T> onSelect,
            int selectedItemIndex)
        {
            List <CustomDropdown.Item> dropdownItems = new List <CustomDropdown.Item>(items.Count);

            for (int i = 0; i < items.Count; i++)
            {
                var currIndex = i;
                T   currItem  = (T)items[currIndex];

                var onSelectEvent = new UnityEvent();
                onSelectEvent.AddListener(() => { onSelect(currItem, currIndex); });
                CustomDropdown.Item newItem = new CustomDropdown.Item()
                {
                    itemName        = itemName(currItem, currIndex),
                    itemIcon        = icon,
                    OnItemSelection = onSelectEvent,
                };

                dropdownItems.Add(newItem);
            }

            dropdown.dropdownItems     = dropdownItems;
            dropdown.selectedItemIndex = selectedItemIndex < dropdownItems.Count ? selectedItemIndex : 0;

            dropdown.enabled = false;
            dropdown.enabled = true;
        }
    private void Start()
    {
        _dropdown.dropdownItems.Clear();

        foreach (var formula in _formulaContainer.Formulas)
        {
            formula.OnCalculate.AddListener(() => CreateResults(formula));

            var item = new CustomDropdown.Item();
            item.itemName = formula.name;
            if (item.OnItemSelection == null)
            {
                item.OnItemSelection = new UnityEvent();
            }
            item.OnItemSelection.AddListener(() =>
            {
                _formulaSliderBehaviour.SetFormula(formula);
                CreateResults(formula);
                CreateConstants(formula);
            });

            _dropdown.dropdownItems.Add(item);
        }
        _dropdown.SetupDropdown();
    }
    public void Init(List <string> robotNames, UnityAction <string> callback, string selectedRobotName = null)
    {
        Dropdown.Dropdown.dropdownItems.Clear();
        int selectedItemIndex = 0;

        foreach (string robotName in robotNames)
        {
            CustomDropdown.Item item = new CustomDropdown.Item {
                itemName = robotName
            };
            if (robotName == selectedRobotName)
            {
                selectedItemIndex = Dropdown.Dropdown.dropdownItems.Count;
            }
            if (callback != null)
            {
                if (item.OnItemSelection == null)
                {
                    item.OnItemSelection = new UnityEvent();
                }
                item.OnItemSelection.AddListener(() => callback(robotName));
            }
            Dropdown.Dropdown.dropdownItems.Add(item);
        }
        if (Dropdown.Dropdown.dropdownItems.Count > 0)
        {
            Dropdown.Dropdown.selectedItemIndex = selectedItemIndex;
            Dropdown.Dropdown.SetupDropdown();
        }
    }
Beispiel #4
0
 public void PutData(List <string> data, UnityAction <string> onChangeCallback)
 {
     foreach (string ee in data)
     {
         CustomDropdown.Item item = new CustomDropdown.Item {
             itemName = ee
         };
         if (onChangeCallback != null)
         {
             if (item.OnItemSelection == null)
             {
                 item.OnItemSelection = new UnityEvent();
             }
             item.OnItemSelection.AddListener(() => onChangeCallback(ee));
         }
         Dropdown.Dropdown.dropdownItems.Add(item);
     }
     if (Dropdown.Dropdown.dropdownItems.Count > 0)
     {
         if (Dropdown.Dropdown.selectedItemIndex >= Dropdown.Dropdown.dropdownItems.Count)
         {
             Dropdown.Dropdown.selectedItemIndex = 0;
         }
         Dropdown.Dropdown.SetupDropdown();
         gameObject.SetActive(true);
     }
     else
     {
         gameObject.SetActive(false);
     }
 }
    public void UpdateOrientations()
    {
        CustomDropdown orientationDropdown = OrientationsList.Dropdown;

        orientationDropdown.dropdownItems.Clear();
        foreach (IO.Swagger.Model.NamedOrientation orientation in CurrentActionPoint.GetNamedOrientations())
        {
            CustomDropdown.Item item = new CustomDropdown.Item {
                itemName = orientation.Name
            };
            orientationDropdown.dropdownItems.Add(item);
        }
        if (orientationDropdown.dropdownItems.Count == 0)
        {
            OrientationsList.gameObject.SetActive(false);
            NoOrientation.gameObject.SetActive(true);
            UpdateOrientationBtn.interactable = false;
        }
        else
        {
            NoOrientation.gameObject.SetActive(false);
            OrientationsList.gameObject.SetActive(true);
            orientationDropdown.enabled = true;
            orientationDropdown.SetupDropdown();
            UpdateOrientationBtn.interactable = true;
        }
    }
    public void Init(List <string> robotNames, UnityAction <string> callback)
    {
        Dropdown.Dropdown.dropdownItems.Clear();

        foreach (string robotName in robotNames)
        {
            CustomDropdown.Item item = new CustomDropdown.Item {
                itemName = robotName
            };
            string robot_id = SceneManager.Instance.RobotNameToId(robotName);
            if (callback != null)
            {
                if (item.OnItemSelection == null)
                {
                    item.OnItemSelection = new UnityEvent();
                }
                item.OnItemSelection.AddListener(() => callback(robot_id));
            }
            Dropdown.Dropdown.dropdownItems.Add(item);
        }
        if (Dropdown.Dropdown.dropdownItems.Count > 0)
        {
            Dropdown.Dropdown.SetupDropdown();
        }
    }
Beispiel #7
0
    public virtual void PutData(List <string> data, string selectedItem, UnityAction callback)
    {
        List <CustomDropdown.Item> items = new List <CustomDropdown.Item>();

        foreach (string d in data)
        {
            CustomDropdown.Item item = new CustomDropdown.Item {
                itemName = d
            };
            items.Add(item);
        }
        PutData(items, selectedItem, callback);
    }
    public void PutData(Dictionary <string, bool> data, string selectedItem, UnityAction <string> callback)
    {
        List <CustomDropdown.Item> items = new List <CustomDropdown.Item>();

        foreach (KeyValuePair <string, bool> d in data)
        {
            CustomDropdown.Item item = new CustomDropdown.Item {
                itemName = d.Key
            };
            items.Add(item);
        }
        PutData(items, selectedItem, callback);
    }
Beispiel #9
0
    public virtual void PutData(List <string> data, string selectedItem, UnityAction <string> callback, List <string> labels = null)
    {
        Debug.Assert(labels == null || labels.Count == data.Count);
        List <CustomDropdown.Item> items = new List <CustomDropdown.Item>();

        for (int i = 0; i < data.Count; ++i)
        {
            CustomDropdown.Item item = new CustomDropdown.Item {
                itemName = labels == null ? data[i] : labels[i]
            };
            items.Add(item);
        }
        PutData(items, selectedItem, callback);
    }
    //Converts data to Item object, and adds it to dropdownItems List.
    public virtual void DataToItem(string name, Sprite sprite)
    {
        CustomDropdown.Item item = new CustomDropdown.Item
        {
            itemName        = name,
            itemIcon        = sprite,
            OnItemSelection = new UnityEngine.Events.UnityEvent()
        };

        customDropdown.dropdownItems.Add(item);

        item.OnItemSelection.AddListener(delegate()
        {
            customDropdown.ChangeDropdownInfo(customDropdown.dropdownItems.IndexOf(item));
        });
    }
    protected override void UpdateUI()
    {
        var enumValues = System.Enum.GetNames(propertyInfo.PropertyType);

        for (int i = 0; i < enumValues.Length; i++)
        {
            CustomDropdown.Item item = new CustomDropdown.Item();
            item.itemName        = enumValues[i];
            item.OnItemSelection = new UnityEngine.Events.UnityEvent();
            item.OnItemSelection.AddListener(delegate { OnEndEdit(i); });

            customDropdown.InstantiateDropdownItem(item);
        }

        UpdateValue();
    }
 public void PutData(List <string> data)
 {
     foreach (string ee in data)
     {
         CustomDropdown.Item item = new CustomDropdown.Item {
             itemName = ee
         };
         Dropdown.Dropdown.dropdownItems.Add(item);
     }
     if (Dropdown.Dropdown.dropdownItems.Count > 0)
     {
         Dropdown.Dropdown.SetupDropdown();
         gameObject.SetActive(true);
     }
     else
     {
         gameObject.SetActive(false);
     }
 }
Beispiel #13
0
    private List <CustomDropdown.Item> _CreateItemList(List <Transform> list)
    {
        List <CustomDropdown.Item> _list = new List <CustomDropdown.Item>();

        for (int i = 0; i < list.Count; i++)
        {
            var l = list[i];
            if (l == null)
            {
                continue;
            }
            var item = new CustomDropdown.Item
            {
                itemName = l.gameObject.name,
                itemIcon = m_LocationMark,
            };
            _list.Add(item);
        }
        return(_list);
    }
Beispiel #14
0
    public void PutData(List <IO.Swagger.Model.ProjectRobotJoints> robotJoints, string selectedItem, UnityAction callback)
    {
        List <CustomDropdown.Item> items = new List <CustomDropdown.Item>();

        foreach (IO.Swagger.Model.ProjectRobotJoints joints in robotJoints)
        {
            CustomDropdown.Item item = new CustomDropdown.Item {
                itemName = joints.Name
            };
            if (joints.IsValid)
            {
                item.itemIcon = ValidIcon;
            }
            else
            {
                item.itemIcon = InvalidIcon;
            }
            items.Add(item);
        }
        PutData(items, selectedItem, callback);
    }
Beispiel #15
0
    private bool cancelCallbackInvoked; //flag: only cancel callback should be invoked if canceled

    /// <summary>
    ///
    /// </summary>
    /// <param name="projectParameter"></param>
    public async Task <bool> Init(System.Action <string> onCloseCallback, System.Action onCancelCallback, ProjectParameter projectParameter = null, string ofType = null)
    {
        this.projectParameter = projectParameter;
        isNewConstant         = projectParameter == null;
        this.onCloseCallback  = onCloseCallback;
        this.onCancelCallback = onCancelCallback;
        cancelCallbackInvoked = false;

        dropdown.Dropdown.dropdownItems.Clear();
        foreach (string type in Enum.GetNames(typeof(ProjectParameterTypes)))
        {
            CustomDropdown.Item item = new CustomDropdown.Item {
                itemName        = type,
                OnItemSelection = new UnityEvent()
            };
            item.OnItemSelection.AddListener(() => OnTypeSelected(type));
            dropdown.Dropdown.dropdownItems.Add(item);
        }


        if (isNewConstant)
        {
            Title.text = "New project parameter";
            removeButton.SetActive(false);
            nameInput.SetValue("");
            valueInput.SetValue("");
            OnTypeSelected(ofType == null ? ProjectParameterTypes.integer : ProjectParametersHelper.ConvertStringParameterTypeToEnum(ofType));
            dropdown.Dropdown.selectedItemIndex = (int)selectedType;
            dropdown.Dropdown.SetupDropdown();
            dropdown.Dropdown.GetComponent <Button>().interactable = ofType == null;
        }
        else     //editing constant
        {
            try {
                await WebsocketManager.Instance.WriteLock(projectParameter.Id, false);

                Title.text = "Edit project parameter";
                removeButton.SetActive(true);
                nameInput.SetValue(projectParameter.Name);
                OnTypeSelected(projectParameter.Type);
                dropdown.Dropdown.selectedItemIndex = (int)selectedType;
                dropdown.Dropdown.SetupDropdown();
                dropdown.Dropdown.GetComponent <Button>().interactable = false;

                object value = ProjectParametersHelper.GetValue(projectParameter.Value, selectedType);
                if (selectedType == ProjectParameterTypes.boolean)
                {
                    trueToggle.isOn = (bool)value;
                }
                else
                {
                    valueInput.SetValue(value);
                }
            } catch (RequestFailedException e) {
                Notifications.Instance.ShowNotification("Failed to lock " + projectParameter.Name, e.Message);
                this.projectParameter = null;
                return(false);
            }
        }
        return(true);
    }