Example #1
0
            public NodeComponentRow(NodeComponent source, ObservableCollection <NodeComponent> sourceCollection)
            {
                Presenter = null;
                Layout    = new VBoxLayout();
                Nodes.Clear();
                var container = new Widget {
                    Anchors = Anchors.LeftRight,
                    Layout  = new VBoxLayout(),
                };

                PostPresenter = new WidgetBoundsPresenter(ColorTheme.Current.Inspector.CategoryLabelBackground)
                {
                    IgnorePadding = true
                };
                var content = new InspectorContent(container)
                {
                    History = history
                };

                content.OnComponentRemove += c => {
                    history.DoTransaction(() => Core.Operations.RemoveFromList.Perform(sourceCollection, sourceCollection.IndexOf(c)));
                };
                Nodes.Add(container);
                content.BuildForObjects(new List <object> {
                    source
                });
                Padding = new Thickness {
                    Bottom = 4f
                };
            }
Example #2
0
                public Item(Widget widget, Frame frame, WidgetInput input, bool showLabel)
                {
                    this.frame = frame;
                    var totalTime = 0d;

                    originalWidget = widget;
                    exposedWidget  = (Widget)widget.Clone();
                    exposedWidget.Animations.Clear();
                    originalTransform = widget.CalcTransitionToSpaceOf(frame).ToTransform2();
                    exposedTransform  = CalcExposedTransform(widget, frame);
                    originalWidget.SetTangerineFlag(TangerineFlags.HiddenOnExposition, true);
                    frame.HitTestTarget = true;
                    var clickArea = new Widget {
                        Size = frame.Size, Anchors = Anchors.LeftRightTopBottom, HitTestTarget = true
                    };

                    frame.AddNode(clickArea);
                    label = new ThemedSimpleText {
                        Visible      = showLabel,
                        Position     = new Vector2(3, 2),
                        Color        = ColorTheme.Current.SceneView.Label,
                        Text         = (exposedWidget.Id ?? ""),
                        OverflowMode = TextOverflowMode.Ignore
                    };
                    label.FontHeight *= 0.75f;
                    frame.AddNode(label);
                    frame.AddNode(exposedWidget);
                    borderPresenter = new WidgetBoundsPresenter(ColorTheme.Current.SceneView.ExposedItemInactiveBorder, 1);
                    frame.CompoundPresenter.Push(borderPresenter);
                    frame.Tasks.AddLoop(() => {
                        borderPresenter.Color = Document.Current.SelectedNodes().Contains(widget) ?
                                                ColorTheme.Current.SceneView.ExposedItemSelectedBorder :
                                                ColorTheme.Current.SceneView.ExposedItemInactiveBorder;
                        totalTime += Lime.Task.Current.Delta;
                        if (clickArea.IsMouseOver())
                        {
                            if (totalTime % 0.5f < 0.25f)
                            {
                                borderPresenter.Color = ColorTheme.Current.SceneView.ExposedItemActiveBorder;
                            }
                            label.Visible = true;
                            if (clickArea.Input.WasMousePressed())
                            {
                                if (!input.IsKeyPressed(MultiSelectKey))
                                {
                                    Core.Operations.ClearRowSelection.Perform();
                                    Core.Operations.SelectNode.Perform(widget);
                                    Closed = true;
                                }
                                else
                                {
                                    var isSelected = Document.Current.SelectedNodes().Contains(widget);
                                    Core.Operations.SelectNode.Perform(widget, !isSelected);
                                }
                            }
                        }
                        else
                        {
                            label.Visible = showLabel;
                        }
                    });
                }
Example #3
0
                public Item(Widget widget, Frame frame, WidgetInput input, bool showLabel)
                {
                    this.frame = frame;
                    var totalTime = 0d;

                    originalWidget = widget;
                    exposedWidget  = (Widget)widget.Clone();
                    exposedWidget.Animations.Clear();
                    originalTransform = (widget.LocalToWorldTransform * SceneView.Instance.CalcTransitionFromSceneSpace(frame)).ToTransform2();
                    originalWidget.SetTangerineFlag(TangerineFlags.HiddenOnExposition, true);
                    frame.HitTestTarget = true;
                    var clickArea = new Widget {
                        Size = frame.Size, Anchors = Anchors.LeftRightTopBottom, HitTestTarget = true
                    };

                    frame.AddNode(clickArea);
                    label = new ThemedSimpleText {
                        Visible      = showLabel,
                        Position     = new Vector2(3, 2),
                        Color        = ColorTheme.Current.SceneView.Label,
                        Text         = (exposedWidget.Id ?? ""),
                        OverflowMode = TextOverflowMode.Ignore
                    };
                    frame.AddNode(label);
                    frame.AddNode(exposedWidget);
                    borderPresenter = new WidgetBoundsPresenter(ColorTheme.Current.SceneView.ExposedItemInactiveBorder, 1);
                    frame.CompoundPresenter.Push(borderPresenter);
                    int lastFrame = 0;

                    foreach (var node in exposedWidget.Nodes)
                    {
                        foreach (var animator in node.Animators)
                        {
                            foreach (var key in animator.ReadonlyKeys)
                            {
                                lastFrame = Math.Max(lastFrame, key.Frame);
                            }
                        }
                    }
                    frame.Tasks.AddLoop(() => {
                        borderPresenter.Color = Document.Current.SelectedNodes().Contains(widget) ?
                                                ColorTheme.Current.SceneView.ExposedItemSelectedBorder :
                                                ColorTheme.Current.SceneView.ExposedItemInactiveBorder;
                        totalTime += Lime.Task.Current.Delta;
                        if (clickArea.IsMouseOver())
                        {
                            if (totalTime % 0.5f < 0.25f)
                            {
                                borderPresenter.Color = ColorTheme.Current.SceneView.ExposedItemActiveBorder;
                            }
                            label.Visible = true;
                            if (clickArea.Input.WasMousePressed())
                            {
                                if (!input.IsKeyPressed(MultiSelectKey))
                                {
                                    Document.Current.History.DoTransaction(() => {
                                        Core.Operations.ClearRowSelection.Perform();
                                        Core.Operations.SelectNode.Perform(widget);
                                    });
                                    Closed = true;
                                }
                                else
                                {
                                    var isSelected = Document.Current.SelectedNodes().Contains(widget);
                                    Document.Current.History.DoTransaction(() => {
                                        Core.Operations.SelectNode.Perform(widget, !isSelected);
                                    });
                                }
                            }
                        }
                        else
                        {
                            label.Visible = showLabel;
                        }
                        if (exposedWidget.DefaultAnimation.Frame <= lastFrame)
                        {
                            savedTime = totalTime;
                        }
                        if (totalTime - savedTime > 1)
                        {
                            exposedWidget.DefaultAnimation.Frame = 0;
                        }
                    });
                }