private void GenerateElements() { var propertiesToDisplay = CriterionStatement.GetType() .GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance) .Where(e => Attribute.IsDefined(e, typeof(CriterionDescriptionElementAttribute), true)); foreach (var propertyInfo in propertiesToDisplay) { if (typeof(IMutableField).IsAssignableFrom(propertyInfo.PropertyType)) { GenerateMutableBox(propertyInfo); } else if (propertyInfo.PropertyType == typeof(string)) { GenerateSymbol(propertyInfo); } else { throw new NotImplementedException("Cannot handle type " + propertyInfo.PropertyType); } } Resize(); }
private void RemoveCriterionStatementView(CriterionStatement criterionStatement) { var view = CriterionStatementViews.FirstOrDefault(v => v.CriterionStatement == criterionStatement); if (view == null) { throw new InvalidOperationException("Could not find view for criterion statement."); } view.BoundsChanged -= HandleCriteriaStatementViewBoundsChanged; Destroy(view.gameObject); CriterionStatementViews.Remove(view); UpdateHeight(); }
private void AddCriterionStatementView(CriterionStatement criterionStatement) { var go = Instantiate(CriterionStatementViewPrefab); var view = go.GetComponent <CriterionStatementViewBehaviour>(); view.BoundsChanged += HandleCriteriaStatementViewBoundsChanged; view.Initialize(criterionStatement, this); view.transform.SetParent(CriterionStatementViewAttachmentPoint, false); CriterionStatementViews.Add(view); AddButtonWrapper.SetAsLastSibling(); UpdateHeight(); }
public void Initialize(CriterionStatement criterionStatement, ISchemaProvider schemaProvider) { SchemaProvider = schemaProvider; CriterionStatement = criterionStatement; }
public void HandleRemoveButtonClicked() { CriterionStatement.RequestRemoval(); }
private void HandleCriteriaGroupCriterionAdded(CriterionStatement criterionStatement) { AddCriterionStatementView(criterionStatement); CriteriaChanged(); }
private void HandleCriteriaChanged(CriterionStatement updatedStatement) { CriteriaChanged(); }
private void HandleCriteriaGroupCriterionRemoved(CriterionStatement criterionStatement) { RemoveCriterionStatementView(criterionStatement); CriteriaChanged(); }