public static ExampleOperationViewModel CreateDefaultExampleOperationViewModel(SchemaModel schemaModel, Pt position) { var exampleOperationModel = new ExampleOperationModel(schemaModel); var exampleOperationViewModel = new ExampleOperationViewModel(exampleOperationModel); exampleOperationViewModel.Position = position; addAttachmentViewModels(exampleOperationViewModel); createBottomExampleMenu(exampleOperationViewModel); createRightExampleMenu(exampleOperationViewModel); createLeftExampleMenu(exampleOperationViewModel); return(exampleOperationViewModel); }
private static void createRightExampleMenu(ExampleOperationViewModel exampleOperationViewModel) { var attachmentViewModel = exampleOperationViewModel.AttachementViewModels.First( avm => avm.AttachmentOrientation == AttachmentOrientation.Right); var menuViewModel = new MenuViewModel { AttachmentOrientation = attachmentViewModel.AttachmentOrientation, NrColumns = 3, NrRows = 1 }; var sliderItem = new MenuItemViewModel { MenuViewModel = menuViewModel, Row = 0, ColumnSpan = 1, RowSpan = 1, Column = 0, Position = exampleOperationViewModel.Position, Size = new Vec(100, 50), TargetSize = new Vec(100, 50), IsAlwaysDisplayed = false, IsWidthBoundToParent = false, IsHeightBoundToParent = false }; var attr1 = new SliderMenuItemComponentViewModel { Label = "dummy slider", Value = exampleOperationViewModel.ExampleOperationModel.DummyValue, MinValue = 1, MaxValue = 100 }; attr1.PropertyChanged += (sender, args) => { var model = sender as SliderMenuItemComponentViewModel; if (args.PropertyName == model.GetPropertyName(() => model.FinalValue)) { exampleOperationViewModel.ExampleOperationModel.DummyValue = model.FinalValue; } attachmentViewModel.ActiveStopwatch.Restart(); }; sliderItem.MenuItemComponentViewModel = attr1; menuViewModel.MenuItemViewModels.Add(sliderItem); attachmentViewModel.MenuViewModel = menuViewModel; }
private static void createLeftExampleMenu(ExampleOperationViewModel exampleOperationViewModel) { var attachmentViewModel = exampleOperationViewModel.AttachementViewModels.First( avm => avm.AttachmentOrientation == AttachmentOrientation.Left); var menuViewModel = new MenuViewModel { AttachmentOrientation = attachmentViewModel.AttachmentOrientation, NrColumns = 1, NrRows = 3 }; attachmentViewModel.MenuViewModel = menuViewModel; var toggles = new List <ToggleMenuItemComponentViewModel>(); var items = new List <MenuItemViewModel>(); var count = 0; foreach (var exampleOperationType in new[] { ExampleOperationType.A, ExampleOperationType.B, ExampleOperationType.C }) { var toggleMenuItem = new MenuItemViewModel { MenuViewModel = menuViewModel, Row = count, RowSpan = 0, Column = 0, Position = exampleOperationViewModel.Position, Size = new Vec(50, 32), TargetSize = new Vec(50, 32) }; var toggle = new ToggleMenuItemComponentViewModel { Label = exampleOperationType.ToString().ToLower(), IsChecked = exampleOperationViewModel.ExampleOperationModel.ExampleOperationType == exampleOperationType }; toggles.Add(toggle); toggleMenuItem.MenuItemComponentViewModel = toggle; toggleMenuItem.MenuItemComponentViewModel.PropertyChanged += (sender2, args2) => { var model = sender2 as ToggleMenuItemComponentViewModel; if (args2.PropertyName == model.GetPropertyName(() => model.IsChecked)) { if (model.IsChecked) { attachmentViewModel.ActiveStopwatch.Restart(); exampleOperationViewModel.ExampleOperationModel.ExampleOperationType = exampleOperationType; foreach (var tg in model.OtherToggles) { tg.IsChecked = false; } } } }; menuViewModel.MenuItemViewModels.Add(toggleMenuItem); items.Add(toggleMenuItem); count++; } foreach (var mi in items) { (mi.MenuItemComponentViewModel as ToggleMenuItemComponentViewModel).OtherToggles.AddRange(toggles.Where(ti => ti != mi.MenuItemComponentViewModel)); } }
private static void createBottomExampleMenu(ExampleOperationViewModel exampleOperationViewModel) { var attachmentViewModel = exampleOperationViewModel.AttachementViewModels.First( avm => avm.AttachmentOrientation == AttachmentOrientation.Bottom); attachmentViewModel.ShowOnAttributeMove = true; var menuViewModel = new MenuViewModel { AttachmentOrientation = attachmentViewModel.AttachmentOrientation, NrColumns = 3, NrRows = 1 }; var addMenuItem = new MenuItemViewModel { MenuViewModel = menuViewModel, Row = 0, ColumnSpan = 1, RowSpan = 1, Column = 0, Size = new Vec(25, 25), TargetSize = new Vec(25, 25), IsAlwaysDisplayed = false, IsWidthBoundToParent = false, IsHeightBoundToParent = false, Position = exampleOperationViewModel.Position }; var attr1 = new AttributeTransformationMenuItemViewModel { Label = "+", TextBrush = new SolidColorBrush(Helpers.GetColorFromString("#171717")), CanDrag = false, CanDrop = true }; attr1.DroppedTriggered = attributeTransformationModel => { exampleOperationViewModel.ExampleOperationModel.AttributeUsageTransformationModels.Add(attributeTransformationModel); }; addMenuItem.MenuItemComponentViewModel = attr1; menuViewModel.MenuItemViewModels.Add(addMenuItem); attachmentViewModel.MenuViewModel = menuViewModel; exampleOperationViewModel.ExampleOperationModel.AttributeUsageTransformationModels.CollectionChanged += (sender, args) => { var coll = sender as ObservableCollection <AttributeTransformationModel>; // remove old ones first if (args.OldItems != null) { foreach (var oldItem in args.OldItems) { var oldAttributeTransformationModel = oldItem as AttributeTransformationModel; var found = menuViewModel.MenuItemViewModels.FirstOrDefault(mvm => (((AttributeTransformationMenuItemViewModel)mvm.MenuItemComponentViewModel).AttributeTransformationViewModel != null) && (((AttributeTransformationMenuItemViewModel)mvm.MenuItemComponentViewModel).AttributeTransformationViewModel.AttributeTransformationModel == oldAttributeTransformationModel)); if (found != null) { menuViewModel.MenuItemViewModels.Remove(found); } } } menuViewModel.NrRows = (int)Math.Ceiling(coll.Count / 3.0) + 1; addMenuItem.Row = menuViewModel.NrRows - 1; // add new ones if (args.NewItems != null) { foreach (var newItem in args.NewItems) { var newAttributeTransformationModel = newItem as AttributeTransformationModel; var newMenuItem = new MenuItemViewModel { MenuViewModel = menuViewModel, Size = new Vec(50, 50), TargetSize = new Vec(50, 50), Position = addMenuItem.Position }; var newAttr = new AttributeTransformationMenuItemViewModel { Label = newAttributeTransformationModel.GetLabel(), AttributeTransformationViewModel = new AttributeTransformationViewModel(exampleOperationViewModel, newAttributeTransformationModel), TextBrush = new SolidColorBrush(Helpers.GetColorFromString("#29aad5")), CanDrag = false, CanDrop = false }; newMenuItem.Deleted += (sender1, args1) => { var atm = ((AttributeTransformationMenuItemViewModel)((MenuItemViewModel)sender1).MenuItemComponentViewModel).AttributeTransformationViewModel.AttributeTransformationModel; exampleOperationViewModel.ExampleOperationModel.AttributeUsageTransformationModels.Remove(atm); }; newMenuItem.MenuItemComponentViewModel = newAttr; menuViewModel.MenuItemViewModels.Add(newMenuItem); } } var count = 0; foreach (var menuItemViewModel in menuViewModel.MenuItemViewModels.Where(mvm => mvm != addMenuItem)) { menuItemViewModel.Column = count % 3; menuItemViewModel.Row = (int)Math.Floor(count / 3.0); count++; } attachmentViewModel.ActiveStopwatch.Restart(); menuViewModel.FireUpdate(); }; }