private void LoescheSortierung(DataView View) { BindingListCollectionView BindingView; View.Sort = ""; BindingView = (BindingListCollectionView)(CollectionViewSource.GetDefaultView(View)); BindingView.SortDescriptions.Clear(); BindingView.Refresh(); }
public virtual void AddChild(BindingView view) { _children.Add(view); view.Parent = this; var viewTransform = view.transform; viewTransform.SetParent(Container); viewTransform.localScale = Vector3.one; viewTransform.localPosition = Vector3.zero; }
private void AddNewBinding(List <TypeBinding> bindings) { var binding = new TypeBinding(); var view = new BindingView() { Binding = binding }; bindings.Add(binding); _editorViews.Add(view); }
public override void OnInspectorGUI() { serializedObject.Update(); ViewRegistry registry = (ViewRegistry)target; Setup(registry); if (_types.Count < 1) { EditorGUILayout.LabelField( "No IView interfaces found." ); return; } foreach (BindingView view in _editorViews) { DrawBinding(view); } List <TypeBinding> bindings = registry.Bindings; if (GUILayout.Button("+")) { AddNewBinding(bindings); } if (_bindingToRemove != null) { int bindingIndex = _editorViews.IndexOf(_bindingToRemove); BindingView view = _editorViews[bindingIndex]; bindings.Remove(view.Binding); _editorViews.RemoveAt(bindingIndex); _bindingToRemove = null; } serializedObject.ApplyModifiedProperties(); // TODO: Only set dirty when data is changed. EditorUtility.SetDirty(registry); }
private void Setup(ViewRegistry view) { if (_view == view) { return; } foreach (TypeBinding binding in view.Bindings) { int typeIndex = GetIndexFromQualifiedTypeName(binding.TypeName); Type bindingType = GetTypeFromIndex(typeIndex); var bindingView = new BindingView() { Binding = binding, TypeIndex = typeIndex }; TagTypeData tagData = null; if (bindingType != null) { _tagTypes.TryGetValue(bindingType, out tagData); } foreach (BindingTarget target in binding.Targets) { int tagIndex = 0; if (tagData != null) { tagIndex = tagData.Values.IndexOf(target.Tag); } var targetView = new TargetView() { Target = target, TagIndex = tagIndex }; bindingView.TargetViews.Add(targetView); } _editorViews.Add(bindingView); } _view = view; }
public virtual void RemoveChild(BindingView view) { _children.Remove(view); view.Parent = null; Destroy(view.gameObject); }
private void DrawBinding(BindingView view) { TypeBinding binding = view.Binding; // Fold EditorGUILayout.BeginHorizontal(); bool isFoldOpen = view.IsFoldOpen; string foldName = _typeDisplayNamesArray[view.TypeIndex]; isFoldOpen = EditorGUILayout.Foldout(isFoldOpen, foldName); view.IsFoldOpen = isFoldOpen; // Add button if (isFoldOpen) { if (GUILayout.Button("Add Target")) { var target = new BindingTarget(); binding.Targets.Add(target); view.TargetViews.Add(new TargetView() { Target = target }); } } if (GUILayout.Button("-", GUILayout.MaxWidth(32))) { _bindingToRemove = view; } EditorGUILayout.EndHorizontal(); // Fold Contents if (isFoldOpen) { // Type selector int oldSelectedIndex = view.TypeIndex; int selectedIndex = EditorGUILayout.Popup( oldSelectedIndex, _typeDisplayNamesArray ); Type bindingType = GetTypeFromIndex(selectedIndex); if (selectedIndex != oldSelectedIndex) { if (bindingType != null) { binding.TypeName = bindingType.AssemblyQualifiedName; } view.TypeIndex = selectedIndex; } ++EditorGUI.indentLevel; if (bindingType != null) { foreach (TargetView targetView in view.TargetViews) { DrawTarget(targetView, bindingType); } } if (_targetToRemove != null) { binding.Targets.Remove(_targetToRemove.Target); view.TargetViews.Remove(_targetToRemove); _targetToRemove = null; } --EditorGUI.indentLevel; EditorGUILayout.Space(); } }