private static IModelGroup CreateNewGroup(IModelInspectorModel modelInspectorModel, string name) { ModelGroup Group = new ModelGroup(name); modelInspectorModel.Groups.Add(Group); return(Group); }
public ModelInspectorWindowModel(IModelInspectorModel model) { this.model = model; this.groupsAdapter = this.CreatePropertyAdapter( nameof(ModelInspectorWindowModel.Groups), () => model.Groups, group => new ModelGroupAdapter(this, group) ); this.dragDropHandler = DragDropTarget.GetFactory() .AddTypeHandler <ModelNodeBaseAdapter>( DragDropEffects.Copy, DragDropEffect.Copy, (value, effect, info) => { int Count = this.model.Groups.Count; int NewIndex = info.GetInfoOrDefault <DropIndex>(Count); IModelGroup NewGroup = new ModelGroup(value.Name); NewGroup.Models.Add(new ModelInfo(value.Model.Value, value.Name, false)); this.model.Groups.Insert(NewIndex, NewGroup); } ).AddTypeHandler <ModelInfoAdapter>( DragDropEffects.Move | DragDropEffects.Copy, DragDropEffect.Move, (value, effect, info) => { int NewIndex = info.GetInfoOrDefault <DropIndex>(this.model.Groups.Count); IModelGroup NewGroup = new ModelGroup(value.Name); NewGroup.Models.Add(new ModelInfo(value.Model.Root.Value, value.Model.Name, effect == DragDropEffect.Move?value.Model.NonClosable:false)); this.model.Groups.Insert(NewIndex, NewGroup); } ).AddTypeHandler <ModelGroupAdapter>( DragDropEffects.Move | DragDropEffects.Copy, DragDropEffect.Move, (value, effect, info) => { int NewIndex = info.GetInfoOrDefault <DropIndex>(this.model.Groups.Count); ModelGroup Group = new ModelGroup(value.Group.Name); value.Group.Models.ForEach(modelInfo => Group.Models.Add(new ModelInfo(modelInfo.Root.Value, modelInfo.Name, effect == DragDropEffect.Move?modelInfo.NonClosable:false))); this.model.Groups.Insert(NewIndex, Group); } ).Create(); this.ZoomModel = new ZoomModel(); #if DEBUG System.Windows.Threading.Dispatcher.CurrentDispatcher.BeginInvoke( (System.Action) delegate { ModelGroup Group = new ModelGroup("Model Inspector"); Group.Models.Add(new ModelInfo(this, "Model Inspector", true)); model.Groups.Add(Group); }); #endif }
public ModelInspector(IModelInspectorModel model, IModelInspectorWindow inspectorWindow) { this.model = model; this.inspectorWindow = inspectorWindow; }