private void SetupDropdownForProjectParameters(string type, object value) { if (ProjectParametersHelper.TypeSupported(type)) { List <string> projectParameters = new List <string>(); List <string> labels = new List <string>(); string selectedLabel = null; foreach (IO.Swagger.Model.ProjectParameter pp in ProjectManager.Instance.ProjectParameters.Where(c => c.Type == type).OrderBy(p => p.Name)) { projectParameters.Add(pp.Name); labels.Add($"{pp.Name}: {ProjectParameterHelper.GetValue(pp)}"); if (value != null && pp.Id == JsonConvert.DeserializeObject <string>(value.ToString())) { selectedLabel = labels.Last(); } } projectParameters.Add(NewProjectParameterText); labels.Add(NewProjectParameterText); ActionsDropdown.PutData(projectParameters, selectedLabel, OnProjectParameterPicked, labels); dropdownIndexSelected = ActionsDropdown.Dropdown.selectedItemIndex; } else { ActionsDropdown.PutData(new List <string>(), "", OnProjectParameterPicked); } }
private void OnProjectParameterUpdated(object sender, ProjectParameterEventArgs args) { if (args.ProjectParameter.Id != Id) { return; } SetName(args.ProjectParameter.Name); SetValue(ProjectParametersHelper.GetValue(args.ProjectParameter.Value, ProjectParametersHelper.ConvertStringParameterTypeToEnum(args.ProjectParameter.Type))); }
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); }
private void OnTypeSelected(string type) { ProjectParameterTypes typeEnum = ProjectParametersHelper.ConvertStringParameterTypeToEnum(type); OnTypeSelected(typeEnum); }