Exemplo n.º 1
0
    //
    // Inheritance Methods
    //

    protected override void OnComponentRegistrationFinished()
    {
        base.OnComponentRegistrationFinished();

        // Init UI elements
        zoomPanel     = FindObjectOfType <ZoomPanel>();
        backgrounds   = FindObjectOfType <BackgroundsComponent>();
        cellInspector = FindObjectOfType <CellInspector>();
        var centerTopContainerT = GameObject.Find("CenterTopContainer").transform;

        collapseToggleLeft  = centerTopContainerT.Find("ColapseToggleLeft").GetComponent <Toggle>();
        collapseToggleRight = centerTopContainerT.Find("ColapseToggleRight").GetComponent <Toggle>();
        collapseToggleDown  = centerTopContainerT.Find("ColapseToggleDown").GetComponent <Toggle>();
        footer      = centerTopContainerT.Find("Footer");
        legendPanel = footer.Find("LegendPanel").GetComponent <LegendPanel>();
        toolbox     = FindObjectOfType <Toolbox>();

        siblingIndex = transform.GetSiblingIndex();
    }
Exemplo n.º 2
0
        private static void BuildLegend(Type type, DataGrid grid, ResourceDictionary resources, Panel legend,
                                        string context)
        {
            if (legend == null)
            {
                return;
            }

            var labels = from p in type.GetProperties()
                         from StyleAttribute a in p.GetCustomAttributes(typeof(StyleAttribute), true)
                         where grid.Columns.Any(c => IsApplicable(c, a)) &&
                         (String.IsNullOrEmpty(a.Context) || context == a.Context)
                         orderby a.Description
                         let key                         = LegendKey(type, p)
                                               let style = resources[key] as Style
                                                           where style != null
                                                           select ConnectEdit(new Label {
                Style = style,
                Tag   = "generated" + grid.Name,
                Name  = a.GetName(p) + "LegendItem",
            });

            if (legend.Children.Count == 0)
            {
                var header = new StackPanel {
                    Orientation = Orientation.Horizontal
                };
                header.Children.Add(new Label {
                    Content           = "Подсказка",
                    Padding           = new Thickness(5, 0, 5, 0),
                    VerticalAlignment = VerticalAlignment.Center
                });
                var toggleButton = new ToggleButton {
                    Content     = "+",
                    ToolTip     = "Свернуть\\развернуть",
                    Padding     = new Thickness(5, 0, 5, 0),
                    Margin      = new Thickness(0),
                    Background  = Brushes.Transparent,
                    BorderBrush = Brushes.Transparent,
                    Focusable   = false,
                };
                header.Children.Add(toggleButton);
                legend.Children.Add(header);

                var stack = new LegendPanel();
                stack.BindTo <bool>("IsOverflow",
                                    toggleButton, ToggleButton.VisibilityProperty, x => x ? Visibility.Visible : Visibility.Collapsed);
                stack.BindTo <bool>("IsCollapsed",
                                    toggleButton, ToggleButton.ContentProperty, x => x ? "+" : "-");
                toggleButton.BindTo <bool?>("IsChecked",
                                            stack, LegendPanel.IsCollapsedProperty, x => !x.GetValueOrDefault());

                stack.Children.AddRange(labels);
                legend.Children.Add(stack);
            }
            else
            {
                //если пользовательские стили изменились нужно перестроить легенду
                var panel = legend.Children.OfType <LegendPanel>().First();
                panel.Children.OfType <FrameworkElement>().Where(c => Equals("generated" + grid.Name, c.Tag))
                .ToArray()
                .Each(c => panel.Children.Remove(c));
                panel.Children.AddRange(labels);
            }
        }