Exemplo n.º 1
0
            private void Init(string title)
            {
                this.StyleFont(FontStyle.Bold);
                this.StyleMinHeight(20);
                this.StyleBorderWidth(0, 0, 1, 0);
                Color borderColor = EditorGUIUtility.isProSkin ? new Color32(35, 35, 35, 255) : new Color32(153, 153, 153, 255);

                this.StyleBorderColor(borderColor);

                headerElement = new HorizontalLayout();
                headerElement.StyleHeight(21);
                headerElement.StyleMaxHeight(21);
                headerElement.StyleMinHeight(21);
                headerElement.StylePadding(4, 0, 0, 0);
                headerElement.StyleAlignItem(Align.Center);
                Color backgroundColor = EditorGUIUtility.isProSkin ? new Color32(80, 80, 80, 255) : new Color32(222, 222, 222, 255);

                headerElement.StyleBackgroundColor(backgroundColor);
                Color hoverBorderColor = new Color32(58, 121, 187, 255);

                headerElement.RegisterCallback <MouseEnterEvent>((evt) =>
                {
                    headerElement.StyleBorderWidth(1);
                    headerElement.StyleBorderColor(hoverBorderColor);
                });
                headerElement.RegisterCallback <MouseLeaveEvent>((evt) =>
                {
                    headerElement.StyleBorderWidth(0);
                    headerElement.StyleBorderColor(Color.clear);
                });
                base.Add(headerElement);

                contentElement = new VerticalLayout();
                contentElement.StyleDisplay(value);
                base.Add(contentElement);

                labelElement      = new Label();
                labelElement.text = title;
                headerElement.Add(labelElement);

                imageElement      = new Image();
                imageElement.name = nameof(imageElement);
                imageElement.StyleMargin(0, 4, 0, 0);
                imageElement.StyleSize(16, 16);
                headerElement.Add(imageElement);
                imageElement.SendToBack();
                imageElement.RegisterCallback <GeometryChangedEvent>((evt) =>
                {
                    imageElement.StyleDisplay(imageElement.image == null ? DisplayStyle.None : DisplayStyle.Flex);
                });

                foloutImage = new Image();
                foloutImage.StyleWidth(13);
                foloutImage.StyleMargin(0, 2, 0, 0);
                foloutImage.scaleMode = ScaleMode.ScaleToFit;
                foloutImage.image     = value ? onIcon : offIcon;
                if (!EditorGUIUtility.isProSkin)
                {
                    foloutImage.tintColor = Color.grey;
                }
                headerElement.Add(foloutImage);
                foloutImage.SendToBack();


                headerElement.RegisterCallback <MouseUpEvent>((evt) =>
                {
                    if (evt.button == 0)
                    {
                        Value = !Value;
                        evt.StopPropagation();
                    }
                });
            }