public void use_the_builder_func_from_the_constructor_to_build_the_string_converter() { ValueConverter converter = new LambdaValueConverter(x => 1, "do something here?"); var family = new ConverterFamily(null, (r, t) => converter, "something"); family.Build(null, null).ShouldBeTheSameAs(converter); }
public NumberNodeViewModel(object parentNode, NumberModel model) : base(model) { _parentNode = parentNode; Items = new ObservableCollection <NumberNodeViewModel>(); var converter = new LambdaValueConverter <IDraggable, NumberModel>( d => (d is NumberViewModel) ? (d as NumberViewModel).Model : null, nm => new NumberNodeViewModel(this, nm)); DragHelper = new LambdaDragHelper <NumberModel>(converter, () => GetAllSubItems(true).Select(nvm => nvm.Model).ToList(), nms => DragDropEffectsEx.Move, (nms, eff) => { if (parentNode is NumberNodeViewModel) { (parentNode as NumberNodeViewModel).Items.Remove(this); } else if (parentNode is NumberTreeViewModel) { (parentNode as NumberTreeViewModel).Items.Remove(this); } //foreach (var nm in nms) // Items.Remove(new NumberNodeViewModel(this, nm)); } ); DropHelper = new LambdaDropHelper <NumberModel>(converter, (nms, eff) => { foreach (var nm in nms) { if (Items.Any(ivm => ivm.Model.Equals(nm))) { return(QueryDropEffects.None); } } return(QueryDropEffects.CreateNew(DragDropEffectsEx.Move)); }, (nms, eff) => { foreach (var nm in nms) { Items.Add(new NumberNodeViewModel(this, nm)); } return(DragDropEffectsEx.Move); }) { DisplayName = "Node " + model.Value.ToString() }; }
public NumberListViewModel(string displayName) { Items = new ObservableCollection <NumberViewModel>(); //Convert from IDraggable (implemented by ViewModel) //to Model (value transferred from dragsource to drop target). var converter = new LambdaValueConverter <IDraggable, NumberModel>( d => (d is NumberViewModel) ? (d as NumberViewModel).Model : null, nm => new NumberViewModel(nm)); DragHelper = new LambdaDragHelper <NumberModel>(converter, //GetModels() () => Items.Where(nvm => nvm.IsSelected).Select(nvm => nvm.Model).ToList(), nms => DragDropEffectsEx.Move, //OnQueryDrag(models) (nms, eff) => { //OnDropCompleted(models, dropEffect) foreach (var nm in nms) { Items.Remove(new NumberViewModel(nm)); } } ); DropHelper = new LambdaDropHelper <NumberModel>(converter, (nms, eff) => { //OnQueryDrop(models, possibleEffects) foreach (var nm in nms) { if (Items.Any(ivm => ivm.Model.Equals(nm))) { return(QueryDropEffects.None); } } return(QueryDropEffects.CreateNew(DragDropEffectsEx.Move)); }, (nms, eff) => { //OnDrop(models, possibleEffects) foreach (var nm in nms) { Items.Add(new NumberViewModel(nm)); } return(DragDropEffectsEx.Move); }) { DisplayName = displayName }; }
public NumberTreeViewModel(string displayName) { Items = new ObservableCollection <NumberNodeViewModel>(); var converter = new LambdaValueConverter <IDraggable, NumberModel>( d => (d is NumberViewModel) ? (d as NumberViewModel).Model : null, nm => new NumberNodeViewModel(this, nm)); DragHelper = new LambdaDragHelper <NumberModel>(converter, () => Items.Where(nvm => nvm.IsSelected).Select(nvm => nvm.Model).ToList(), nms => DragDropEffectsEx.Move, (nms, eff) => { foreach (var nm in nms) { Items.Remove(new NumberNodeViewModel(this, nm)); } } ); DropHelper = new LambdaDropHelper <NumberModel>(converter, (nms, eff) => { foreach (var nm in nms) { if (Items.Any(ivm => ivm.Model.Equals(nm))) { return(QueryDropEffects.None); } } return(QueryDropEffects.CreateNew(DragDropEffectsEx.Move)); }, (nms, eff) => { foreach (var nm in nms) { Items.Add(new NumberNodeViewModel(this, nm)); } return(DragDropEffectsEx.Move); }) { DisplayName = displayName }; }
public FileBasedDragDropHandler(IProfile profile, Func <IEntryModel, bool> getIsVirtualFunc = null) { _profile = profile; _fsiProfile = profile is FileSystemInfoProfile ? (FileSystemInfoProfile)profile : new FileSystemInfoProfile(profile.Events); _getIsVirtualFunc = getIsVirtualFunc ?? (em => true); TransferCommand = new DiskTransfer(); //new FileExplorer.Script.TransferCommand((effect, source, destDir) => // source.Profile is IDiskProfile ? // IOScriptCommands.DiskTransfer(source, destDir, effect == DragDropEffectsEx.Move, true) // : ResultCommand.Error(new NotSupportedException()) // ); converter = LambdaValueConverter.ConvertUsingCast <IDraggable, IEntryModel>(); dataObjConverter = new LambdaValueConverter <IEnumerable <IEntryModel>, IDataObject>( ems => getDataObject(ems), da => getEntryModels(da)); }