public void SetUp() { _settings = new Tailviewer.Settings.DataSources(); _scheduler = new ManualTaskScheduler(); _dataSources = new DataSources(_scheduler, _settings); _model = new MergedDataSourceViewModel(_dataSources.AddGroup()); }
private void DragFromGroup(IDataSourceViewModel source, IDataSourceViewModel dest, MergedDataSourceViewModel parent) { parent.RemoveChild(source); DissolveGroupIfNecessary(parent); Drag(source, dest); }
private void Drag(IDataSourceViewModel source, IDataSourceViewModel dest) { var merged = dest as MergedDataSourceViewModel; if (merged != null) { // Drag from ungrouped onto an existing group // => add to existing group AddFileToGroup(source, merged); } else { // Drag from ungrouped onto a dest within a group // => find group of dest and addd to it merged = dest.Parent as MergedDataSourceViewModel; if (merged != null) { AddFileToGroup(source, merged); } else { // Drag from ungrouped onto another ungrouped source // => remove dest as well and create new group int destIndex = _observable.IndexOf(dest); if (destIndex != -1) { _observable.Remove(dest); MergedDataSource mergedDataSource = _dataSources.AddGroup(); merged = new MergedDataSourceViewModel(mergedDataSource); merged.Remove += OnRemove; merged.AddChild(source); merged.AddChild(dest); _observable.Insert(destIndex, merged); SelectedItem = merged; } } } }
private void DissolveGroupIfNecessary(MergedDataSourceViewModel group) { if (group.ChildCount == 1) { int groupIndex = _observable.IndexOf(group); _observable.RemoveAt(groupIndex); _dataSources.Remove(group.DataSource); IDataSourceViewModel child = group.Observable.First(); group.RemoveChild(child); _observable.Insert(groupIndex, child); } }
private IDataSourceViewModel CreateViewModel(IDataSource dataSource) { if (dataSource == null) throw new ArgumentNullException("dataSource"); IDataSourceViewModel viewModel; var single = dataSource as SingleDataSource; if (single != null) { viewModel = new SingleDataSourceViewModel(single); } else { var merged = dataSource as MergedDataSource; if (merged != null) { viewModel = new MergedDataSourceViewModel(merged); } else { throw new ArgumentException(string.Format("Unknown data source: {0} ({1})", dataSource, dataSource.GetType())); } } viewModel.Remove += OnRemove; _allDataSourceViewModels.Add(viewModel); if (_settings.DataSources.SelectedItem == viewModel.DataSource.Id) { SelectedItem = viewModel; } return viewModel; }
private static void AddFileToGroup(IDataSourceViewModel source, MergedDataSourceViewModel viewModel) { viewModel.AddChild(source); }