示例#1
0
        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);
        }
示例#2
0
        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;
        }
示例#3
0
        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));
            }
        }
示例#4
0
        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();
            };
        }